)]}'
{"openstack_dashboard/conf/cinder_policy.json":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c0d3ba30e96cf2d7b4d1605f57b4a006f8ee5fb6","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    \"volume:create_snapshot\": [[\"rule:default\"]],"},{"line_number":17,"context_line":"    \"volume:delete_snapshot\": [[\"rule:default\"]],"},{"line_number":18,"context_line":"    \"volume:get_snapshot\": [],"},{"line_number":19,"context_line":"    \"volume:update_snapshot\": [],"},{"line_number":20,"context_line":"    \"volume:get_all_snapshots\": [],"},{"line_number":21,"context_line":"    \"volume:extend\": [],"},{"line_number":22,"context_line":""}],"source_content_type":"application/json","patch_set":11,"id":"9ad9bd40_de8d5d33","line":19,"updated":"2014-04-30 22:34:27.000000000","message":"Maybe it is better to have the default policy as \"rule:default\" too, to match the create and update snapshot permission","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"e69320420714fd131d128a9b1f35f449b829ad67","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    \"volume:create_snapshot\": [[\"rule:default\"]],"},{"line_number":17,"context_line":"    \"volume:delete_snapshot\": [[\"rule:default\"]],"},{"line_number":18,"context_line":"    \"volume:get_snapshot\": [],"},{"line_number":19,"context_line":"    \"volume:update_snapshot\": [],"},{"line_number":20,"context_line":"    \"volume:get_all_snapshots\": [],"},{"line_number":21,"context_line":"    \"volume:extend\": [],"},{"line_number":22,"context_line":""}],"source_content_type":"application/json","patch_set":11,"id":"9ad9bd40_0145aa6f","line":19,"in_reply_to":"9ad9bd40_de8d5d33","updated":"2014-05-01 01:08:38.000000000","message":"Done","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"}],"openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/_update.html":[{"author":{"_account_id":10099,"name":"Charles Prince","email":"charles.prince@hp.com","username":"charles-prince"},"change_message_id":"027a10018525b606d5f2e57f42169f8949008b0e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003c/div\u003e"},{"line_number":17,"context_line":"\u003cdiv class\u003d\"right\"\u003e"},{"line_number":18,"context_line":"    \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":19,"context_line":"    \u003cp\u003e{% trans \"From here you can modify name and description of a snapshot.\" %}\u003c/p\u003e"},{"line_number":20,"context_line":"\u003c/div\u003e"},{"line_number":21,"context_line":"{% endblock %}"},{"line_number":22,"context_line":""}],"source_content_type":"text/html","patch_set":3,"id":"AAAAUH%2F9bU0%3D","line":19,"updated":"2014-02-06 23:59:53.000000000","message":"Should this be \"modify the name\"?","commit_id":"cb1fea22365c25ddae51e0b5d920736aa3edfff2"}],"openstack_dashboard/dashboards/project/images_and_snapshots/templates/images_and_snapshots/snapshots/update.html":[{"author":{"_account_id":10099,"name":"Charles Prince","email":"charles.prince@hp.com","username":"charles-prince"},"change_message_id":"027a10018525b606d5f2e57f42169f8949008b0e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"{% block title %}{% trans \"Edit Snapshot\" %}{% endblock %}"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"{% block page_header %}"},{"line_number":6,"context_line":"  {% include \"horizon/common/_page_header.html\" with title\u003d_(\"Edit a Snapshot\") %}"},{"line_number":7,"context_line":"{% endblock page_header %}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"{% block main %}"}],"source_content_type":"text/html","patch_set":3,"id":"AAAAUH%2F9bUI%3D","line":6,"updated":"2014-02-06 23:59:53.000000000","message":"Should the titles match?  Either both say \"Edit Snapshot\" or \"Edit a Snapshot\"?","commit_id":"cb1fea22365c25ddae51e0b5d920736aa3edfff2"}],"openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/forms.py":[{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"6663b311b5588b4b22a2f7cb8ab9045859d64afd","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                                          data[\u0027description\u0027])"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"            message \u003d _(\u0027Updating volume snapshot \"%s\"\u0027) % data[\u0027name\u0027]"},{"line_number":43,"context_line":"            messages.info(request, message)"},{"line_number":44,"context_line":"            return True"},{"line_number":45,"context_line":"        except Exception:"},{"line_number":46,"context_line":"            redirect \u003d reverse(\"horizon:project:images_and_snapshots:index\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FPYs%3D","line":43,"updated":"2014-01-16 01:36:21.000000000","message":"Hi, I believe it should show the success green box instead of info box, so messages.success(request, message) instead.","commit_id":"8a62d050d9464f5082d4700b0d827c79d24c3f6b"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"68c2d564e91de2c278a590dbebbc24b1242d4578","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                                          data[\u0027description\u0027])"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"            message \u003d _(\u0027Updating volume snapshot \"%s\"\u0027) % data[\u0027name\u0027]"},{"line_number":43,"context_line":"            messages.info(request, message)"},{"line_number":44,"context_line":"            return True"},{"line_number":45,"context_line":"        except Exception:"},{"line_number":46,"context_line":"            redirect \u003d reverse(\"horizon:project:images_and_snapshots:index\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FPPs%3D","line":43,"in_reply_to":"AAAAUH%2F%2FPYs%3D","updated":"2014-01-16 02:06:53.000000000","message":"Thanks Cindy, but I find CreateForm, AttachForm, CreateSnapshotForm in volumes are all use info box instead of success, so just keep consistent with them. and in fact, I don\u0027t know why volumes related messages use info instead of success.","commit_id":"8a62d050d9464f5082d4700b0d827c79d24c3f6b"}],"openstack_dashboard/dashboards/project/images_and_snapshots/volume_snapshots/tables.py":[{"author":{"_account_id":10099,"name":"Charles Prince","email":"charles.prince@hp.com","username":"charles-prince"},"change_message_id":"027a10018525b606d5f2e57f42169f8949008b0e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return {\"project_id\": project_id}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def allowed(self, request, snapshot\u003dNone):"},{"line_number":66,"context_line":"        return snapshot.status \u003d\u003d \"available\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class CreateVolumeFromSnapshot(tables.LinkAction):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9bTE%3D","line":66,"updated":"2014-02-06 23:59:53.000000000","message":"If snapshot is None, which is specifically allowed by the function definition, this will break.","commit_id":"cb1fea22365c25ddae51e0b5d920736aa3edfff2"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"8dbf550f02bb03521b1e789e753c0fa70b048c76","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return {\"project_id\": project_id}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def allowed(self, request, snapshot\u003dNone):"},{"line_number":66,"context_line":"        return snapshot.status \u003d\u003d \"available\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class CreateVolumeFromSnapshot(tables.LinkAction):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2F5L0%3D","line":66,"in_reply_to":"AAAAUH%2F9bTE%3D","updated":"2014-02-10 05:23:59.000000000","message":"This is a row action so snapshot will never be None here.","commit_id":"cb1fea22365c25ddae51e0b5d920736aa3edfff2"},{"author":{"_account_id":10099,"name":"Charles Prince","email":"charles.prince@hp.com","username":"charles-prince"},"change_message_id":"f0f4302bc8d0421081af75f4d1460cf9d091b2a3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return {\"project_id\": project_id}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def allowed(self, request, snapshot\u003dNone):"},{"line_number":66,"context_line":"        return snapshot.status \u003d\u003d \"available\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class CreateVolumeFromSnapshot(tables.LinkAction):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FzxQ%3D","line":66,"updated":"2014-02-10 17:30:29.000000000","message":"OK, I see that this will never be none.  I\u0027d remove the default value from the snapshot parameter, to make that more explicit.","commit_id":"0e26fad4bb73fb18fb4b99d642d621be465194ee"}],"openstack_dashboard/dashboards/project/volumes/snapshots/forms.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c0d3ba30e96cf2d7b4d1605f57b4a006f8ee5fb6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Nebula, Inc."},{"line_number":2,"context_line":"# All rights reserved."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_9eaaf56e","line":1,"updated":"2014-04-30 22:34:27.000000000","message":"remove company header","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"e69320420714fd131d128a9b1f35f449b829ad67","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Nebula, Inc."},{"line_number":2,"context_line":"# All rights reserved."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_e1360603","line":1,"in_reply_to":"9ad9bd40_9eaaf56e","updated":"2014-05-01 01:08:38.000000000","message":"Done","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"}],"openstack_dashboard/dashboards/project/volumes/snapshots/tables.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c0d3ba30e96cf2d7b4d1605f57b4a006f8ee5fb6","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        name \u003d \"volume_snapshots\""},{"line_number":137,"context_line":"        verbose_name \u003d _(\"Volume Snapshots\")"},{"line_number":138,"context_line":"        table_actions \u003d (DeleteVolumeSnapshot,)"},{"line_number":139,"context_line":"        row_actions \u003d (CreateVolumeFromSnapshot, EditVolumeSnapshot,"},{"line_number":140,"context_line":"                       LaunchSnapshot, DeleteVolumeSnapshot)"},{"line_number":141,"context_line":"        row_class \u003d UpdateRow"},{"line_number":142,"context_line":"        status_columns \u003d (\"status\",)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_3e6d6933","line":139,"updated":"2014-04-30 22:34:27.000000000","message":"I am thinking if EditVolume should go after Launch, the reason is Launch would be used more often than Edit. What do you think?  This is just a comment, you can just ignore it if you like.","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"e69320420714fd131d128a9b1f35f449b829ad67","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        name \u003d \"volume_snapshots\""},{"line_number":137,"context_line":"        verbose_name \u003d _(\"Volume Snapshots\")"},{"line_number":138,"context_line":"        table_actions \u003d (DeleteVolumeSnapshot,)"},{"line_number":139,"context_line":"        row_actions \u003d (CreateVolumeFromSnapshot, EditVolumeSnapshot,"},{"line_number":140,"context_line":"                       LaunchSnapshot, DeleteVolumeSnapshot)"},{"line_number":141,"context_line":"        row_class \u003d UpdateRow"},{"line_number":142,"context_line":"        status_columns \u003d (\"status\",)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_841d4869","line":139,"in_reply_to":"9ad9bd40_3e6d6933","updated":"2014-05-01 01:08:38.000000000","message":"Done","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"}],"openstack_dashboard/dashboards/project/volumes/snapshots/urls.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c0d3ba30e96cf2d7b4d1605f57b4a006f8ee5fb6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Nebula, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_1eb6e5d9","line":1,"updated":"2014-04-30 22:34:27.000000000","message":"remove company header","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"e69320420714fd131d128a9b1f35f449b829ad67","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Nebula, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_c44d9074","line":1,"in_reply_to":"9ad9bd40_1eb6e5d9","updated":"2014-05-01 01:08:38.000000000","message":"Done","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"}],"openstack_dashboard/dashboards/project/volumes/snapshots/views.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c0d3ba30e96cf2d7b4d1605f57b4a006f8ee5fb6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Nebula, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_1eed05c4","line":1,"updated":"2014-04-30 22:34:27.000000000","message":"remove company header","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"e69320420714fd131d128a9b1f35f449b829ad67","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Nebula, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_04585831","line":1,"in_reply_to":"9ad9bd40_1eed05c4","updated":"2014-05-01 01:08:38.000000000","message":"Done","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"c0d3ba30e96cf2d7b4d1605f57b4a006f8ee5fb6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    form_class \u003d vol_snapshot_forms.UpdateForm"},{"line_number":34,"context_line":"    template_name \u003d \u0027project/volumes/snapshots/update.html\u0027"},{"line_number":35,"context_line":"    success_url \u003d reverse_lazy(\"horizon:project:volumes:index\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_object(self):"},{"line_number":38,"context_line":"        if not hasattr(self, \"_object\"):"},{"line_number":39,"context_line":"            snap_id \u003d self.kwargs[\u0027snapshot_id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_de09dd96","line":36,"updated":"2014-04-30 22:34:27.000000000","message":"Re-use the decorator @memoized.memoized_method, with that the condition in line:37 can be removed.   Similar to the method in line :70","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"e69320420714fd131d128a9b1f35f449b829ad67","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    form_class \u003d vol_snapshot_forms.UpdateForm"},{"line_number":34,"context_line":"    template_name \u003d \u0027project/volumes/snapshots/update.html\u0027"},{"line_number":35,"context_line":"    success_url \u003d reverse_lazy(\"horizon:project:volumes:index\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_object(self):"},{"line_number":38,"context_line":"        if not hasattr(self, \"_object\"):"},{"line_number":39,"context_line":"            snap_id \u003d self.kwargs[\u0027snapshot_id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad9bd40_04f4d8f0","line":36,"in_reply_to":"9ad9bd40_de09dd96","updated":"2014-05-01 01:08:38.000000000","message":"Done","commit_id":"b3e969eb94a09bfaccf84ee4d0b21112a78d797a"}]}
