)]}'
{"keystone/credential/core.py":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"09b964fdb11430e8bfea881cb7d6ae1b97cb82cf","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@dependency.provider(\u0027credential_api\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8uYM%3D","side":"PARENT","line":32,"updated":"2013-12-21 03:27:54.000000000","message":"This change is not documented in the commit message and does not appear to be related to the proposed change.","commit_id":"de735442a51d3c8b45d57d46952dd4722a836e88"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f68de1d5cfe7282d96fecc29339bc33514b99590","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@dependency.provider(\u0027credential_api\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8uJI%3D","side":"PARENT","line":32,"in_reply_to":"AAAATn%2F8uYM%3D","updated":"2013-12-21 06:35:35.000000000","message":"Done","commit_id":"de735442a51d3c8b45d57d46952dd4722a836e88"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"80eb8ed779b70693147bb51b93a604347795d129","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            try:"},{"line_number":115,"context_line":"                self.credential_api.delete_credential(cr[\u0027id\u0027])"},{"line_number":116,"context_line":"            except exception.CredentialNotFound:"},{"line_number":117,"context_line":"                LOG.debug(_(\u0027Deletion of credential %s not required.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F3BA%3D","line":117,"updated":"2013-12-30 01:26:24.000000000","message":"this needs an argument... not sure why this passed tests.","commit_id":"b3deb5425f279d4e11a71d6621bd19c5037fd464"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d4da1ceafc80d079c774aa7432812ad0bfdecaea","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            try:"},{"line_number":115,"context_line":"                self.credential_api.delete_credential(cr[\u0027id\u0027])"},{"line_number":116,"context_line":"            except exception.CredentialNotFound:"},{"line_number":117,"context_line":"                LOG.debug(_(\u0027Deletion of credential %s not required.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2F3Ao%3D","line":117,"in_reply_to":"AAAAT3%2F%2F3BA%3D","updated":"2013-12-30 01:28:30.000000000","message":"Good catch.","commit_id":"b3deb5425f279d4e11a71d6621bd19c5037fd464"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"377486877ab03eac1ccd2a246654f29939587523","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\"Deletes all credentials for a user.\"\"\""},{"line_number":107,"context_line":"        self._delete_credentials(user_id\u003duser_id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _delete_credentials(self, user_id\u003dNone, project_id\u003dNone):"},{"line_number":110,"context_line":"        for cr in self.list_credentials():"},{"line_number":111,"context_line":"            if ((project_id is not None and cr[\u0027project_id\u0027] !\u003d project_id) or"},{"line_number":112,"context_line":"                    (user_id is not None and cr[\u0027user_id\u0027] !\u003d project_id)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F2%2FQ%3D","line":109,"updated":"2013-12-30 01:41:01.000000000","message":"should pass in a function and the id. e.g.\n\n def _delete_credentials(self, id, fn):\n    ... if id !\u003d fn(cr): continue\n\nthen call like\n\n self._delete_credentials(project_id, lambda cr: cr[\u0027project_id\u0027])\n\nthen don\u0027t need to have the complicated logic below.","commit_id":"f1b5c1b067e10a2c5a1a50505b785dcdaa4a152a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"bbe4e9dfe3930b7ce589a32b107361cd14baa4af","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\"Deletes all credentials for a user.\"\"\""},{"line_number":107,"context_line":"        self._delete_credentials(user_id\u003duser_id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _delete_credentials(self, user_id\u003dNone, project_id\u003dNone):"},{"line_number":110,"context_line":"        for cr in self.list_credentials():"},{"line_number":111,"context_line":"            if ((project_id is not None and cr[\u0027project_id\u0027] !\u003d project_id) or"},{"line_number":112,"context_line":"                    (user_id is not None and cr[\u0027user_id\u0027] !\u003d project_id)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F284%3D","line":109,"in_reply_to":"AAAAT3%2F%2F2%2FQ%3D","updated":"2013-12-30 02:10:18.000000000","message":"Done","commit_id":"f1b5c1b067e10a2c5a1a50505b785dcdaa4a152a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8f82fa9882486582507672d99854fc5d70020899","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def delete_credentials_for_project(self, project_id):"},{"line_number":101,"context_line":"        \"\"\"Deletes all credentials for a project.\"\"\""},{"line_number":102,"context_line":"        self._delete_credentials(project_id,"},{"line_number":103,"context_line":"                                 lambda id, cr: cr[\u0027user_id\u0027] \u003d\u003d id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"},{"line_number":106,"context_line":"    def delete_credentials_for_user(self, user_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2F23g%3D","line":103,"updated":"2013-12-30 02:42:15.000000000","message":"Looks like id is always going to be project_id. If so, could make this...\n\n self._delete_credentials(lambda cr: cr[\u0027user_id\u0027] \u003d\u003d project_id)","commit_id":"ab8b374b6626d08c49dd1f4530c46a0a5648b9a1"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"47587e89d21a0d547811062fc2d0731b9c4dbf7c","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def delete_credentials_for_project(self, project_id):"},{"line_number":101,"context_line":"        \"\"\"Deletes all credentials for a project.\"\"\""},{"line_number":102,"context_line":"        self._delete_credentials(project_id,"},{"line_number":103,"context_line":"                                 lambda id, cr: cr[\u0027user_id\u0027] \u003d\u003d id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"},{"line_number":106,"context_line":"    def delete_credentials_for_user(self, user_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2F22o%3D","line":103,"in_reply_to":"AAAAT3%2F%2F23g%3D","updated":"2013-12-30 02:52:13.000000000","message":"Ah, dang it, that was a copy-paste error.","commit_id":"ab8b374b6626d08c49dd1f4530c46a0a5648b9a1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ffc5c709c1f8030a1d8050cf8ba5853e5a410703","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def delete_credentials_for_project(self, project_id):"},{"line_number":101,"context_line":"        \"\"\"Deletes all credentials for a project.\"\"\""},{"line_number":102,"context_line":"        self._delete_credentials(project_id,"},{"line_number":103,"context_line":"                                 lambda id, cr: cr[\u0027project_id\u0027] \u003d\u003d id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"},{"line_number":106,"context_line":"    def delete_credentials_for_user(self, user_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2F0Ko%3D","line":103,"updated":"2013-12-30 23:07:13.000000000","message":"Looks like id is always going to be project_id. If so, could make this...\n\n self._delete_credentials(lambda cr: cr[\u0027user_id\u0027] \u003d\u003d project_id)","commit_id":"be50cd64f57196814a42b4ec36d8273695dc6fd3"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"01fb10abc404a81a8c00683293db956ffa223b0b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def delete_credentials_for_project(self, project_id):"},{"line_number":101,"context_line":"        \"\"\"Deletes all credentials for a project.\"\"\""},{"line_number":102,"context_line":"        self._delete_credentials(project_id,"},{"line_number":103,"context_line":"                                 lambda id, cr: cr[\u0027project_id\u0027] \u003d\u003d id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"},{"line_number":106,"context_line":"    def delete_credentials_for_user(self, user_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAT3%2F%2FxTw%3D","line":103,"in_reply_to":"AAAAT3%2F%2F0Ko%3D","updated":"2014-01-01 20:44:36.000000000","message":"Done","commit_id":"be50cd64f57196814a42b4ec36d8273695dc6fd3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ef5ee30ce22c6844afb31c76fc446d2d9341ad3c","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def delete_credentials_for_project(self, project_id):"},{"line_number":101,"context_line":"        \"\"\"Deletes all credentials for a project.\"\"\""},{"line_number":102,"context_line":"        self._delete_credentials(project_id,"},{"line_number":103,"context_line":"                                 lambda cr: cr[\u0027project_id\u0027] \u003d\u003d project_id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"},{"line_number":106,"context_line":"    def delete_credentials_for_user(self, user_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAT3%2F%2Ft9Y%3D","line":103,"updated":"2014-01-02 23:19:51.000000000","message":"Looks like id is always going to be project_id. If so, could make this...\n\n self._delete_credentials(lambda cr: cr[\u0027user_id\u0027] \u003d\u003d project_id)","commit_id":"a3bffe4fa91ab1c64f9f9cc2367be57c1122d6d1"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"baaacd72b003e2d481f5a666a379d5e85dd93e31","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def delete_credentials_for_project(self, project_id):"},{"line_number":101,"context_line":"        \"\"\"Deletes all credentials for a project.\"\"\""},{"line_number":102,"context_line":"        self._delete_credentials(project_id,"},{"line_number":103,"context_line":"                                 lambda cr: cr[\u0027project_id\u0027] \u003d\u003d project_id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"},{"line_number":106,"context_line":"    def delete_credentials_for_user(self, user_id):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAT3%2F%2FtyY%3D","line":103,"in_reply_to":"AAAAT3%2F%2Ft9Y%3D","updated":"2014-01-03 00:29:43.000000000","message":"I think this is less clear because of lambdas...or lack of syntax highlighting... ugh.  I will _actually_ fix this in the next patch.","commit_id":"a3bffe4fa91ab1c64f9f9cc2367be57c1122d6d1"}]}
