)]}'
{"monitoring/alarmdefs/views.py":[{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"696d551cee1650878f3d1ee892acc3973831fc53","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_data(self):"},{"line_number":40,"context_line":"        limit \u003d 10"},{"line_number":41,"context_line":"        page_offset\u003dself.request.GET.get(\u0027page_offset\u0027)"},{"line_number":42,"context_line":"        results \u003d []"},{"line_number":43,"context_line":"        if page_offset\u003d\u003dNone:"},{"line_number":44,"context_line":"            page_offset\u003d0"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_d93733e1","line":41,"updated":"2015-07-09 14:53:09.000000000","message":"need white space on equals","commit_id":"84bfd143559d68fd1b12ed65b21cb76e7a3732de"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return results"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def get_context_data(self, **kwargs):"},{"line_number":57,"context_line":"        context \u003d super(IndexView, self).get_context_data(**kwargs)"},{"line_number":58,"context_line":"        limit \u003d 10"},{"line_number":59,"context_line":"        contacts \u003d []"},{"line_number":60,"context_line":"        page_offset \u003d self.request.GET.get(\u0027page_offset\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_33166949","line":57,"updated":"2015-07-09 20:50:08.000000000","message":"Same questions here as the notification view","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"96154b2be1410dfa1924e250d224e60d9b3a2bc2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        try:"},{"line_number":46,"context_line":"            results \u003d api.monitor.alarmdef_list(self.request, page_offset, LIMIT)"},{"line_number":47,"context_line":"            paginator \u003d Paginator(results, LIMIT)"},{"line_number":48,"context_line":"            results \u003d paginator.page(1)"},{"line_number":49,"context_line":"        except EmptyPage:"},{"line_number":50,"context_line":"            contacts \u003d paginator.page(paginator.num_pages)"},{"line_number":51,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_a2ca219e","line":48,"updated":"2015-07-09 23:31:00.000000000","message":"If we\u0027re limiting via the API what is the Paginator object doing for us?","commit_id":"011bceb194619937d8642b98904daeb4c8fd4db0"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"96154b2be1410dfa1924e250d224e60d9b3a2bc2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        page_offset \u003d self.request.GET.get(\u0027page_offset\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        if page_offset \u003d\u003d None:"},{"line_number":62,"context_line":"            page_offset \u003d 0"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            results \u003d api.monitor.alarmdef_list(self.request, page_offset, LIMIT)"},{"line_number":65,"context_line":"            paginator \u003d Paginator(results, LIMIT)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_224e1138","line":62,"updated":"2015-07-09 23:31:00.000000000","message":"From this if down to the end of the try this function and get_data are very similar.  Can you do anything to remove the duplication here and in the rest of the views?","commit_id":"011bceb194619937d8642b98904daeb4c8fd4db0"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"96154b2be1410dfa1924e250d224e60d9b3a2bc2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            page_offset \u003d 0"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            results \u003d api.monitor.alarmdef_list(self.request, page_offset, LIMIT)"},{"line_number":65,"context_line":"            paginator \u003d Paginator(results, LIMIT)"},{"line_number":66,"context_line":"            contacts \u003d paginator.page(1)"},{"line_number":67,"context_line":"        except EmptyPage:"},{"line_number":68,"context_line":"            contacts \u003d paginator.page(paginator.num_pages)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_c2d16558","line":65,"updated":"2015-07-09 23:31:00.000000000","message":"If we\u0027re limiting via the API what is the Paginator object doing for us?","commit_id":"011bceb194619937d8642b98904daeb4c8fd4db0"}],"monitoring/alarms/templates/alarms/alarm.html":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"5870efc5931df6b5be5dd9ec9ce7de04c4521b01","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003cdiv class\u003d\"pagination\"\u003e"},{"line_number":26,"context_line":"    \u003cspan class\u003d\"step-links\"\u003e"},{"line_number":27,"context_line":"        {% if page_offset %}"},{"line_number":28,"context_line":"            \u003ca href\u003d\"?page_offset\u003d{{ page_offset}}\"\u003ePage Next\u003c/a\u003e"},{"line_number":29,"context_line":"        {% endif %}"},{"line_number":30,"context_line":"    \u003c/span\u003e"},{"line_number":31,"context_line":"\u003c/div\u003e"}],"source_content_type":"text/html","patch_set":6,"id":"ba3cc151_cc199e89","line":28,"updated":"2015-07-09 22:22:49.000000000","message":"Should be \"Next Page\"","commit_id":"347005e5a5bde03796708003afe931d989d532b5"}],"monitoring/alarms/templates/alarms/alarm_history.html":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"5870efc5931df6b5be5dd9ec9ce7de04c4521b01","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"{% block main %}"},{"line_number":25,"context_line":"    {{ table.render }}"},{"line_number":26,"context_line":"\u003cstyle\u003e"},{"line_number":27,"context_line":".status-icon {"},{"line_number":28,"context_line":"  vertical-align: top;"},{"line_number":29,"context_line":"  margin-right: 2px;"}],"source_content_type":"text/html","patch_set":6,"id":"ba3cc151_071bdf73","line":26,"updated":"2015-07-09 22:22:49.000000000","message":"This style section does nothing, as far as i can see","commit_id":"347005e5a5bde03796708003afe931d989d532b5"}],"monitoring/alarms/views.py":[{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            page_offset \u003d 0"},{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            results \u003d api.monitor.alarm_list(self.request, page_offset, limit)"},{"line_number":124,"context_line":"            results.sort(key\u003dlambda x: x[\u0027state\u0027])"},{"line_number":125,"context_line":"            paginator \u003d Paginator(results, limit)"},{"line_number":126,"context_line":"            contacts \u003d paginator.page(1)"},{"line_number":127,"context_line":"        except EmptyPage:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_936bb5b8","line":124,"updated":"2015-07-09 20:50:08.000000000","message":"This view is doing basically the same thing as the notification and alarmdefs views but it is sorting the results.  Do the other views need to sort somehow as well?","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"acb6247212e655b92f93c253ef0f47cbed193cb3","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        if page_offset \u003d\u003d None:"},{"line_number":121,"context_line":"            page_offset \u003d 0"},{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            results \u003d api.monitor.alarm_list(self.request, page_offset, LIMIT)"},{"line_number":124,"context_line":"            paginator \u003d Paginator(results, LIMIT)"},{"line_number":125,"context_line":"            contacts \u003d paginator.page(1)"},{"line_number":126,"context_line":"        except EmptyPage:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_67e42b0c","line":123,"updated":"2015-07-09 22:26:42.000000000","message":"Why did you remove the sorting?","commit_id":"347005e5a5bde03796708003afe931d989d532b5"}],"monitoring/api/monitor.py":[{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    return result[\u0027elements\u0027] if type(result) is dict else result"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def alarm_list_by_service(request, service_name, marker\u003dNone, paginate\u003dFalse):"},{"line_number":69,"context_line":"    service_dim \u003d {\u0027service\u0027: service_name}"},{"line_number":70,"context_line":"    result \u003d monascaclient(request).alarms.list(dimensions\u003dservice_dim)"},{"line_number":71,"context_line":"    return result[\u0027elements\u0027] if type(result) is dict else result"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d3837d54","line":68,"updated":"2015-07-09 20:50:08.000000000","message":"Does this need to paginate as well?","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"def alarmdef_list_by_service(request, service_name, marker\u003dNone, paginate\u003dFalse):"},{"line_number":97,"context_line":"    service_dim \u003d {\u0027service\u0027: service_name}"},{"line_number":98,"context_line":"    result \u003d monascaclient(request).alarm_definitions.list(dimensions\u003dservice_dim)"},{"line_number":99,"context_line":"    return result[\u0027elements\u0027] if type(result) is dict else result"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_b37cb971","line":97,"updated":"2015-07-09 20:50:08.000000000","message":"Does this need to paginate as well?","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"96154b2be1410dfa1924e250d224e60d9b3a2bc2","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def alarm_list_by_service(request, service_name, marker\u003dNone, paginate\u003dFalse):"},{"line_number":69,"context_line":"    service_dim \u003d {\u0027service\u0027: service_name}"},{"line_number":70,"context_line":"    result \u003d monascaclient(request).alarms.list(dimensions\u003dservice_dim)"},{"line_number":71,"context_line":"    return result[\u0027elements\u0027] if type(result) is dict else result"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_8007d61c","line":69,"updated":"2015-07-09 23:31:00.000000000","message":"Does this need an offset and limit?","commit_id":"011bceb194619937d8642b98904daeb4c8fd4db0"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"96154b2be1410dfa1924e250d224e60d9b3a2bc2","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"def alarmdef_list_by_service(request, service_name, marker\u003dNone, paginate\u003dFalse):"},{"line_number":97,"context_line":"    service_dim \u003d {\u0027service\u0027: service_name}"},{"line_number":98,"context_line":"    result \u003d monascaclient(request).alarm_definitions.list(dimensions\u003dservice_dim)"},{"line_number":99,"context_line":"    return result[\u0027elements\u0027] if type(result) is dict else result"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba3cc151_c014fe4e","line":98,"updated":"2015-07-09 23:31:00.000000000","message":"Does this need an offset and limit?","commit_id":"011bceb194619937d8642b98904daeb4c8fd4db0"}],"monitoring/notifications/views.py":[{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        return super(IndexView, self).dispatch(*args, **kwargs)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def get_data(self):"},{"line_number":45,"context_line":"        limit \u003d 10"},{"line_number":46,"context_line":"        page_offset\u003dself.request.GET.get(\u0027page_offset\u0027)"},{"line_number":47,"context_line":"        results \u003d []"},{"line_number":48,"context_line":"        if page_offset \u003d\u003d None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_a041c164","line":45,"updated":"2015-07-09 20:50:08.000000000","message":"We have limit defined in a number of places.  We should extract that to a constant so we can update one location when we want to change it.","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def get_data(self):"},{"line_number":45,"context_line":"        limit \u003d 10"},{"line_number":46,"context_line":"        page_offset\u003dself.request.GET.get(\u0027page_offset\u0027)"},{"line_number":47,"context_line":"        results \u003d []"},{"line_number":48,"context_line":"        if page_offset \u003d\u003d None:"},{"line_number":49,"context_line":"            page_offset \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_e0190989","line":46,"updated":"2015-07-09 20:50:08.000000000","message":"What is the difference here between get_data and get_context_data?  Should they both be using the same function to go to the API and retrieve data?","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"8b9e84a72041cff4450dc48c0d86a144ceccb85a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        except EmptyPage:"},{"line_number":74,"context_line":"            contacts \u003d paginator.page(paginator.num_pages)"},{"line_number":75,"context_line":"        except Exception:"},{"line_number":76,"context_line":"            messages.error(self.request, _(\"Could not retrieve alarms\"))"},{"line_number":77,"context_line":"            return context"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        context[\"contacts\"] \u003d contacts"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_c012c560","line":76,"updated":"2015-07-09 20:50:08.000000000","message":"Is \"alarms\" correct here?","commit_id":"09107b93d14368b5b986e5f687fcd8249026a1bc"}]}
