)]}'
{"openstack_dashboard/api/nova.py":[{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"aab7bbafc3c3e66a8699cbd93eddc5ab2e31df6b","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    if paginate and len(servers) \u003e page_size:"},{"line_number":385,"context_line":"        servers.pop(-1)"},{"line_number":386,"context_line":"        has_more_data \u003d True"},{"line_number":387,"context_line":"    elif paginate and len(servers) \u003d\u003d getattr(settings, \u0027API_RESULT_LIMIT\u0027,"},{"line_number":388,"context_line":"                                              1000):"},{"line_number":389,"context_line":"        has_more_data \u003d True"},{"line_number":390,"context_line":"    return (servers, has_more_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXc8%3D","line":387,"updated":"2013-05-13 14:37:46.000000000","message":"The paginate check here seems unnecessary.  Is there ever a case where the user would hit the API limit and not want to be able to see the rest of the data?\n\nGood catch on the API limit.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"a35a3e8c9190d3dc52ba913748ab12b74e94b134","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    if paginate and len(servers) \u003e page_size:"},{"line_number":385,"context_line":"        servers.pop(-1)"},{"line_number":386,"context_line":"        has_more_data \u003d True"},{"line_number":387,"context_line":"    elif paginate and len(servers) \u003d\u003d getattr(settings, \u0027API_RESULT_LIMIT\u0027,"},{"line_number":388,"context_line":"                                              1000):"},{"line_number":389,"context_line":"        has_more_data \u003d True"},{"line_number":390,"context_line":"    return (servers, has_more_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXMY%3D","line":387,"in_reply_to":"AAAAOn%2F%2FXNM%3D","updated":"2013-05-13 16:03:57.000000000","message":"Nevermind, too early, Horizon specified value.  duh.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"3937920d81d73229f714d8e14c973f22fb9702a2","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    if paginate and len(servers) \u003e page_size:"},{"line_number":385,"context_line":"        servers.pop(-1)"},{"line_number":386,"context_line":"        has_more_data \u003d True"},{"line_number":387,"context_line":"    elif paginate and len(servers) \u003d\u003d getattr(settings, \u0027API_RESULT_LIMIT\u0027,"},{"line_number":388,"context_line":"                                              1000):"},{"line_number":389,"context_line":"        has_more_data \u003d True"},{"line_number":390,"context_line":"    return (servers, has_more_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXNM%3D","line":387,"in_reply_to":"AAAAOn%2F%2FXPw%3D","updated":"2013-05-13 15:59:37.000000000","message":"That should likely be a blueprint though to handle throughout Horizon.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"4e55931e76ce365402e5ff4afae6d8dc8cd13419","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    if paginate and len(servers) \u003e page_size:"},{"line_number":385,"context_line":"        servers.pop(-1)"},{"line_number":386,"context_line":"        has_more_data \u003d True"},{"line_number":387,"context_line":"    elif paginate and len(servers) \u003d\u003d getattr(settings, \u0027API_RESULT_LIMIT\u0027,"},{"line_number":388,"context_line":"                                              1000):"},{"line_number":389,"context_line":"        has_more_data \u003d True"},{"line_number":390,"context_line":"    return (servers, has_more_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXPw%3D","line":387,"in_reply_to":"AAAAOn%2F%2FXW4%3D","updated":"2013-05-13 15:58:01.000000000","message":"You\u0027re right.  I forgot the +1 to page_size and the more obvious problem that when we are not paginating then this in not for a table view.\n\nThat said, if we hit the API limit and a call is being made to correlate data from several calls using this data, we have a hard limit on API limit # instances before Horizon fails to effectively correlate data.  Should we instead be making multiple calls until we retrieve the exhaustive list?  Not sure what a safe upper-bound is in that case.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"d94e4d0ab785fd57012a0f7d9001d70116b298e6","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    if paginate and len(servers) \u003e page_size:"},{"line_number":385,"context_line":"        servers.pop(-1)"},{"line_number":386,"context_line":"        has_more_data \u003d True"},{"line_number":387,"context_line":"    elif paginate and len(servers) \u003d\u003d getattr(settings, \u0027API_RESULT_LIMIT\u0027,"},{"line_number":388,"context_line":"                                              1000):"},{"line_number":389,"context_line":"        has_more_data \u003d True"},{"line_number":390,"context_line":"    return (servers, has_more_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXW4%3D","line":387,"in_reply_to":"AAAAOn%2F%2FXc8%3D","updated":"2013-05-13 15:12:15.000000000","message":"Smacking into the API_RESULT_LIMIT is the original cause of this bug; if there are more rows available, Horizon was originally totally blind to them.\n\nBut the value of paginate is user-supplied via search_opts.  The \"Principle of Least Surprise\" would dictate that if someone has requested that the software perform no pagination, they should not get paginated results back.  Even if it\u0027s kind of a bad idea.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"}],"openstack_dashboard/dashboards/settings/user/forms.py":[{"author":{"_account_id":2455,"name":"Tihomir Trifonov","email":"t.trifonov@gmail.com","username":"ttrifonov"},"change_message_id":"7874fa1abd1d25c6a7bb50e1aaeb1aa988242e3b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class UserSettingsForm(forms.SelfHandlingForm):"},{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FfHs%3D","line":31,"updated":"2013-05-08 06:51:10.000000000","message":"For simplicity we usually use \n\n    from django.utils.translation import ugettext as _\n\nand then\n\n    label\u003d_(\"Items per Page\")\n\nBtw, why \"Page\" is upper case here?","commit_id":"507c527aed1d368851e77f7301bdbd71075fbd52"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"718c6e76a5c4105c9c32cfdf9dbb88d1dcfdf91a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class UserSettingsForm(forms.SelfHandlingForm):"},{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2Fe8g%3D","line":31,"in_reply_to":"AAAAOn%2F%2FfHs%3D","updated":"2013-05-08 08:58:29.000000000","message":"Yes, but this file already imports translation and refers to ugettext() in the \"long form\", so I was just trying to follow precedent.\n\nIf you\u0027re OK with scope creep, I can update this and the other ugettext() call to the \"short form\".  Otherwise they can be left as-is.\n\n...and \"Page\" is capitalized because I thought it looked better that way.  Will fix.","commit_id":"507c527aed1d368851e77f7301bdbd71075fbd52"},{"author":{"_account_id":2455,"name":"Tihomir Trifonov","email":"t.trifonov@gmail.com","username":"ttrifonov"},"change_message_id":"7874fa1abd1d25c6a7bb50e1aaeb1aa988242e3b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        request.session[\u0027django_timezone\u0027] \u003d pytz.timezone("},{"line_number":78,"context_line":"            data[\u0027timezone\u0027]).zone"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        request.session[\u0027horizon_pagesize\u0027] \u003d data[\u0027pagesize\u0027]"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        messages.success(request, translation.ugettext(\"Settings saved.\"))"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FfG4%3D","line":80,"updated":"2013-05-08 06:51:10.000000000","message":"Storing the pagesize preference in a session cookie is not so good idea for persisting the user\u0027s choice. After logout/login - the session cookie will be lost, so the preference. A standalone cookie with max_age\u003d2y for example would be a better choice here.","commit_id":"507c527aed1d368851e77f7301bdbd71075fbd52"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"718c6e76a5c4105c9c32cfdf9dbb88d1dcfdf91a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        request.session[\u0027django_timezone\u0027] \u003d pytz.timezone("},{"line_number":78,"context_line":"            data[\u0027timezone\u0027]).zone"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        request.session[\u0027horizon_pagesize\u0027] \u003d data[\u0027pagesize\u0027]"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        messages.success(request, translation.ugettext(\"Settings saved.\"))"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2Fe8A%3D","line":80,"in_reply_to":"AAAAOn%2F%2FfG4%3D","updated":"2013-05-08 08:58:29.000000000","message":"All of the preferences on this page are session-only, so again, I was just trying to follow precedent.\n\nI would think that things like language and timezone settings would be very good to persist across sessions, and they\u0027re not, so why should pagination be any different?  If that\u0027s a bug, I can widen the scope of this patch to persist those values, too.","commit_id":"507c527aed1d368851e77f7301bdbd71075fbd52"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"aab7bbafc3c3e66a8699cbd93eddc5ab2e31df6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items Per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"},{"line_number":35,"context_line":"                                                    1000),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXc4%3D","line":32,"updated":"2013-05-13 14:37:46.000000000","message":"indentation is one off","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"d134e5a34ffc816adbdb19c2899e293e91f21c28","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items Per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"},{"line_number":35,"context_line":"                                                    1000),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FV5M%3D","line":32,"in_reply_to":"AAAAOn%2F%2FXJA%3D","updated":"2013-05-14 05:50:51.000000000","message":"The indentation is correct. The problem is gerrit not rendering it correctly that it seems like it is off by a space.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"1213145273bab1a3fece3b8888d06cec25b5b8be","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items Per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"},{"line_number":35,"context_line":"                                                    1000),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXJA%3D","line":32,"in_reply_to":"AAAAOn%2F%2FXOM%3D","updated":"2013-05-13 17:18:22.000000000","message":"I do not understand.  This indentation matches exactly the style used below (on line 44-45) and is valid PEP8.  Backing it up one char would, in fact, cause this change to fail the PEP8 tests (or it would, if tox weren\u0027t expressly configured to ignore indent errors)\n\nWhat exactly are you asking me to do here?","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"4e55931e76ce365402e5ff4afae6d8dc8cd13419","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items Per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"},{"line_number":35,"context_line":"                                                    1000),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXOM%3D","line":32,"in_reply_to":"AAAAOn%2F%2FXX0%3D","updated":"2013-05-13 15:58:01.000000000","message":"every example I see in that link would have min +1 to the right.  Doing so would also match other cases in this file and the code throughout Horizon.","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"},{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"d94e4d0ab785fd57012a0f7d9001d70116b298e6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    language \u003d forms.ChoiceField()"},{"line_number":30,"context_line":"    timezone \u003d forms.ChoiceField()"},{"line_number":31,"context_line":"    pagesize \u003d forms.IntegerField(label\u003dtranslation.ugettext(\"Items Per Page\"),"},{"line_number":32,"context_line":"                                  min_value\u003d1,"},{"line_number":33,"context_line":"                                  max_value\u003dgetattr(settings,"},{"line_number":34,"context_line":"                                                    \u0027API_RESULT_LIMIT\u0027,"},{"line_number":35,"context_line":"                                                    1000),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXX0%3D","line":32,"in_reply_to":"AAAAOn%2F%2FXc4%3D","updated":"2013-05-13 15:12:15.000000000","message":"The indentation is aligned with the opening delimiter, as per PEP8:\n\nhttp://www.python.org/dev/peps/pep-0008/","commit_id":"9172a7ba0b150042d286702e1c339f3a6b6c7793"}]}
