)]}'
{"keystone/assignment/backends/kvs.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"a21377fd56e794cc488fa01266e19830b4b19959","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        roles."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        \"\"\""},{"line_number":273,"context_line":"        assignment_list \u003d []"},{"line_number":274,"context_line":"        metadata_keys \u003d (k for k in self.db.keys()"},{"line_number":275,"context_line":"                         if k.startswith(\u0027metadata_user-\u0027))"},{"line_number":276,"context_line":"        for key in metadata_keys:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_621b8673","line":273,"updated":"2014-09-02 22:38:27.000000000","message":"Notice that the code at 274-292 and 294-312 do the same work for different types of actor.\nIt could be refactored by using a for statement to wrap the common code, as shown below:\n\n    for actor_type in (\u0027user\u0027, \u0027group\u0027):\n\nI didn\u0027t do it directly because I\u0027m not sure if it\u0027s a good idea to put a bug fix and a refactoring into the same patch.","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"914ec6d0b37a9691fc93994b14e221980471911e","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        roles."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        \"\"\""},{"line_number":273,"context_line":"        assignment_list \u003d []"},{"line_number":274,"context_line":"        metadata_keys \u003d (k for k in self.db.keys()"},{"line_number":275,"context_line":"                         if k.startswith(\u0027metadata_user-\u0027))"},{"line_number":276,"context_line":"        for key in metadata_keys:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_5a0bb47c","line":273,"in_reply_to":"fa98f980_31b1ca47","updated":"2014-09-03 13:35:34.000000000","message":"++ the refactoring is not at the scope of this bug fix","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7016adcc3079413a929733106b08f479d2c9556a","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        roles."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        \"\"\""},{"line_number":273,"context_line":"        assignment_list \u003d []"},{"line_number":274,"context_line":"        metadata_keys \u003d (k for k in self.db.keys()"},{"line_number":275,"context_line":"                         if k.startswith(\u0027metadata_user-\u0027))"},{"line_number":276,"context_line":"        for key in metadata_keys:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_31b1ca47","line":273,"in_reply_to":"fa98f980_621b8673","updated":"2014-09-03 01:34:21.000000000","message":"I think we need another patch.","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"3ab9a2c70dfaecf1019d433ad427434505c11786","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        roles."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        \"\"\""},{"line_number":273,"context_line":"        assignment_list \u003d []"},{"line_number":274,"context_line":"        metadata_keys \u003d (k for k in self.db.keys()"},{"line_number":275,"context_line":"                         if k.startswith(\u0027metadata_user-\u0027))"},{"line_number":276,"context_line":"        for key in metadata_keys:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_25a508a2","line":273,"in_reply_to":"fa98f980_621b8673","updated":"2014-09-02 23:23:13.000000000","message":"Prefer refactoring here. :)","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7016adcc3079413a929733106b08f479d2c9556a","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                role_assignment \u003d template.copy()"},{"line_number":288,"context_line":"                role_assignment[\u0027role_id\u0027] \u003d r[\u0027id\u0027]"},{"line_number":289,"context_line":"                # If it is an inherited role, put this in the role assignment"},{"line_number":290,"context_line":"                if r.get(\u0027inherited_to\u0027, None) \u003d\u003d \u0027projects\u0027:"},{"line_number":291,"context_line":"                    role_assignment[\u0027inherited_to_projects\u0027] \u003d \u0027projects\u0027"},{"line_number":292,"context_line":"                assignment_list.append(role_assignment)"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_918b5667","line":290,"updated":"2014-09-03 01:34:21.000000000","message":"I think if r.get(\u0027inherited_to\u0027) \u003d\u003d \u0027projects\u0027 is enough.","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"a5c93d461254637afe75c594d8de54d4aa23c346","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                role_assignment \u003d template.copy()"},{"line_number":288,"context_line":"                role_assignment[\u0027role_id\u0027] \u003d r[\u0027id\u0027]"},{"line_number":289,"context_line":"                # If it is an inherited role, put this in the role assignment"},{"line_number":290,"context_line":"                if r.get(\u0027inherited_to\u0027, None) \u003d\u003d \u0027projects\u0027:"},{"line_number":291,"context_line":"                    role_assignment[\u0027inherited_to_projects\u0027] \u003d \u0027projects\u0027"},{"line_number":292,"context_line":"                assignment_list.append(role_assignment)"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_9acc3c6c","line":290,"in_reply_to":"fa98f980_918b5667","updated":"2014-09-03 14:22:09.000000000","message":"Done","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7016adcc3079413a929733106b08f479d2c9556a","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                role_assignment \u003d template.copy()"},{"line_number":308,"context_line":"                role_assignment[\u0027role_id\u0027] \u003d r[\u0027id\u0027]"},{"line_number":309,"context_line":"                # If it is an inherited role, put this in the role assignment"},{"line_number":310,"context_line":"                if r.get(\u0027inherited_to\u0027, None) \u003d\u003d \u0027projects\u0027:"},{"line_number":311,"context_line":"                    role_assignment[\u0027inherited_to_projects\u0027] \u003d \u0027projects\u0027"},{"line_number":312,"context_line":"                assignment_list.append(role_assignment)"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_11f766f6","line":310,"updated":"2014-09-03 01:34:21.000000000","message":"Same to line290.","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"a5c93d461254637afe75c594d8de54d4aa23c346","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                role_assignment \u003d template.copy()"},{"line_number":308,"context_line":"                role_assignment[\u0027role_id\u0027] \u003d r[\u0027id\u0027]"},{"line_number":309,"context_line":"                # If it is an inherited role, put this in the role assignment"},{"line_number":310,"context_line":"                if r.get(\u0027inherited_to\u0027, None) \u003d\u003d \u0027projects\u0027:"},{"line_number":311,"context_line":"                    role_assignment[\u0027inherited_to_projects\u0027] \u003d \u0027projects\u0027"},{"line_number":312,"context_line":"                assignment_list.append(role_assignment)"},{"line_number":313,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_bac9005b","line":310,"in_reply_to":"fa98f980_11f766f6","updated":"2014-09-03 14:22:09.000000000","message":"Done","commit_id":"70008c3d447665b3f2744e8c82c6e6c6f87e6d2e"}]}
