)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e75bfde3154f2ede1db635f6c3de00b2b5569f03","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The initial call:"},{"line_number":10,"context_line":"if not trust:"},{"line_number":11,"context_line":" raise exception.TrustNotFound(trust_id)"},{"line_number":12,"context_line":"just seems to be repeated for no reason"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Removed the spurious check of is_admin from _is_trustor_trustee_admin,"},{"line_number":15,"context_line":"fixed the same method to actually check the trustee, and renamed it"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F9MK4%3D","line":12,"updated":"2013-12-14 23:03:21.000000000","message":"Suggest re-word this to be less of a \"code example\" and more of \"what was changed\".","commit_id":"896aade3e5b0ec3eacafc51f5891f876ffb2fa24"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e75bfde3154f2ede1db635f6c3de00b2b5569f03","unresolved":false,"context_lines":[{"line_number":15,"context_line":"fixed the same method to actually check the trustee, and renamed it"},{"line_number":16,"context_line":"to _is_trustor_trustee."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Added tests."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Id61e71cb3ea7c6bc51783af067fbbbe4c9bffafe"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F9MK8%3D","line":18,"updated":"2013-12-14 23:03:21.000000000","message":"With the changes this seems like it warrants a bug for tracking.  Otherwise this seems quite reasonable.","commit_id":"896aade3e5b0ec3eacafc51f5891f876ffb2fa24"}],"keystone/trust/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1ae85050fb22c17a4312f1ac77d9fd6ca194e585","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    if user_id !\u003d trust.get(\u0027trustor_user_id\u0027):"},{"line_number":34,"context_line":"        raise exception.Forbidden()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _admin_trustor_trustee_only(context, trust, user_id):"},{"line_number":38,"context_line":"    if (user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":39,"context_line":"            user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9R%2F4%3D","side":"PARENT","line":36,"updated":"2013-12-13 03:55:54.000000000","message":"this is issued at line 83, and then previously at lines 86-88, the same checks were performed (minus the admin one)?","commit_id":"35242b04eb73f41e3ecb9391697087d54464f480"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"34f9c601fce5fc992040bc29d804588364c962c1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    if user_id !\u003d trust.get(\u0027trustor_user_id\u0027):"},{"line_number":34,"context_line":"        raise exception.Forbidden()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _admin_trustor_trustee_only(context, trust, user_id):"},{"line_number":38,"context_line":"    if (user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":39,"context_line":"            user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9Otc%3D","side":"PARENT","line":36,"in_reply_to":"AAAATn%2F9R%2F4%3D","updated":"2013-12-13 18:42:35.000000000","message":"I think the _is_admin is spurious and should be removed.  Only leave the other check...","commit_id":"35242b04eb73f41e3ecb9391697087d54464f480"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1ae85050fb22c17a4312f1ac77d9fd6ca194e585","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    def get_trust(self, context, trust_id):"},{"line_number":79,"context_line":"        user_id \u003d self._get_user_id(context)"},{"line_number":80,"context_line":"        trust \u003d self.trust_api.get_trust(trust_id)"},{"line_number":81,"context_line":"        if not trust:"},{"line_number":82,"context_line":"            raise exception.TrustNotFound(trust_id)"},{"line_number":83,"context_line":"        _admin_trustor_trustee_only(context, trust, user_id)"},{"line_number":84,"context_line":"        if not trust:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9R%2F0%3D","side":"PARENT","line":81,"updated":"2013-12-13 03:55:54.000000000","message":"this check is repeated on line 84. \nAnd line 83 doesn\u0027t mutate the trust, so it seems very unnecessary.","commit_id":"35242b04eb73f41e3ecb9391697087d54464f480"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"34f9c601fce5fc992040bc29d804588364c962c1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        _admin_trustor_trustee_only(context, trust, user_id)"},{"line_number":84,"context_line":"        if not trust:"},{"line_number":85,"context_line":"            raise exception.TrustNotFound(trust_id\u003dtrust_id)"},{"line_number":86,"context_line":"        if (user_id !\u003d trust[\u0027trustor_user_id\u0027] and"},{"line_number":87,"context_line":"                user_id !\u003d trust[\u0027trustee_user_id\u0027]):"},{"line_number":88,"context_line":"            raise exception.Forbidden()"},{"line_number":89,"context_line":"        self._fill_in_roles(context, trust,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9OtQ%3D","side":"PARENT","line":86,"updated":"2013-12-13 18:42:35.000000000","message":"leave this check, and remove the call to _admin_trustor_trustee_only ...should probably refactor this call into a function like that one was.","commit_id":"35242b04eb73f41e3ecb9391697087d54464f480"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6b409a3446bdd6e1422e5f8b1a1915f63b6de3f1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        trust \u003d self.trust_api.get_trust(trust_id)"},{"line_number":81,"context_line":"        if not trust:"},{"line_number":82,"context_line":"            raise exception.TrustNotFound(trust_id)"},{"line_number":83,"context_line":"        _admin_trustor_trustee_only(context, trust, user_id)"},{"line_number":84,"context_line":"        if not trust:"},{"line_number":85,"context_line":"            raise exception.TrustNotFound(trust_id\u003dtrust_id)"},{"line_number":86,"context_line":"        if (user_id !\u003d trust[\u0027trustor_user_id\u0027] and"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9M%2Fc%3D","side":"PARENT","line":83,"updated":"2013-12-14 06:54:43.000000000","message":"ayoung recommended to remove this call","commit_id":"35242b04eb73f41e3ecb9391697087d54464f480"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6b409a3446bdd6e1422e5f8b1a1915f63b6de3f1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        _admin_trustor_trustee_only(context, trust, user_id)"},{"line_number":84,"context_line":"        if not trust:"},{"line_number":85,"context_line":"            raise exception.TrustNotFound(trust_id\u003dtrust_id)"},{"line_number":86,"context_line":"        if (user_id !\u003d trust[\u0027trustor_user_id\u0027] and"},{"line_number":87,"context_line":"                user_id !\u003d trust[\u0027trustee_user_id\u0027]):"},{"line_number":88,"context_line":"            raise exception.Forbidden()"},{"line_number":89,"context_line":"        self._fill_in_roles(context, trust,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9M%2FY%3D","side":"PARENT","line":86,"updated":"2013-12-14 06:54:43.000000000","message":"just dropped this part into it\u0027s own method","commit_id":"35242b04eb73f41e3ecb9391697087d54464f480"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c9bc7af1748afb5e66cc1e78aaba802eedabdd74","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def _admin_trustor_trustee_only(context, trust, user_id):"},{"line_number":38,"context_line":"    if (user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":39,"context_line":"            user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":40,"context_line":"            context[\u0027is_admin\u0027]):"},{"line_number":41,"context_line":"                raise exception.Forbidden()"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9M%2FI%3D","line":39,"updated":"2013-12-14 06:58:37.000000000","message":"i believe the original is also wrong... should be trustee here","commit_id":"3045e51eb198a15a5d56e7451802a45118255852"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"399c6d0cb8d25ffcc584b1a3b6a809807888fc46","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _trustor_trustee_only(trust, user_id):"},{"line_number":45,"context_line":"    if (user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":46,"context_line":"            user_id !\u003d trust.get(\u0027trustor_user_id\u0027)):"},{"line_number":47,"context_line":"                raise exception.Forbidden()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9M%2Fs%3D","line":46,"updated":"2013-12-14 06:53:05.000000000","message":"both of these are checking trustor_user_id.  That doesn\u0027t seem right, is one meant to be trustee?  and should \"and\" be \"or\"?","commit_id":"3045e51eb198a15a5d56e7451802a45118255852"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5281bd32133cba25258049e11c42aea84ba0fe2c","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _trustor_trustee_only(trust, user_id):"},{"line_number":45,"context_line":"    if (user_id !\u003d trust.get(\u0027trustor_user_id\u0027) and"},{"line_number":46,"context_line":"            user_id !\u003d trust.get(\u0027trustor_user_id\u0027)):"},{"line_number":47,"context_line":"                raise exception.Forbidden()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9M%2FQ%3D","line":46,"in_reply_to":"AAAATn%2F9M%2Fs%3D","updated":"2013-12-14 06:55:15.000000000","message":"*facepalm*","commit_id":"3045e51eb198a15a5d56e7451802a45118255852"}]}
