)]}'
{"keystone/assignment/backends/kvs.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"67a37e2eaa5b1e386efca85d87ab480e710cd9c0","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                data \u003d self.db.get(key)"},{"line_number":231,"context_line":"                for role in data.get(\u0027roles\u0027, []):"},{"line_number":232,"context_line":"                    if role.get(\u0027inherited_to\u0027, \u0027\u0027) \u003d\u003d \u0027projects\u0027:"},{"line_number":233,"context_line":"                        children_ids \u003d children_ids.union("},{"line_number":234,"context_line":"                            [x[\u0027id\u0027] for x in self.get_project_subtree("},{"line_number":235,"context_line":"                                project_id)])"},{"line_number":236,"context_line":"                project_ids \u003d project_ids.union(children_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7a4b1a59","line":233,"updated":"2014-08-27 14:12:00.000000000","message":"children_ids already exists, union creates a new set each time. Why not just .update() children_ids? https://docs.python.org/2/library/stdtypes.html#set.update","commit_id":"ebef9f4e3ecf7e570e7f1ef584a5e2cc489c6c37"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"967ebe833942e3d80edbca76f0f1d08f71635f7f","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                data \u003d self.db.get(key)"},{"line_number":231,"context_line":"                for role in data.get(\u0027roles\u0027, []):"},{"line_number":232,"context_line":"                    if role.get(\u0027inherited_to\u0027, \u0027\u0027) \u003d\u003d \u0027projects\u0027:"},{"line_number":233,"context_line":"                        children_ids \u003d children_ids.union("},{"line_number":234,"context_line":"                            [x[\u0027id\u0027] for x in self.get_project_subtree("},{"line_number":235,"context_line":"                                project_id)])"},{"line_number":236,"context_line":"                project_ids \u003d project_ids.union(children_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_d0088fdb","line":233,"in_reply_to":"1abeadc6_7a4b1a59","updated":"2014-08-27 15:43:13.000000000","message":"Done","commit_id":"ebef9f4e3ecf7e570e7f1ef584a5e2cc489c6c37"}],"keystone/assignment/backends/sql.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"67a37e2eaa5b1e386efca85d87ab480e710cd9c0","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                if ((assignment.type \u003d\u003d AssignmentType.USER_PROJECT or"},{"line_number":271,"context_line":"                        assignment.type \u003d\u003d AssignmentType.GROUP_PROJECT) and"},{"line_number":272,"context_line":"                        assignment.inherited):"},{"line_number":273,"context_line":"                    children_ids \u003d children_ids.union("},{"line_number":274,"context_line":"                        [x[\u0027id\u0027] for x in self.get_project_subtree("},{"line_number":275,"context_line":"                            assignment.target_id)])"},{"line_number":276,"context_line":"            project_ids \u003d project_ids.union(children_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7af15acc","line":273,"updated":"2014-08-27 14:12:00.000000000","message":"Same as keystone/assignment/backends/kvs.py line: 233\nM.b. use something like this:\nchildren_ids.update(map(operator.itemgetter(\u0027id\u0027), self.get_project_subtree(assignment.target_id)))","commit_id":"ebef9f4e3ecf7e570e7f1ef584a5e2cc489c6c37"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"967ebe833942e3d80edbca76f0f1d08f71635f7f","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                if ((assignment.type \u003d\u003d AssignmentType.USER_PROJECT or"},{"line_number":271,"context_line":"                        assignment.type \u003d\u003d AssignmentType.GROUP_PROJECT) and"},{"line_number":272,"context_line":"                        assignment.inherited):"},{"line_number":273,"context_line":"                    children_ids \u003d children_ids.union("},{"line_number":274,"context_line":"                        [x[\u0027id\u0027] for x in self.get_project_subtree("},{"line_number":275,"context_line":"                            assignment.target_id)])"},{"line_number":276,"context_line":"            project_ids \u003d project_ids.union(children_ids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_30f9c3c8","line":273,"in_reply_to":"1abeadc6_7af15acc","updated":"2014-08-27 15:43:13.000000000","message":"Done","commit_id":"ebef9f4e3ecf7e570e7f1ef584a5e2cc489c6c37"}],"keystone/assignment/controllers.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"e78ed075e16fb57ac6f693d3d8e93355cc8465f3","unresolved":false,"context_lines":[{"line_number":827,"context_line":"            project_ids \u003d ("},{"line_number":828,"context_line":"                [x[\u0027id\u0027] for x in"},{"line_number":829,"context_line":"                    self.assignment_api.get_project_subtree("},{"line_number":830,"context_line":"                        ref[\u0027scope\u0027][\u0027project\u0027][\u0027id\u0027])])"},{"line_number":831,"context_line":"            target_id \u003d base_entry[\u0027scope\u0027][\u0027project\u0027][\u0027id\u0027]"},{"line_number":832,"context_line":"            base_entry[\u0027scope\u0027].pop(\u0027project\u0027)"},{"line_number":833,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_49fdba3a","line":830,"updated":"2014-08-27 16:14:32.000000000","message":"Outer parentheses not really needed: project_ids \u003d [... for x in ...] will be enough, like in line 843","commit_id":"072fa6ea36038df8d6b60441d5940ad4b7ba3888"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ec6d1b311afcdb6cd4524a749905be6fee03c01","unresolved":false,"context_lines":[{"line_number":827,"context_line":"            project_ids \u003d ("},{"line_number":828,"context_line":"                [x[\u0027id\u0027] for x in"},{"line_number":829,"context_line":"                    self.assignment_api.get_project_subtree("},{"line_number":830,"context_line":"                        ref[\u0027scope\u0027][\u0027project\u0027][\u0027id\u0027])])"},{"line_number":831,"context_line":"            target_id \u003d base_entry[\u0027scope\u0027][\u0027project\u0027][\u0027id\u0027]"},{"line_number":832,"context_line":"            base_entry[\u0027scope\u0027].pop(\u0027project\u0027)"},{"line_number":833,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_2c3887d2","line":830,"in_reply_to":"1abeadc6_49fdba3a","updated":"2014-08-28 18:19:35.000000000","message":"Done","commit_id":"072fa6ea36038df8d6b60441d5940ad4b7ba3888"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"e78ed075e16fb57ac6f693d3d8e93355cc8465f3","unresolved":false,"context_lines":[{"line_number":834,"context_line":"            project_ids \u003d ("},{"line_number":835,"context_line":"                [x[\u0027id\u0027] for x in"},{"line_number":836,"context_line":"                    self.assignment_api.list_projects_in_domain("},{"line_number":837,"context_line":"                        ref[\u0027scope\u0027][\u0027domain\u0027][\u0027id\u0027])])"},{"line_number":838,"context_line":"            target_id \u003d base_entry[\u0027scope\u0027][\u0027domain\u0027][\u0027id\u0027]"},{"line_number":839,"context_line":"            base_entry[\u0027scope\u0027].pop(\u0027domain\u0027)"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_892a728e","line":837,"updated":"2014-08-27 16:14:32.000000000","message":"Parentheses same as in line 827","commit_id":"072fa6ea36038df8d6b60441d5940ad4b7ba3888"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ec6d1b311afcdb6cd4524a749905be6fee03c01","unresolved":false,"context_lines":[{"line_number":834,"context_line":"            project_ids \u003d ("},{"line_number":835,"context_line":"                [x[\u0027id\u0027] for x in"},{"line_number":836,"context_line":"                    self.assignment_api.list_projects_in_domain("},{"line_number":837,"context_line":"                        ref[\u0027scope\u0027][\u0027domain\u0027][\u0027id\u0027])])"},{"line_number":838,"context_line":"            target_id \u003d base_entry[\u0027scope\u0027][\u0027domain\u0027][\u0027id\u0027]"},{"line_number":839,"context_line":"            base_entry[\u0027scope\u0027].pop(\u0027domain\u0027)"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_4c3143ec","line":837,"in_reply_to":"1abeadc6_892a728e","updated":"2014-08-28 18:19:35.000000000","message":"Done","commit_id":"072fa6ea36038df8d6b60441d5940ad4b7ba3888"}]}
