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?
--