)]}'
{"openstack_dashboard/dashboards/identity/domains/tests.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"adb1f35660da9398d0369d0c16feb56481f743a5","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        mix_in \u003d workflows.IdentityMixIn()"},{"line_number":511,"context_line":"        admin_roles \u003d mix_in.get_admin_roles()"},{"line_number":512,"context_line":"        self.assertEqual(\u0027foo\u0027, admin_roles[0])"},{"line_number":513,"context_line":"        self.assertEqual(\u0027bar\u0027, admin_roles[1])"},{"line_number":514,"context_line":"        self.assertEqual(\u0027admin\u0027, admin_roles[2])"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_4efa11bf","line":513,"updated":"2016-01-13 08:30:33.000000000","message":"Why not compare admin_roles with [\u0027foo\u0027, \u0027bar\u0027, \u0027admin\u0027] as a whole with assertEqual. Also, you\u0027re not checking that get_admin_roles() method cast symbols to lowercase. Would be better to specify role names in mixed case in settings.","commit_id":"c3f35631e09ebb958c608e94d72f4e896451403e"}],"openstack_dashboard/dashboards/identity/domains/workflows.py":[{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"62ee4b60c28c64c07412a4c07ade1a08c23de27d","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                _admin_roles \u003d [role.lower() for role in getattr("},{"line_number":359,"context_line":"                                settings,"},{"line_number":360,"context_line":"                                \u0027OPENSTACK_KEYSTONE_ADMIN_ROLES\u0027,"},{"line_number":361,"context_line":"                                [\u0027admin\u0027])]"},{"line_number":362,"context_line":"                admin_roles \u003d [role for role in current_roles"},{"line_number":363,"context_line":"                               if role.name.lower() in _admin_roles]"},{"line_number":364,"context_line":"                if len(admin_roles):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_4f1fd3b6","line":361,"updated":"2016-01-07 02:07:06.000000000","message":"Suggest breaking this code out and making a common function to get the admin roles, so that we can maintain the code in one place if it changes again.","commit_id":"8fa9923f51179862b29c126a0415a0be8be94eed"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"21789616e20f351e417b9491dd0ec6aa13e54dcb","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                # domain_id \u003d\u003d request.user.domain_id"},{"line_number":354,"context_line":"                is_current_domain \u003d True"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"                _admin_roles \u003d self.get_admin_roles()"},{"line_number":357,"context_line":"                available_admin_role_ids \u003d [role.id for role in"},{"line_number":358,"context_line":"                                            available_roles"},{"line_number":359,"context_line":"                                            if role.name.lower() in"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_56bf43d0","line":356,"updated":"2016-01-20 19:25:35.000000000","message":"not sure the need for reformatting, but not wrong.","commit_id":"4ff448b9990d74e2548b797463ea2cb34a5b8c6b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"756507ccb3c8f8d6bbba9338ffff07bb603ad477","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                # domain_id \u003d\u003d request.user.domain_id"},{"line_number":354,"context_line":"                is_current_domain \u003d True"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"                _admin_roles \u003d self.get_admin_roles()"},{"line_number":357,"context_line":"                available_admin_role_ids \u003d [role.id for role in"},{"line_number":358,"context_line":"                                            available_roles"},{"line_number":359,"context_line":"                                            if role.name.lower() in"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_43e763e4","line":356,"in_reply_to":"9a68dd71_56bf43d0","updated":"2016-01-21 11:05:37.000000000","message":"Just a comment: I think it is just due to the space remaining at the right side....\n\nAn alternative is to change the place of new lines.\n\n available_admin_role_ids \u003d [\n     role.id for role in available_roles\n     if role.name.lower() in self.get_admin_roles()\n ]","commit_id":"4ff448b9990d74e2548b797463ea2cb34a5b8c6b"}],"openstack_dashboard/dashboards/identity/projects/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"756507ccb3c8f8d6bbba9338ffff07bb603ad477","unresolved":false,"context_lines":[{"line_number":1782,"context_line":"    def test_get_admin_roles(self):"},{"line_number":1783,"context_line":"        mix_in \u003d workflows.IdentityMixIn()"},{"line_number":1784,"context_line":"        admin_roles \u003d mix_in.get_admin_roles()"},{"line_number":1785,"context_line":"        self.assertEqual([\u0027foo\u0027, \u0027bar\u0027, \u0027admin\u0027], admin_roles)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_83055bc3","line":1785,"updated":"2016-01-21 11:05:37.000000000","message":"As I mentioned in test/settings.py, I don\u0027t think it is a good idea to define a value for testing such as [\u0027foO\u0027, \u0027bar\u0027, \u0027admin\u0027] in the global test settings.\nInstead I would suggest to use @override_setting decorator.\n\n  from django.test.utils import override_settings\n  @override_settings(OPENSTACK_KEYSTONE_ADMIN_ROLES\u003d[\u0027foO\u0027, \u0027BAR\u0027, \u0027admin\u0027])\n  def test_get_admin_roles(self):\n      ...","commit_id":"4ff448b9990d74e2548b797463ea2cb34a5b8c6b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"c91d5c9a03fea24c0e7938ff2dcd79dd4167efd3","unresolved":false,"context_lines":[{"line_number":1782,"context_line":"    def test_get_admin_roles(self):"},{"line_number":1783,"context_line":"        mix_in \u003d workflows.IdentityMixIn()"},{"line_number":1784,"context_line":"        admin_roles \u003d mix_in.get_admin_roles()"},{"line_number":1785,"context_line":"        self.assertEqual([\u0027foo\u0027, \u0027bar\u0027, \u0027admin\u0027], admin_roles)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_38be15d5","line":1785,"in_reply_to":"9a68dd71_83055bc3","updated":"2016-01-21 12:19:54.000000000","message":"+1!","commit_id":"4ff448b9990d74e2548b797463ea2cb34a5b8c6b"}],"openstack_dashboard/dashboards/identity/projects/workflows.py":[{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"62ee4b60c28c64c07412a4c07ade1a08c23de27d","unresolved":false,"context_lines":[{"line_number":665,"context_line":"        _admin_roles \u003d [role.lower() for role in getattr("},{"line_number":666,"context_line":"                        settings,"},{"line_number":667,"context_line":"                        \u0027OPENSTACK_KEYSTONE_ADMIN_ROLES\u0027,"},{"line_number":668,"context_line":"                        [\u0027admin\u0027])]"},{"line_number":669,"context_line":"        available_admin_role_ids \u003d [role.id for role in available_roles"},{"line_number":670,"context_line":"                                    if role.name.lower() in _admin_roles]"},{"line_number":671,"context_line":"        admin_roles \u003d [role for role in current_role_ids"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_6f1ad7c7","line":668,"updated":"2016-01-07 02:07:06.000000000","message":"Same comment as in the other file.","commit_id":"8fa9923f51179862b29c126a0415a0be8be94eed"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"90015c91375d4e971456783f49bf646a70ac4a30","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from openstack_dashboard.api import nova"},{"line_number":35,"context_line":"from openstack_dashboard.dashboards.identity.utils import IdentityMixIn"},{"line_number":36,"context_line":"from openstack_dashboard.usage import quotas"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"INDEX_URL \u003d \"horizon:identity:projects:index\""},{"line_number":40,"context_line":"ADD_USER_URL \u003d \"horizon:identity:projects:create_user\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_b0613eab","line":37,"updated":"2016-01-14 21:17:42.000000000","message":"(nit) Remove this added blank line.","commit_id":"70c3623c0c8851687186e4f46cc648f4196b7eff"}],"openstack_dashboard/test/settings.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"756507ccb3c8f8d6bbba9338ffff07bb603ad477","unresolved":false,"context_lines":[{"line_number":231,"context_line":"REST_API_SECURITY \u003d \u0027SECURITY\u0027"},{"line_number":232,"context_line":"REST_API_REQUIRED_SETTINGS \u003d [\u0027REST_API_SETTING_1\u0027]"},{"line_number":233,"context_line":"REST_API_ADDITIONAL_SETTINGS \u003d [\u0027REST_API_SETTING_2\u0027]"},{"line_number":234,"context_line":"OPENSTACK_KEYSTONE_ADMIN_ROLES \u003d [\u0027foO\u0027, \u0027BAR\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_03c5eb8c","line":234,"updated":"2016-01-21 11:05:37.000000000","message":"This setting is used in all tests, so it is better to keep values normal.\nThis setting is unnecessary.\n\nIf you want to need a special value for testing,\nuse @override_setting decorator in your test.\nSee my comment in the test module.","commit_id":"4ff448b9990d74e2548b797463ea2cb34a5b8c6b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"c91d5c9a03fea24c0e7938ff2dcd79dd4167efd3","unresolved":false,"context_lines":[{"line_number":231,"context_line":"REST_API_SECURITY \u003d \u0027SECURITY\u0027"},{"line_number":232,"context_line":"REST_API_REQUIRED_SETTINGS \u003d [\u0027REST_API_SETTING_1\u0027]"},{"line_number":233,"context_line":"REST_API_ADDITIONAL_SETTINGS \u003d [\u0027REST_API_SETTING_2\u0027]"},{"line_number":234,"context_line":"OPENSTACK_KEYSTONE_ADMIN_ROLES \u003d [\u0027foO\u0027, \u0027BAR\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_18a231af","line":234,"in_reply_to":"9a68dd71_03c5eb8c","updated":"2016-01-21 12:19:54.000000000","message":"Like an idea.","commit_id":"4ff448b9990d74e2548b797463ea2cb34a5b8c6b"}]}
