Not all of your results.items()[i][1] have a 'created'. Some only 
have {'yymm_count': 1}. Try

    results = {}
    for row in set:
        label = str(row.created_on.strftime('%b-%y'))   #works but screw up 
ordering
        try:
            results[label] = {'yymm_count': results[label]['yymm_count'] + 
1, 'created': row.created_on}
        except KeyError, e:
            results[label] = {'yymm_count': 1, 'created':row.created_on} # 
<<< changed!
            
    # jump thru hopops to sort the dict
   * sortedresults = collections.OrderedDict(sorted(results.items(), 
key=lambda x: x[1]['created']))*


On Monday, 1 October 2012 08:08:25 UTC-5, david.waldrop wrote:
>
> I have a very weird issue I cannot resolve regarding sorting a dictionary 
> based on a DAL query.  The code below runs as expected on my dev box, but 
> emits an error when i push to production (both environments are running the 
> same version of web2py 2.0.0 and python v2.7.3.
>
> ...
>     results = {}
>     for row in set:
>         label = str(row.created_on.strftime('%b-%y'))   #works but screw 
> up ordering
>         try:
>             results[label] = {'yymm_count': results[label]['yymm_count'] + 
> 1, 'created': row.created_on}
>         except KeyError, e:
>             results[label] = {'yymm_count': 1}
>             
>     # jump thru hopops to sort the dict
>    * sortedresults = collections.OrderedDict(sorted(results.items(), 
> key=lambda x: x[1]['created']))*
>
>     return results
>
>
> The error is in the sortedresults line.  I am trying to sort the results 
> dict by the actual time and preserve a user friendly label as the key (i.e 
> "Jan-12").  The ordering is needed because this is being displayed in a bar 
> chart.  Note the results dict is being built correctly AND contains the 
> created filed.  To repeat this works on the dev box using sqllitre, the 
> prod env uses postgress - could this affect pure python?   
>
> On production I get a key error as follows:
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
> 14.
>
> Traceback (most recent call last):
>   File "/home/dlwatey/webapps/web2py/web2py/gluon/restricted.py", line 205, 
> in restricted
>     exec ccode in environment
>   File 
> "/home/dlwatey/webapps/web2py/web2py/applications/COPSIS/controllers/metrics.py"
>  
> <https://www.meetingmonkey.net/admin/default/edit/COPSIS/controllers/metrics.py>,
>  line 130, in <module>
>   File "/home/dlwatey/webapps/web2py/web2py/gluon/globals.py", line 175, in 
> <lambda>
>     self._caller = lambda f: f()
>   File 
> "/home/dlwatey/webapps/web2py/web2py/applications/COPSIS/controllers/metrics.py"
>  
> <https://www.meetingmonkey.net/admin/default/edit/COPSIS/controllers/metrics.py>,
>  line 68, in data
>     response_components["activity"] = data_logsbymonth()
>   File 
> "/home/dlwatey/webapps/web2py/web2py/applications/COPSIS/controllers/metrics.py"
>  
> <https://www.meetingmonkey.net/admin/default/edit/COPSIS/controllers/metrics.py>,
>  line 126, in data_logsbymonth
>     sortedresults = collections.OrderedDict(sorted(results.items(), 
> key=lambda x: x[1]['created']))
>   File 
> "/home/dlwatey/webapps/web2py/web2py/applications/COPSIS/controllers/metrics.py"
>  
> <https://www.meetingmonkey.net/admin/default/edit/COPSIS/controllers/metrics.py>,
>  line 126, in <lambda>
>     sortedresults = collections.OrderedDict(sorted(results.items(), 
> key=lambda x: x[1]['created']))
> KeyError: 'created'
>
>
> Any one have any ideas?
>
>
>

-- 



Reply via email to