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