)]}'
{"openstack_dashboard/dashboards/project/volumes/tables.py":[{"author":{"_account_id":6966,"name":"Jeffrey J. Walls","email":"jeff.walls@hpe.com","username":"ftcjeff"},"change_message_id":"318ca82ae7314fafe5463f2599a6f16826952130","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                                volume.id)"},{"line_number":222,"context_line":"        encrypted \u003d encryption_meta[\u0027encryption_key_id\u0027] is not None"},{"line_number":223,"context_line":"    except Exception:"},{"line_number":224,"context_line":"        encrypted \u003d \"Unknown\""},{"line_number":225,"context_line":"        exceptions.handle(request, _(\"Unable to retrieve \""},{"line_number":226,"context_line":"                                     \"encryption information.\"))"},{"line_number":227,"context_line":"    return encrypted"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9mW4%3D","line":224,"updated":"2014-02-05 18:51:53.000000000","message":"Should be localized if it will be displayed on the screen; mine returned False, so I couldn\u0027t test this exactly though...","commit_id":"9018509ecf06aded528448f6f77187766ba1a7a7"},{"author":{"_account_id":6966,"name":"Jeffrey J. Walls","email":"jeff.walls@hpe.com","username":"ftcjeff"},"change_message_id":"ae5ad8e79bd9aac5e5089f2756348107d410610e","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                                volume.id)"},{"line_number":222,"context_line":"        encrypted \u003d encryption_meta[\u0027encryption_key_id\u0027] is not None"},{"line_number":223,"context_line":"    except Exception:"},{"line_number":224,"context_line":"        encrypted \u003d \"Unknown\""},{"line_number":225,"context_line":"        exceptions.handle(request, _(\"Unable to retrieve \""},{"line_number":226,"context_line":"                                     \"encryption information.\"))"},{"line_number":227,"context_line":"    return encrypted"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9ejo%3D","line":224,"in_reply_to":"AAAAUH%2F9lyE%3D","updated":"2014-02-06 16:43:38.000000000","message":"Personally I do like _(\"Unknown\") in this case, but you\u0027re right that there are a lot of \u0027-\u0027 in the tables...  Maybe a core reviewer can set us straight :-)","commit_id":"9018509ecf06aded528448f6f77187766ba1a7a7"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"182db636814876e2861cb1f6823e38da0808c1b1","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                                                                volume.id)"},{"line_number":222,"context_line":"        encrypted \u003d encryption_meta[\u0027encryption_key_id\u0027] is not None"},{"line_number":223,"context_line":"    except Exception:"},{"line_number":224,"context_line":"        encrypted \u003d \"Unknown\""},{"line_number":225,"context_line":"        exceptions.handle(request, _(\"Unable to retrieve \""},{"line_number":226,"context_line":"                                     \"encryption information.\"))"},{"line_number":227,"context_line":"    return encrypted"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9lyE%3D","line":224,"in_reply_to":"AAAAUH%2F9mW4%3D","updated":"2014-02-05 20:04:14.000000000","message":"Do you think it would be better to just have \u0027 encrypted \u003d \"-\" \u0027 instead of \u0027 encrypted \u003d \"Unknown\" \u0027?  A \"-\" seems common when a value is empty.","commit_id":"9018509ecf06aded528448f6f77187766ba1a7a7"},{"author":{"_account_id":9647,"name":"Justin Pomeroy","email":"jpomero@linux.vnet.ibm.com","username":"jpomero"},"change_message_id":"ca30d15a6bfc4b4c0567e4a518c892e28b187f9f","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                                verbose_name\u003d_(\"Attached To\"))"},{"line_number":285,"context_line":"    availability_zone \u003d tables.Column(\"availability_zone\","},{"line_number":286,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":287,"context_line":"    encryption \u003d EncryptionColumn(\"encryption\", verbose_name\u003d_(\"Encrypted?\"))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    class Meta:"},{"line_number":290,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9d5U%3D","line":287,"updated":"2014-02-06 18:07:26.000000000","message":"Do we need the question mark? After a quick check I didn\u0027t see other similar True/False or Yes/No columns in horizon that have one.","commit_id":"9018509ecf06aded528448f6f77187766ba1a7a7"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"f3c48d94b58b659b687a739a083f6cb78e46d8f5","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                                verbose_name\u003d_(\"Attached To\"))"},{"line_number":285,"context_line":"    availability_zone \u003d tables.Column(\"availability_zone\","},{"line_number":286,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":287,"context_line":"    encryption \u003d EncryptionColumn(\"encryption\", verbose_name\u003d_(\"Encrypted?\"))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    class Meta:"},{"line_number":290,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9dyE%3D","line":287,"in_reply_to":"AAAAUH%2F9d5U%3D","updated":"2014-02-06 18:19:42.000000000","message":"I thought a question mark would be more clear, but for consistency\u0027s sake I\u0027ll remove it.  Thanks for the suggestion!","commit_id":"9018509ecf06aded528448f6f77187766ba1a7a7"}],"openstack_dashboard/dashboards/project/volumes/volumes/tables.py":[{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"3a53c0894a90b9cb5b340c3056ebab6e860d249f","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"def is_volume_encrypted(volume):"},{"line_number":219,"context_line":"    # Check if volume has encrypted attribute and if not return unknown"},{"line_number":220,"context_line":"    if hasattr(volume, \u0027encrypted\u0027):"},{"line_number":221,"context_line":"        return volume.encrypted"},{"line_number":222,"context_line":"    else:"},{"line_number":223,"context_line":"        return _(\"Unknown\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2FgT8%3D","line":220,"updated":"2014-02-26 08:57:29.000000000","message":"Per cinder we always get \u0027encrypted\u0027 attr in volume here. I don\u0027t think we need to define this is_volume_encrypted(volume).\n\nAnd even if volume doesn\u0027t hasattr \u0027encrypted\u0027, the encryption Column can still get a default value \u0027-\u0027.","commit_id":"1e299e2f5861c1686a52386299a00ad4b50f079e"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"1e82599af34dac41bab4a59809f680a7c1d92153","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"def is_volume_encrypted(volume):"},{"line_number":219,"context_line":"    # Check if volume has encrypted attribute and if not return unknown"},{"line_number":220,"context_line":"    if hasattr(volume, \u0027encrypted\u0027):"},{"line_number":221,"context_line":"        return volume.encrypted"},{"line_number":222,"context_line":"    else:"},{"line_number":223,"context_line":"        return _(\"Unknown\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2FaMA%3D","line":220,"in_reply_to":"AAAAU3%2F%2FgT8%3D","updated":"2014-02-26 19:57:16.000000000","message":"Done","commit_id":"1e299e2f5861c1686a52386299a00ad4b50f079e"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"061f3d009dafa063494036a581bf42489566bdef","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    availability_zone \u003d tables.Column(\"availability_zone\","},{"line_number":275,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":276,"context_line":"    encryption \u003d tables.Column(is_volume_encrypted,"},{"line_number":277,"context_line":"                               verbose_name\u003d_(\"Encrypted\"))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    class Meta:"},{"line_number":280,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2FgF4%3D","line":277,"updated":"2014-02-26 09:06:28.000000000","message":"You should also add \u0027encryption\u0027 to Admin tables Meta.columns.","commit_id":"1e299e2f5861c1686a52386299a00ad4b50f079e"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"1e82599af34dac41bab4a59809f680a7c1d92153","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    availability_zone \u003d tables.Column(\"availability_zone\","},{"line_number":275,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":276,"context_line":"    encryption \u003d tables.Column(is_volume_encrypted,"},{"line_number":277,"context_line":"                               verbose_name\u003d_(\"Encrypted\"))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    class Meta:"},{"line_number":280,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2FaL0%3D","line":277,"in_reply_to":"AAAAU3%2F%2FgF4%3D","updated":"2014-02-26 19:57:16.000000000","message":"Done","commit_id":"1e299e2f5861c1686a52386299a00ad4b50f079e"},{"author":{"_account_id":7386,"name":"Tzu-Mainn Chen","email":"tzumainn@redhat.com","username":"tzumainn"},"change_message_id":"4d7e8cf40f2efff4a3d039db4db8e43a70c15854","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":266,"context_line":"    encryption \u003d tables.Column(\"encrypted\","},{"line_number":267,"context_line":"                               verbose_name\u003d_(\"Encrypted\"),"},{"line_number":268,"context_line":"                               empty_value\u003d\"-\")"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    class Meta:"},{"line_number":271,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2Fs3s%3D","line":268,"updated":"2014-04-11 01:59:18.000000000","message":"if encrypted is empty, does it mean that it\u0027s not encrypted, or that encryption simply does not apply?  If the former, shouldn\u0027t the empty_value be False?","commit_id":"016ea2fc8ce1310fda78716929d8952a8d6ab14a"},{"author":{"_account_id":7386,"name":"Tzu-Mainn Chen","email":"tzumainn@redhat.com","username":"tzumainn"},"change_message_id":"fe7e88a20458ed9c99ed32fcd2e134364ecd5c56","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":266,"context_line":"    encryption \u003d tables.Column(\"encrypted\","},{"line_number":267,"context_line":"                               verbose_name\u003d_(\"Encrypted\"),"},{"line_number":268,"context_line":"                               empty_value\u003d\"-\")"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    class Meta:"},{"line_number":271,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2FszE%3D","line":268,"in_reply_to":"AAAAW3%2F%2Fs3s%3D","updated":"2014-04-11 02:14:29.000000000","message":"Ignore this comment, looking back at previous comments, it\u0027s clear that empty means unknown.","commit_id":"016ea2fc8ce1310fda78716929d8952a8d6ab14a"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"7a3c6fece3cb0bdc7becc4d6411b34e580384d47","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":288,"context_line":"    encryption \u003d tables.Column(\"encrypted\","},{"line_number":289,"context_line":"                               verbose_name\u003d_(\"Encrypted\"),"},{"line_number":290,"context_line":"                               empty_value\u003d\"-\")"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    class Meta:"},{"line_number":293,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_107bc67b","line":290,"updated":"2014-05-16 06:08:52.000000000","message":"you should apply a yesno filter on the output here.","commit_id":"e64dc389877d8e24e69ffa00054c2bf471b75ea0"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"8b6f60a7e4a75b9958b0397fbf809e7c9717eb17","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                         verbose_name\u003d_(\"Availability Zone\"))"},{"line_number":288,"context_line":"    encryption \u003d tables.Column(\"encrypted\","},{"line_number":289,"context_line":"                               verbose_name\u003d_(\"Encrypted\"),"},{"line_number":290,"context_line":"                               empty_value\u003d\"-\")"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    class Meta:"},{"line_number":293,"context_line":"        name \u003d \"volumes\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_95e09afb","line":290,"in_reply_to":"7adec928_107bc67b","updated":"2014-05-16 21:01:23.000000000","message":"Done","commit_id":"e64dc389877d8e24e69ffa00054c2bf471b75ea0"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"b23565cd510223a6f131758519be171da3f0825f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from django.core.urlresolvers import NoReverseMatch  # noqa"},{"line_number":16,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":17,"context_line":"from django.template import defaultfilters as filters"},{"line_number":18,"context_line":"from django.template.defaultfilters import title  # noqa"},{"line_number":19,"context_line":"from django.utils import html"},{"line_number":20,"context_line":"from django.utils.http import urlencode"},{"line_number":21,"context_line":"from django.utils import safestring"}],"source_content_type":"text/x-python","patch_set":11,"id":"7adec928_2dbcd2db","line":18,"updated":"2014-05-19 02:13:23.000000000","message":"seems you can remove this import. use filters.title instead.","commit_id":"5b6a463d5d2d74c73dd5e4687b57f6341dc4fa55"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d4488d42515ce6b9b5da0b119f1dcd3af2ddfc21","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from django.core.urlresolvers import NoReverseMatch  # noqa"},{"line_number":16,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":17,"context_line":"from django.template import defaultfilters as filters"},{"line_number":18,"context_line":"from django.template.defaultfilters import title  # noqa"},{"line_number":19,"context_line":"from django.utils import html"},{"line_number":20,"context_line":"from django.utils.http import urlencode"},{"line_number":21,"context_line":"from django.utils import safestring"}],"source_content_type":"text/x-python","patch_set":11,"id":"7adec928_9fe313d8","line":18,"in_reply_to":"7adec928_2dbcd2db","updated":"2014-05-19 19:24:00.000000000","message":"Good point.  Updated in latest patch.","commit_id":"5b6a463d5d2d74c73dd5e4687b57f6341dc4fa55"}],"openstack_dashboard/dashboards/project/volumes/volumes/tests.py":[{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"b2446d9130f4587b19b468e711489e7307476bdf","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"    @test.create_stubs({cinder: (\u0027volume_list\u0027,),"},{"line_number":1057,"context_line":"                        api.nova: (\u0027server_list\u0027,),"},{"line_number":1058,"context_line":"                        quotas: (\u0027tenant_quota_usages\u0027,)})"},{"line_number":1059,"context_line":"    def test_encryption_true(self):"},{"line_number":1060,"context_line":"        volumes \u003d self.volumes.list()"},{"line_number":1061,"context_line":"        for volume in volumes:"},{"line_number":1062,"context_line":"            volume.encrypted \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_a6c9277a","line":1059,"updated":"2014-05-05 02:50:05.000000000","message":"This is almost identical between encryption_false and encryption_true tests with the exception of params, maybe a helper function would be nicer?","commit_id":"2fe9ca7d56747488f6201c8b53a25cae468816d3"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"2769816cf3a1520cb1b0cfbaca6460359a9d770b","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"    @test.create_stubs({cinder: (\u0027volume_list\u0027,),"},{"line_number":1057,"context_line":"                        api.nova: (\u0027server_list\u0027,),"},{"line_number":1058,"context_line":"                        quotas: (\u0027tenant_quota_usages\u0027,)})"},{"line_number":1059,"context_line":"    def test_encryption_true(self):"},{"line_number":1060,"context_line":"        volumes \u003d self.volumes.list()"},{"line_number":1061,"context_line":"        for volume in volumes:"},{"line_number":1062,"context_line":"            volume.encrypted \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_3d2194b4","line":1059,"in_reply_to":"9ad9bd40_a6c9277a","updated":"2014-05-05 13:57:48.000000000","message":"Done.  Thanks for the suggestion, it has been changed in the latest patch.","commit_id":"2fe9ca7d56747488f6201c8b53a25cae468816d3"},{"author":{"_account_id":7386,"name":"Tzu-Mainn Chen","email":"tzumainn@redhat.com","username":"tzumainn"},"change_message_id":"0c7f7584fe5fa5afca5af37f1a58ac4c54f232b4","unresolved":false,"context_lines":[{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"        self.mox.ReplayAll()"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"        url \u003d reverse(\u0027horizon:project:volumes:index\u0027)"},{"line_number":1062,"context_line":"        res \u003d self.client.get(url)"},{"line_number":1063,"context_line":"        rows \u003d res.context[\u0027volumes_table\u0027].get_rows()"},{"line_number":1064,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_87059212","line":1061,"updated":"2014-06-05 17:27:54.000000000","message":"I think you can just use the constant VOLUME_INDEX_URL here","commit_id":"075bc71ba1d8cc0d30c28dd8a07e36ffda9e4432"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"6045bf8e1a30043136b534648a609ca92a3a884d","unresolved":false,"context_lines":[{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"        self.mox.ReplayAll()"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"        url \u003d reverse(\u0027horizon:project:volumes:index\u0027)"},{"line_number":1062,"context_line":"        res \u003d self.client.get(url)"},{"line_number":1063,"context_line":"        rows \u003d res.context[\u0027volumes_table\u0027].get_rows()"},{"line_number":1064,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_4a170f45","line":1061,"in_reply_to":"1ae5cdf2_87059212","updated":"2014-06-05 17:45:34.000000000","message":"Good call Tzu-Mainn Chen.  I have made the fix in the latest patch.","commit_id":"075bc71ba1d8cc0d30c28dd8a07e36ffda9e4432"}]}
