)]}'
{"horizon/base.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be72ff05a708e1716a6e1798bf6667d389e929bd","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"    def _process_details_configuration(self, config):"},{"line_number":1035,"context_line":"        \"\"\"Add details view.\"\"\""},{"line_number":1036,"context_line":"        try:"},{"line_number":1037,"context_line":"            details, dashboard, panel \u003d config.get(\u0027ADD_DETAILS\u0027)"},{"line_number":1038,"context_line":"            self.details[details] \u003d {\u0027dashboard\u0027: dashboard,"},{"line_number":1039,"context_line":"                                     \u0027panel\u0027: panel}"},{"line_number":1040,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_f07c3584","line":1037,"range":{"start_line":1037,"start_character":52,"end_line":1037,"end_character":63},"updated":"2017-07-04 18:12:44.000000000","message":"This name is a bit general. \"Detail\" is used in various context. At least \"ADD_DETAIL_PAGES\" looks better to me.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"e0827b85d1535431111e3ed11c2ae3af1f20bbfd","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"    def _process_details_configuration(self, config):"},{"line_number":1035,"context_line":"        \"\"\"Add details view.\"\"\""},{"line_number":1036,"context_line":"        try:"},{"line_number":1037,"context_line":"            details, dashboard, panel \u003d config.get(\u0027ADD_DETAILS\u0027)"},{"line_number":1038,"context_line":"            self.details[details] \u003d {\u0027dashboard\u0027: dashboard,"},{"line_number":1039,"context_line":"                                     \u0027panel\u0027: panel}"},{"line_number":1040,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_6c8de6d1","line":1037,"range":{"start_line":1037,"start_character":52,"end_line":1037,"end_character":63},"in_reply_to":"3f1d235d_f07c3584","updated":"2017-07-06 06:38:32.000000000","message":"Done","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"}],"horizon/browsers/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4a402237a917e5e644bf63865c92c0ca31a825a2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_e7afd87a","line":89,"updated":"2017-06-26 09:00:49.000000000","message":"Can\u0027y you define this to openstack_dashboard/dashboards/project/ngdetails/view.py ?","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a2d24c0c36f9024a83bf1ce2e9a94cc0dddc8bd6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_1239eff0","line":89,"in_reply_to":"5f201791_a2a42ea7","updated":"2017-06-26 12:40:21.000000000","message":"See my comment on horizon/ngdetails/urls.py","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"03a7890e9fe9c548405b2fad6a7ff7ed4c078f7f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_a2a42ea7","line":89,"in_reply_to":"5f201791_e7afd87a","updated":"2017-06-26 09:29:16.000000000","message":"ngdetails had been moved from \u0027project\u0027 side by Cindy.\nhttps://review.openstack.org/#/c/396800/\nAnd AngularIndexView is on above of this. So I think this should be horizon side.","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be72ff05a708e1716a6e1798bf6667d389e929bd","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            context[\"page_title\"] \u003d self.page_title"},{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_b5ec6f8f","line":88,"updated":"2017-07-04 18:12:44.000000000","message":"I think it is better to move this to ngdetail/view.py. you created ngdetail directory.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"e0827b85d1535431111e3ed11c2ae3af1f20bbfd","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            context[\"page_title\"] \u003d self.page_title"},{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_f59d120a","line":88,"in_reply_to":"3f1d235d_b5ec6f8f","updated":"2017-07-06 06:38:32.000000000","message":"Agree, but it\u0027s better to consider with other Angular staff like AngularIndexView and , IMO. Also, AngularIndexView is already used by some panels and this patch concentrate bug fix. So I\u0027d like to do that later.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be72ff05a708e1716a6e1798bf6667d389e929bd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_5574fbfd","line":89,"range":{"start_line":89,"start_character":25,"end_line":89,"end_character":41},"updated":"2017-07-04 18:12:44.000000000","message":"Why do you inherit AngularIndexView?\nThe index page and detail page are usually different, so inheriting the index view looks tricky at a glance. If there is a specific reason, it is better to add a comment on this.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"e0827b85d1535431111e3ed11c2ae3af1f20bbfd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return context"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class AngularDetailsView(AngularIndexView):"},{"line_number":90,"context_line":"    \u0027\u0027\u0027View for Angularized details view\u0027\u0027\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_a772f779","line":89,"range":{"start_line":89,"start_character":25,"end_line":89,"end_character":41},"in_reply_to":"3f1d235d_5574fbfd","updated":"2017-07-06 06:38:32.000000000","message":"Done","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be72ff05a708e1716a6e1798bf6667d389e929bd","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"},{"line_number":93,"context_line":"        context \u003d super(AngularDetailsView, self).get_context_data(**kwargs)"},{"line_number":94,"context_line":"        dashbaord, panel \u003d horizon.get_details_path("},{"line_number":95,"context_line":"            self.kwargs[\u0027resource_type\u0027])"},{"line_number":96,"context_line":"        self.request.horizon[\u0027dashboard\u0027] \u003d dashbaord"},{"line_number":97,"context_line":"        self.request.horizon[\u0027panel\u0027] \u003d panel"},{"line_number":98,"context_line":"        return context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_15c9e324","line":97,"range":{"start_line":94,"start_character":8,"end_line":97,"end_character":45},"updated":"2017-07-04 18:12:44.000000000","message":"hmm.... it does not touch context at all. Are you using get_context_data just a hook to populate these into the request context? I wonder this is the right usage or not.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"e0827b85d1535431111e3ed11c2ae3af1f20bbfd","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_context_data(self, **kwargs):"},{"line_number":93,"context_line":"        context \u003d super(AngularDetailsView, self).get_context_data(**kwargs)"},{"line_number":94,"context_line":"        dashbaord, panel \u003d horizon.get_details_path("},{"line_number":95,"context_line":"            self.kwargs[\u0027resource_type\u0027])"},{"line_number":96,"context_line":"        self.request.horizon[\u0027dashboard\u0027] \u003d dashbaord"},{"line_number":97,"context_line":"        self.request.horizon[\u0027panel\u0027] \u003d panel"},{"line_number":98,"context_line":"        return context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_d56e96fe","line":97,"range":{"start_line":94,"start_character":8,"end_line":97,"end_character":45},"in_reply_to":"3f1d235d_15c9e324","updated":"2017-07-06 06:38:32.000000000","message":"Yes. To set dashboard and panel into request context, I use it. BTW, I found typo on this. Done.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"}],"horizon/ngdetails/urls.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4a402237a917e5e644bf63865c92c0ca31a825a2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from django.conf.urls import url"},{"line_number":14,"context_line":"from horizon.browsers import views"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"urlpatterns \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_0791b44e","line":13,"updated":"2017-06-26 09:00:49.000000000","message":"blank line here","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"03a7890e9fe9c548405b2fad6a7ff7ed4c078f7f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from django.conf.urls import url"},{"line_number":14,"context_line":"from horizon.browsers import views"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"urlpatterns \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_c20baa21","line":13,"in_reply_to":"5f201791_0791b44e","updated":"2017-06-26 09:29:16.000000000","message":"Done","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4a402237a917e5e644bf63865c92c0ca31a825a2","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"urlpatterns \u003d ["},{"line_number":17,"context_line":"    url(r\u0027^ngdetails/(?P\u003cresource_type\u003e[^/]+)/(?P\u003cresource_id\u003e[^/]+)\u0027,"},{"line_number":18,"context_line":"        views.AngularDetailsView.as_view(), name\u003d\u0027ngdetails\u0027),"},{"line_number":19,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_a796804b","line":18,"updated":"2017-06-26 09:00:49.000000000","message":"\u0027ngdetails\u0027 url is defined in openstack_dashboard side, so it sounds odd to define this in horizon side.","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"03a7890e9fe9c548405b2fad6a7ff7ed4c078f7f","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"urlpatterns \u003d ["},{"line_number":17,"context_line":"    url(r\u0027^ngdetails/(?P\u003cresource_type\u003e[^/]+)/(?P\u003cresource_id\u003e[^/]+)\u0027,"},{"line_number":18,"context_line":"        views.AngularDetailsView.as_view(), name\u003d\u0027ngdetails\u0027),"},{"line_number":19,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_e2b34609","line":18,"in_reply_to":"5f201791_a796804b","updated":"2017-06-26 09:29:16.000000000","message":"ngdetails had been moved from \u0027project\u0027 side by Cindy.\nhttps://review.openstack.org/#/c/396800/\nSo I wonder why the url for ngdetails remains openstack_dashboard side.","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"9c58ca7f948fe8671e726c7aaf7fe657ff01b5e3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"urlpatterns \u003d ["},{"line_number":17,"context_line":"    url(r\u0027^ngdetails/(?P\u003cresource_type\u003e[^/]+)/(?P\u003cresource_id\u003e[^/]+)\u0027,"},{"line_number":18,"context_line":"        views.AngularDetailsView.as_view(), name\u003d\u0027ngdetails\u0027),"},{"line_number":19,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_abc4ebf5","line":18,"in_reply_to":"5f201791_d2613707","updated":"2017-06-27 06:05:06.000000000","message":"I\u0027m sorry for some misunderstandings. I confirmed again that Cindy\u0027s patch has only removed \u0027project\u0027 from URL path. URL for ngdetails is defined in openstack_dashboard side. It means horizon.app.core.detailRoute on openstack_dashboard/static/app/core/core-constants.module.js.\n\nWe have already lots of Angular stuff in horizon/static/framework/ , so we should move it into horizon side. But it\u0027s not in scope of this patch for bugfix, and the migration will causes severe impact for plugins have details view. So we should move it in subsequent patch, IMO.\n\nIf the URL you mean is \u0027openstack_dashboard/dashboards/project/ngdetails/\u0027 module,  they don\u0027t seems to be used by anything. So I uploaded new patch to remove them as follow.\nhttps://review.openstack.org/#/c/477744/","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a2d24c0c36f9024a83bf1ce2e9a94cc0dddc8bd6","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"urlpatterns \u003d ["},{"line_number":17,"context_line":"    url(r\u0027^ngdetails/(?P\u003cresource_type\u003e[^/]+)/(?P\u003cresource_id\u003e[^/]+)\u0027,"},{"line_number":18,"context_line":"        views.AngularDetailsView.as_view(), name\u003d\u0027ngdetails\u0027),"},{"line_number":19,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_d2613707","line":18,"in_reply_to":"5f201791_e2b34609","updated":"2017-06-26 12:40:21.000000000","message":"We have nothing related to ngdetail under horizon/. If you want to have this in horizon side, you should move all related things to horizon. Otherwise, it looks inconsistent. That is my point.\n\nIt looks super tricky to me if we define \u0027ngdetail\u0027 in openstack_dashboard and ngdetail/\u003cresource_type\u003e/\u003cresource_id\u003e is defined in horizon.\n\nIn addition, I am not sure \u0027horizon\u0027 should provide Angular stuff. we have two layers of frameworks: horizon framework and openstack_dashboard plugin framework. I think we don\u0027t have Angular stuff in horizon/ so far.","commit_id":"e71e0ded9a9af332f20d1aafba61f70ea11dfd96"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be72ff05a708e1716a6e1798bf6667d389e929bd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"urlpatterns \u003d ["},{"line_number":18,"context_line":"    url(r\u0027^ngdetails/(?P\u003cresource_type\u003e[^/]+)/(?P\u003cresource_id\u003e[^/]+)\u0027,"},{"line_number":19,"context_line":"        views.AngularDetailsView.as_view(), name\u003d\u0027ngdetails\u0027),"},{"line_number":20,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_30450d44","line":20,"updated":"2017-07-04 18:12:44.000000000","message":"This means we always have this url path regardless of a resource is defined or not. I would like to avoid this situation.\n\nHow about defining a url per detail page in urls?\nFor example, the image index is defined at [1]. Can\u0027t you add the similar entry for image detail?\n\nI understand this cannot be achieved as long as we use /ngdetails/.\nThis approach is leaking how it is implemented. I don\u0027t see any reason to stick this approach. I wonder it is time to switch from the style ngdetails/OS::Glance::Image/\u003cid\u003e from the normal style like /project/images/\u003cid\u003e. This allows us to use more clean and usual way to define URLs.\n\n[1] https://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/project/images/urls.py#L35","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"e0827b85d1535431111e3ed11c2ae3af1f20bbfd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"urlpatterns \u003d ["},{"line_number":18,"context_line":"    url(r\u0027^ngdetails/(?P\u003cresource_type\u003e[^/]+)/(?P\u003cresource_id\u003e[^/]+)\u0027,"},{"line_number":19,"context_line":"        views.AngularDetailsView.as_view(), name\u003d\u0027ngdetails\u0027),"},{"line_number":20,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_bbb1cb49","line":20,"in_reply_to":"3f1d235d_30450d44","updated":"2017-07-06 06:38:32.000000000","message":"You are right, but we can\u0027t set the path for \u0027/ngdetails/\u0027 in each urls.py, AFAIK.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"}],"horizon/site_urls.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a5a06672b05db3176e7c7eb5d01cc3a972c79630","unresolved":false,"context_lines":[{"line_number":42,"context_line":"])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# URL for ngdetails"},{"line_number":45,"context_line":"urlpatterns +\u003d ngdetails_url.urlpatterns"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if settings.DEBUG:"},{"line_number":48,"context_line":"    urlpatterns.extend(["}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_bafc8cb5","line":45,"updated":"2017-07-13 08:52:44.000000000","message":"It always registers ngdetails URLs even if there is no resource uses it.\n\nMy suggestion is to register urls per resource like /ngdetails/OS::Glance::Image/\u003cresource-id\u003e.","commit_id":"45b93666119da4eee6053a0481e6448b357d157c"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"043406d492712f17e1142752c1cd6487d75cad10","unresolved":false,"context_lines":[{"line_number":42,"context_line":"])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# URL for ngdetails"},{"line_number":45,"context_line":"urlpatterns +\u003d ngdetails_url.urlpatterns"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"if settings.DEBUG:"},{"line_number":48,"context_line":"    urlpatterns.extend(["}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_ef5f133f","line":45,"in_reply_to":"3f1d235d_bafc8cb5","updated":"2017-07-13 11:30:02.000000000","message":"Done","commit_id":"45b93666119da4eee6053a0481e6448b357d157c"}],"openstack_dashboard/enabled/_1050_project_images_panel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"be72ff05a708e1716a6e1798bf6667d389e929bd","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# The details view to be belonged to the PANEL_DASHBOARD and PANEL."},{"line_number":26,"context_line":"# If the details view uses ngdetails, this setting is needed to refresh the"},{"line_number":27,"context_line":"# details view."},{"line_number":28,"context_line":"ADD_DETAILS \u003d (\u0027OS::Glance::Image\u0027, PANEL_DASHBOARD, PANEL)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_10869167","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":59},"updated":"2017-07-04 18:12:44.000000000","message":"This means we only have one detail page per panel. I think it is better to accept a list of detail pages.\n\nEven though the network panel is not angularized, the network panel has multiple detail pages: network, subnet, port. The router panel has router detail and interface detail.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"e0827b85d1535431111e3ed11c2ae3af1f20bbfd","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# The details view to be belonged to the PANEL_DASHBOARD and PANEL."},{"line_number":26,"context_line":"# If the details view uses ngdetails, this setting is needed to refresh the"},{"line_number":27,"context_line":"# details view."},{"line_number":28,"context_line":"ADD_DETAILS \u003d (\u0027OS::Glance::Image\u0027, PANEL_DASHBOARD, PANEL)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_0c9d5209","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":59},"in_reply_to":"3f1d235d_10869167","updated":"2017-07-06 06:38:32.000000000","message":"Thank you for noticing me such a situation. done.","commit_id":"28f65406cbe89a9674a035a01a657c87e251fe54"}]}
