)]}'
{"keystone/tests/test_backend.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"bfc3771b7719f5d041d64a943e95b3ec6b2649b1","unresolved":false,"context_lines":[{"line_number":5535,"context_line":"                                     \u0027contents\u0027: {\u0027user\u0027: 1, \u0027project\u0027: 2}}],"},{"line_number":5536,"context_line":"                         \u0027role\u0027: 2},"},{"line_number":5537,"context_line":"            \u0027assignments\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":5538,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027domain\u0027: 0,"},{"line_number":5539,"context_line":"                             \u0027inherited_to_projects\u0027: True}],"},{"line_number":5540,"context_line":"            \u0027tests\u0027: ["},{"line_number":5541,"context_line":"                # List all effective assignments for user[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b9b89d2b","line":5538,"updated":"2015-02-09 12:48:47.000000000","message":"domain 1 is who has 2 projects inside it.\nreplace \u0027domain\u0027: 0 by \u0027domain\u0027: 1","commit_id":"4db23ab14d3ff5b031586bcb3d18248b3a818986"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ecd32ecd7d07a283a39ef60776fc72456cb832ea","unresolved":false,"context_lines":[{"line_number":5535,"context_line":"                                     \u0027contents\u0027: {\u0027user\u0027: 1, \u0027project\u0027: 2}}],"},{"line_number":5536,"context_line":"                         \u0027role\u0027: 2},"},{"line_number":5537,"context_line":"            \u0027assignments\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":5538,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027domain\u0027: 0,"},{"line_number":5539,"context_line":"                             \u0027inherited_to_projects\u0027: True}],"},{"line_number":5540,"context_line":"            \u0027tests\u0027: ["},{"line_number":5541,"context_line":"                # List all effective assignments for user[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b91fbdb6","line":5538,"in_reply_to":"da86d52c_b9b89d2b","updated":"2015-02-10 14:27:23.000000000","message":"Done","commit_id":"4db23ab14d3ff5b031586bcb3d18248b3a818986"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"bfc3771b7719f5d041d64a943e95b3ec6b2649b1","unresolved":false,"context_lines":[{"line_number":5544,"context_line":"                {\u0027params\u0027: {\u0027user\u0027: 0, \u0027effective\u0027: True},"},{"line_number":5545,"context_line":"                 \u0027results\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":5546,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 1,"},{"line_number":5547,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}},"},{"line_number":5548,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 2,"},{"line_number":5549,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}}]}"},{"line_number":5550,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_f981354e","line":5547,"updated":"2015-02-09 12:48:47.000000000","message":"should be \u0027domain\u0027: 1","commit_id":"4db23ab14d3ff5b031586bcb3d18248b3a818986"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ecd32ecd7d07a283a39ef60776fc72456cb832ea","unresolved":false,"context_lines":[{"line_number":5544,"context_line":"                {\u0027params\u0027: {\u0027user\u0027: 0, \u0027effective\u0027: True},"},{"line_number":5545,"context_line":"                 \u0027results\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":5546,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 1,"},{"line_number":5547,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}},"},{"line_number":5548,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 2,"},{"line_number":5549,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}}]}"},{"line_number":5550,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_197e09e5","line":5547,"in_reply_to":"da86d52c_f981354e","updated":"2015-02-10 14:27:23.000000000","message":"Done","commit_id":"4db23ab14d3ff5b031586bcb3d18248b3a818986"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"bfc3771b7719f5d041d64a943e95b3ec6b2649b1","unresolved":false,"context_lines":[{"line_number":5546,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 1,"},{"line_number":5547,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}},"},{"line_number":5548,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 2,"},{"line_number":5549,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}}]}"},{"line_number":5550,"context_line":"            ]"},{"line_number":5551,"context_line":"        }"},{"line_number":5552,"context_line":"        self.execute_assignment_test_plan(test_plan)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_59816149","line":5549,"updated":"2015-02-09 12:48:47.000000000","message":"should be \u0027domain\u0027: 1","commit_id":"4db23ab14d3ff5b031586bcb3d18248b3a818986"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ecd32ecd7d07a283a39ef60776fc72456cb832ea","unresolved":false,"context_lines":[{"line_number":5546,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 1,"},{"line_number":5547,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}},"},{"line_number":5548,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 2,"},{"line_number":5549,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 0}}]}"},{"line_number":5550,"context_line":"            ]"},{"line_number":5551,"context_line":"        }"},{"line_number":5552,"context_line":"        self.execute_assignment_test_plan(test_plan)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_d9739113","line":5549,"in_reply_to":"da86d52c_59816149","updated":"2015-02-10 14:27:23.000000000","message":"Done","commit_id":"4db23ab14d3ff5b031586bcb3d18248b3a818986"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"491f403e345c12b926c06c701793006e8ad099b1","unresolved":false,"context_lines":[{"line_number":5903,"context_line":""},{"line_number":5904,"context_line":"        # TODO(henry-nash): The test above uses list_projects_for_user"},{"line_number":5905,"context_line":"        # which may, in a subsequent patch, be re-implemeted to simply call"},{"line_number":5906,"context_line":"        # list_role_assignments."},{"line_number":5907,"context_line":"        #"},{"line_number":5908,"context_line":"        # The test plan below therefore mirrors this test, to ensure that"},{"line_number":5909,"context_line":"        # list_role_assignments works the same. Once list_projects_for_user"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_f35f6473","line":5906,"updated":"2015-02-17 02:53:05.000000000","message":"Well, this one (as other in the tests added so far) will not \u0027simply\u0027 call list_role_assignments, they will need to filter only the info they need to return.\n\nIn this case, it will extract the projects and then return the distinct ones.","commit_id":"4c4d3c18cff18feabf8a0100d4684d8b111d3c2d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4c28142b33cc1b348c0fc68965bd541e5d17c248","unresolved":false,"context_lines":[{"line_number":5903,"context_line":""},{"line_number":5904,"context_line":"        # TODO(henry-nash): The test above uses list_projects_for_user"},{"line_number":5905,"context_line":"        # which may, in a subsequent patch, be re-implemeted to simply call"},{"line_number":5906,"context_line":"        # list_role_assignments."},{"line_number":5907,"context_line":"        #"},{"line_number":5908,"context_line":"        # The test plan below therefore mirrors this test, to ensure that"},{"line_number":5909,"context_line":"        # list_role_assignments works the same. Once list_projects_for_user"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_12364451","line":5906,"in_reply_to":"da86d52c_f35f6473","updated":"2015-02-19 12:04:27.000000000","message":"Done","commit_id":"4c4d3c18cff18feabf8a0100d4684d8b111d3c2d"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"491f403e345c12b926c06c701793006e8ad099b1","unresolved":false,"context_lines":[{"line_number":5907,"context_line":"        #"},{"line_number":5908,"context_line":"        # The test plan below therefore mirrors this test, to ensure that"},{"line_number":5909,"context_line":"        # list_role_assignments works the same. Once list_projects_for_user"},{"line_number":5910,"context_line":"        # has been re-implemented then the manual tests above can be removed."},{"line_number":5911,"context_line":"        test_plan \u003d {"},{"line_number":5912,"context_line":"            # A domain with a 1 project, plus a second domain with 2 projects,"},{"line_number":5913,"context_line":"            # as well as a user \u0026 group and a 3rd domain with 2 projects."}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_73da94ea","line":5910,"updated":"2015-02-17 02:53:05.000000000","message":"We need to ensure it mirrors the above test once we ensure (with another test) that list_projects_for_user does use list_role_assignments.\n\nOtherwise, we were just replacing a test of list_projects_for_user by a similar test for list_role_assignments, without ensuring they have consistent returns.\n\nPlease add a not saying we need to add such test once list_projects_for_user is refactored.","commit_id":"4c4d3c18cff18feabf8a0100d4684d8b111d3c2d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4c28142b33cc1b348c0fc68965bd541e5d17c248","unresolved":false,"context_lines":[{"line_number":5907,"context_line":"        #"},{"line_number":5908,"context_line":"        # The test plan below therefore mirrors this test, to ensure that"},{"line_number":5909,"context_line":"        # list_role_assignments works the same. Once list_projects_for_user"},{"line_number":5910,"context_line":"        # has been re-implemented then the manual tests above can be removed."},{"line_number":5911,"context_line":"        test_plan \u003d {"},{"line_number":5912,"context_line":"            # A domain with a 1 project, plus a second domain with 2 projects,"},{"line_number":5913,"context_line":"            # as well as a user \u0026 group and a 3rd domain with 2 projects."}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_523b5c37","line":5910,"in_reply_to":"da86d52c_73da94ea","updated":"2015-02-19 12:04:27.000000000","message":"Done","commit_id":"4c4d3c18cff18feabf8a0100d4684d8b111d3c2d"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"491f403e345c12b926c06c701793006e8ad099b1","unresolved":false,"context_lines":[{"line_number":5919,"context_line":"                         \u0027role\u0027: 2},"},{"line_number":5920,"context_line":"            \u0027group_memberships\u0027: [{\u0027group\u0027: 0, \u0027users\u0027: [0]}],"},{"line_number":5921,"context_line":"            \u0027assignments\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":5922,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 3},"},{"line_number":5923,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027domain\u0027: 1,"},{"line_number":5924,"context_line":"                             \u0027inherited_to_projects\u0027: True},"},{"line_number":5925,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027domain\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_3383bccd","line":5922,"updated":"2015-02-17 02:53:05.000000000","message":"(nit) I think these two first assignments are in the reverse order in the original test, i.e\n\n    {\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 3},\n    {\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},\n\nI just think this should make it easier for other reviewers to compare the tests equivalence.","commit_id":"4c4d3c18cff18feabf8a0100d4684d8b111d3c2d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4c28142b33cc1b348c0fc68965bd541e5d17c248","unresolved":false,"context_lines":[{"line_number":5919,"context_line":"                         \u0027role\u0027: 2},"},{"line_number":5920,"context_line":"            \u0027group_memberships\u0027: [{\u0027group\u0027: 0, \u0027users\u0027: [0]}],"},{"line_number":5921,"context_line":"            \u0027assignments\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":5922,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 3},"},{"line_number":5923,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027domain\u0027: 1,"},{"line_number":5924,"context_line":"                             \u0027inherited_to_projects\u0027: True},"},{"line_number":5925,"context_line":"                            {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027domain\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_d27d8ce8","line":5922,"in_reply_to":"da86d52c_3383bccd","updated":"2015-02-19 12:04:27.000000000","message":"Done","commit_id":"4c4d3c18cff18feabf8a0100d4684d8b111d3c2d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"f99d3a7fb3fa6e7ac1c04a89c32041e8dcad9dcc","unresolved":false,"context_lines":[{"line_number":5934,"context_line":""},{"line_number":5935,"context_line":"        Test Plan:"},{"line_number":5936,"context_line":""},{"line_number":5937,"context_line":"        - Enable OS-INHERIT extension"},{"line_number":5938,"context_line":"        - Create a domain, with two projects and a user"},{"line_number":5939,"context_line":"        - Assign an inherited user role on the domain, as well as a direct"},{"line_number":5940,"context_line":"          user role to a separate project in a different domain"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_272d63fd","line":5937,"updated":"2015-08-16 08:14:07.000000000","message":"once the refactoring is down, update the docstring here since we need to create two domain with the new test strategy.","commit_id":"35d4430eabb48f881b5866231f29d9b157bc218d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e20de95292f0a05d7d6a0d33ceed0b006403129","unresolved":false,"context_lines":[{"line_number":5934,"context_line":""},{"line_number":5935,"context_line":"        Test Plan:"},{"line_number":5936,"context_line":""},{"line_number":5937,"context_line":"        - Enable OS-INHERIT extension"},{"line_number":5938,"context_line":"        - Create a domain, with two projects and a user"},{"line_number":5939,"context_line":"        - Assign an inherited user role on the domain, as well as a direct"},{"line_number":5940,"context_line":"          user role to a separate project in a different domain"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_34ee378c","line":5937,"in_reply_to":"1a4dcd0f_272d63fd","updated":"2015-08-17 22:10:21.000000000","message":"will handle as part of a refactor","commit_id":"35d4430eabb48f881b5866231f29d9b157bc218d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"f99d3a7fb3fa6e7ac1c04a89c32041e8dcad9dcc","unresolved":false,"context_lines":[{"line_number":5977,"context_line":"        # has been re-implemented then the manual tests above can be"},{"line_number":5978,"context_line":"        # refactored."},{"line_number":5979,"context_line":"        test_plan \u003d {"},{"line_number":5980,"context_line":"            # A domain with a 1 project, plus a second domain with 2 projects,"},{"line_number":5981,"context_line":"            # as well as a user. Also, create 2 roles."},{"line_number":5982,"context_line":"            \u0027entities\u0027: {\u0027domain\u0027: [{\u0027contents\u0027: {\u0027project\u0027: 1}},"},{"line_number":5983,"context_line":"                                    {\u0027contents\u0027: {\u0027user\u0027: 1, \u0027project\u0027: 2}}],"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_67d5abe3","line":5980,"updated":"2015-08-16 08:14:07.000000000","message":"del the word \u0027a\u0027 before \u00271\u0027.","commit_id":"35d4430eabb48f881b5866231f29d9b157bc218d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e20de95292f0a05d7d6a0d33ceed0b006403129","unresolved":false,"context_lines":[{"line_number":5977,"context_line":"        # has been re-implemented then the manual tests above can be"},{"line_number":5978,"context_line":"        # refactored."},{"line_number":5979,"context_line":"        test_plan \u003d {"},{"line_number":5980,"context_line":"            # A domain with a 1 project, plus a second domain with 2 projects,"},{"line_number":5981,"context_line":"            # as well as a user. Also, create 2 roles."},{"line_number":5982,"context_line":"            \u0027entities\u0027: {\u0027domain\u0027: [{\u0027contents\u0027: {\u0027project\u0027: 1}},"},{"line_number":5983,"context_line":"                                    {\u0027contents\u0027: {\u0027user\u0027: 1, \u0027project\u0027: 2}}],"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_54f3ab73","line":5980,"in_reply_to":"1a4dcd0f_67d5abe3","updated":"2015-08-17 22:10:21.000000000","message":"Done","commit_id":"35d4430eabb48f881b5866231f29d9b157bc218d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"f99d3a7fb3fa6e7ac1c04a89c32041e8dcad9dcc","unresolved":false,"context_lines":[{"line_number":6065,"context_line":"        - Enable OS-INHERIT extension"},{"line_number":6066,"context_line":"        - Create two domains, each with two projects"},{"line_number":6067,"context_line":"        - Create a user and group"},{"line_number":6068,"context_line":"        - Make the user a member of the group"},{"line_number":6069,"context_line":"        - Assign a user role two projects, an inherited"},{"line_number":6070,"context_line":"          group role to one domain and an inherited regular role on"},{"line_number":6071,"context_line":"          the other domain"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a4dcd0f_c7811fc5","line":6068,"updated":"2015-08-16 08:14:07.000000000","message":"assign a user role to two projects.","commit_id":"35d4430eabb48f881b5866231f29d9b157bc218d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"7e20de95292f0a05d7d6a0d33ceed0b006403129","unresolved":false,"context_lines":[{"line_number":6065,"context_line":"        - Enable OS-INHERIT extension"},{"line_number":6066,"context_line":"        - Create two domains, each with two projects"},{"line_number":6067,"context_line":"        - Create a user and group"},{"line_number":6068,"context_line":"        - Make the user a member of the group"},{"line_number":6069,"context_line":"        - Assign a user role two projects, an inherited"},{"line_number":6070,"context_line":"          group role to one domain and an inherited regular role on"},{"line_number":6071,"context_line":"          the other domain"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1b9901_94e2a39e","line":6068,"in_reply_to":"1a4dcd0f_c7811fc5","updated":"2015-08-17 22:10:21.000000000","message":"will handle as part of a refactor","commit_id":"35d4430eabb48f881b5866231f29d9b157bc218d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"561f6cc6fe73edb5f5927e5713769343df312bb6","unresolved":false,"context_lines":[{"line_number":6346,"context_line":"        # refactored."},{"line_number":6347,"context_line":"        test_plan \u003d {"},{"line_number":6348,"context_line":"            # A domain with a 1 project, plus a second domain with 2 projects,"},{"line_number":6349,"context_line":"            # as well as a user \u0026 group and a 3rd domain with 2 projects."},{"line_number":6350,"context_line":"            # Also, created 2 roles."},{"line_number":6351,"context_line":"            \u0027entities\u0027: {\u0027domains\u0027: [{\u0027projects\u0027: 1},"},{"line_number":6352,"context_line":"                                     {\u0027users\u0027: 1, \u0027groups\u0027: 1, \u0027projects\u0027: 2},"}],"source_content_type":"text/x-python","patch_set":28,"id":"da20952f_dabbbcc2","line":6349,"updated":"2015-09-06 05:33:01.000000000","message":"s/and/in","commit_id":"ef2996b27f81fd2e624153ff8080a268ff70cfe1"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"8df314308591632610ca6cba5866ca650a0fa537","unresolved":false,"context_lines":[{"line_number":6364,"context_line":"                # Should get back both direct roles plus roles on both projects"},{"line_number":6365,"context_line":"                # from each domain. Duplicates should not be fitered out."},{"line_number":6366,"context_line":"                {\u0027params\u0027: {\u0027user\u0027: 0, \u0027effective\u0027: True},"},{"line_number":6367,"context_line":"                 \u0027results\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 3},"},{"line_number":6368,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":6369,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 1,"},{"line_number":6370,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 1}},"}],"source_content_type":"text/x-python","patch_set":28,"id":"da20952f_b8c79963","line":6367,"updated":"2015-09-02 01:27:55.000000000","message":"would be nice if these are ordered as above. Easier to read the code that way.","commit_id":"ef2996b27f81fd2e624153ff8080a268ff70cfe1"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2b1b1dec98af2d3f87705b2af9191306dc90a57a","unresolved":false,"context_lines":[{"line_number":6364,"context_line":"                # Should get back both direct roles plus roles on both projects"},{"line_number":6365,"context_line":"                # from each domain. Duplicates should not be fitered out."},{"line_number":6366,"context_line":"                {\u0027params\u0027: {\u0027user\u0027: 0, \u0027effective\u0027: True},"},{"line_number":6367,"context_line":"                 \u0027results\u0027: [{\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 3},"},{"line_number":6368,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 0, \u0027project\u0027: 0},"},{"line_number":6369,"context_line":"                             {\u0027user\u0027: 0, \u0027role\u0027: 1, \u0027project\u0027: 1,"},{"line_number":6370,"context_line":"                              \u0027indirect\u0027: {\u0027domain\u0027: 1}},"}],"source_content_type":"text/x-python","patch_set":28,"id":"da20952f_a33f5cd5","line":6367,"in_reply_to":"da20952f_b8c79963","updated":"2015-09-02 09:33:30.000000000","message":"fair point! There is likely to be a clean up patch at the end of all this, so I will add this to the list","commit_id":"ef2996b27f81fd2e624153ff8080a268ff70cfe1"}]}
