)]}'
{"keystone/api/groups.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8ba5daf09f5e2eb00218b7a52690c32443c1cb9f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        ENFORCER.enforce_call("},{"line_number":150,"context_line":"            action\u003d\u0027identity:check_user_in_group\u0027,"},{"line_number":151,"context_line":"            target_attr\u003dfunctools.partial(self._build_enforement_target,"},{"line_number":152,"context_line":"                                          user_id, group_id))"},{"line_number":153,"context_line":"        PROVIDERS.identity_api.check_user_in_group(user_id, group_id)"},{"line_number":154,"context_line":"        return None, http_client.NO_CONTENT"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_a09ee152","line":151,"updated":"2018-09-25 23:28:47.000000000","message":"typo","commit_id":"5a46dbe54019e58b442903e990b916d4a195b3a3"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"16e9a3e91cec6fbf8eedff75edcc823ca07b10b7","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \"\"\""},{"line_number":149,"context_line":"        ENFORCER.enforce_call("},{"line_number":150,"context_line":"            action\u003d\u0027identity:check_user_in_group\u0027,"},{"line_number":151,"context_line":"            target_attr\u003dfunctools.partial(self._build_enforcement_target_attr,"},{"line_number":152,"context_line":"                                          user_id, group_id))"},{"line_number":153,"context_line":"        PROVIDERS.identity_api.check_user_in_group(user_id, group_id)"},{"line_number":154,"context_line":"        return None, http_client.NO_CONTENT"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_80d3a501","line":151,"range":{"start_line":151,"start_character":12,"end_line":151,"end_character":23},"updated":"2018-09-25 23:31:10.000000000","message":"needs to be \"build_target\"","commit_id":"45a5d8c69b0a551d4ce2062b3500ed07e5a50086"}],"keystone/common/rbac_enforcer/enforcer.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d675f761b4a742aec54bd6aefc5e878075c2c9c9","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                            data from the X-Subject-Token. The `target` dict"},{"line_number":267,"context_line":"                            should contain a series of key-value pairs such"},{"line_number":268,"context_line":"                            as `{\u0027user\u0027: user_ref_dict}`."},{"line_number":269,"context_line":"        :type target_attr: function"},{"line_number":270,"context_line":"        :param member_target_type: the type of the target, e.g. \u0027user\u0027. Both"},{"line_number":271,"context_line":"                                   this and `member_target` must be passed if"},{"line_number":272,"context_line":"                                   either is passed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_691e860e","line":269,"updated":"2018-09-11 23:44:55.000000000","message":"This needs to be a new argument, in addition to the current mechanism (pass in a dict *or* with a new argument, a function). Don\u0027t change the current one.","commit_id":"4b39564e388f9519daecdea770a9c4173a01b411"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"021f7d126c0258d91ae5c5cabed7032a137c19db","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            target_attr \u003d build_target()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        # Get the Target Data Set."},{"line_number":335,"context_line":"        if target_attr is None:"},{"line_number":336,"context_line":"            try:"},{"line_number":337,"context_line":"                policy_dict.update(cls._extract_member_target_data("},{"line_number":338,"context_line":"                    member_target_type, member_target))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_0e71ea77","line":335,"range":{"start_line":335,"start_character":0,"end_line":335,"end_character":31},"updated":"2018-09-13 20:07:35.000000000","message":"go with: if target_attr is None and build_target is None:\n\nand in the else block (line 353) use build_target or target_attr (I would raise an exception if both are passed)","commit_id":"0a9c58bf2e29553f0eb7ccbcc1dce7ac53925040"}]}
