)]}'
{"horizon/api/quantum.py":[{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":120,"context_line":"              % (tenant_id, params))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    # If a user has admin role, network list returned by Quantum API"},{"line_number":123,"context_line":"    # contains networks that does not belong to that tenant."},{"line_number":124,"context_line":"    # So we need to specify tenant_id when calling network_list()."},{"line_number":125,"context_line":"    networks \u003d network_list(request, tenant_id\u003dtenant_id,"},{"line_number":126,"context_line":"                            shared\u003dFalse, **params)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fo9o%3D","line":123,"updated":"2012-08-23 19:45:56.000000000","message":"grammar: \"that *do* not\"","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"},{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    networks \u003d network_list(request, tenant_id\u003dtenant_id,"},{"line_number":126,"context_line":"                            shared\u003dFalse, **params)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    # In the current Quantum API, there are no way to retrieve"},{"line_number":129,"context_line":"    # both owner networks and public networks in a single API call."},{"line_number":130,"context_line":"    networks +\u003d network_list(request, shared\u003dTrue, **params)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fo9k%3D","line":128,"updated":"2012-08-23 19:45:56.000000000","message":"grammar: \"there *is* no way\"","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"}],"horizon/dashboards/nova/networks/subnets/tables.py":[{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                               args\u003d[network_id])"},{"line_number":43,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def allowed(self, request, datum\u003dNone):"},{"line_number":46,"context_line":"        network \u003d self.table._get_network()"},{"line_number":47,"context_line":"        if network.shared:"},{"line_number":48,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fo9g%3D","line":45,"updated":"2012-08-23 19:45:56.000000000","message":"It seems like this could be abstracted out to a mixin class since it\u0027s used identically multiple times.","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d0baed2979698e4ca8513c31ade743eb4afd4586","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                               args\u003d[network_id])"},{"line_number":43,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def allowed(self, request, datum\u003dNone):"},{"line_number":46,"context_line":"        network \u003d self.table._get_network()"},{"line_number":47,"context_line":"        if network.shared:"},{"line_number":48,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FojY%3D","line":45,"in_reply_to":"AAAALH%2F%2Fo9g%3D","updated":"2012-08-24 12:42:52.000000000","message":"One question about using a mixin class.\nI tried to use a mixin class first.\n\nSince allowed() is defined in horizon.tables.BaseAction, we need to put a mixin classes first in a class definition like class DeleteSubnet(SomeMixin, tables.DeleteAction).\nI would like to know such definitions are acceptable in Horizon code.\nIMO, mixin classes are usually placed after a base class and I am afraid it does not follow the convention (in Horizon).","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"}],"horizon/dashboards/nova/networks/tables.py":[{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def format_shared(network):"},{"line_number":96,"context_line":"    return \"Yes\" if network.shared else \"No\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"class NetworksTable(tables.DataTable):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fo9U%3D","line":96,"updated":"2012-08-23 19:45:56.000000000","message":"Django\u0027s \"yesno\" filter does this. You can import it from django.template.defaultfilters.","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d0baed2979698e4ca8513c31ade743eb4afd4586","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def format_shared(network):"},{"line_number":96,"context_line":"    return \"Yes\" if network.shared else \"No\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"class NetworksTable(tables.DataTable):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FojU%3D","line":96,"in_reply_to":"AAAALH%2F%2Fo9U%3D","updated":"2012-08-24 12:42:52.000000000","message":"Removed.","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"},{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                         link\u003d\u0027horizon:nova:networks:detail\u0027)"},{"line_number":103,"context_line":"    subnets \u003d tables.Column(get_subnets,"},{"line_number":104,"context_line":"                            verbose_name\u003d_(\"Subnets Associated\"),)"},{"line_number":105,"context_line":"    shared \u003d tables.Column(format_shared, verbose_name\u003d_(\"Shared\"))"},{"line_number":106,"context_line":"    status \u003d tables.Column(\"status\", verbose_name\u003d_(\"Status\"))"},{"line_number":107,"context_line":"    admin_state \u003d tables.Column(\"admin_state\","},{"line_number":108,"context_line":"                                verbose_name\u003d_(\"Admin State\"))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fo9M%3D","line":105,"updated":"2012-08-23 19:45:56.000000000","message":"It\u0027s better to apply formatters using the \"filters\" keyword argument:\n\n    filters\u003d(yesno,)","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d0baed2979698e4ca8513c31ade743eb4afd4586","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                         link\u003d\u0027horizon:nova:networks:detail\u0027)"},{"line_number":103,"context_line":"    subnets \u003d tables.Column(get_subnets,"},{"line_number":104,"context_line":"                            verbose_name\u003d_(\"Subnets Associated\"),)"},{"line_number":105,"context_line":"    shared \u003d tables.Column(format_shared, verbose_name\u003d_(\"Shared\"))"},{"line_number":106,"context_line":"    status \u003d tables.Column(\"status\", verbose_name\u003d_(\"Status\"))"},{"line_number":107,"context_line":"    admin_state \u003d tables.Column(\"admin_state\","},{"line_number":108,"context_line":"                                verbose_name\u003d_(\"Admin State\"))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FojQ%3D","line":105,"in_reply_to":"AAAALH%2F%2Fo9M%3D","updated":"2012-08-24 12:42:52.000000000","message":"Done. I added \u0027filters\u003d(yesno, capfirst)","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"}],"horizon/dashboards/nova/networks/templates/networks/_detail_overview.html":[{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    \u003cdt\u003e{% trans \"Admin State\" %}\u003c/dt\u003e"},{"line_number":16,"context_line":"    \u003cdd\u003e{{ network.admin_state|default:\"Unknown\" }}\u003c/dd\u003e"},{"line_number":17,"context_line":"    \u003cdt\u003e{% trans \"Shared\" %}\u003c/dt\u003e"},{"line_number":18,"context_line":"    \u003cdd\u003e{% if network.shared %}Yes{% else %}No{% endif %}\u003c/dd\u003e"},{"line_number":19,"context_line":"  \u003c/dl\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"AAAALH%2F%2Fo98%3D","line":18,"updated":"2012-08-23 19:45:56.000000000","message":"Django\u0027s \"yesno\" filter does exactly this.","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"}],"horizon/dashboards/syspanel/networks/tables.py":[{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"a5eb3a3e7186c219b109f88e7d31c54a085f6982","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                         link\u003d\u0027horizon:syspanel:networks:detail\u0027)"},{"line_number":69,"context_line":"    subnets \u003d tables.Column(get_subnets,"},{"line_number":70,"context_line":"                            verbose_name\u003d_(\"Subnets Associated\"),)"},{"line_number":71,"context_line":"    shared \u003d tables.Column(\"shared\", verbose_name\u003d_(\"Shared\"))"},{"line_number":72,"context_line":"    status \u003d tables.Column(\"status\", verbose_name\u003d_(\"Status\"))"},{"line_number":73,"context_line":"    admin_state \u003d tables.Column(\"admin_state\","},{"line_number":74,"context_line":"                                verbose_name\u003d_(\"Admin State\"))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fo9E%3D","line":71,"updated":"2012-08-23 19:45:56.000000000","message":"Do you want to apply the \"yesno\" filter here as well for consistency?","commit_id":"bb95aa318c1574aa4bee67f5041c8b4aeb6e2ed8"}]}
