)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"9cba4ad8e27752ad06374077f206a6376a4fa7ae","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-05-30 09:40:59 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix sending invalid query parameters to database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When a long query parameter came is used (such as a name with"},{"line_number":10,"context_line":"more than 255 characters), this is never going to match a user"},{"line_number":11,"context_line":"in the SQL backend, because names can only be up to 255"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a016987_b88dc132","line":8,"updated":"2015-05-31 03:18:17.000000000","message":"typo. came should be name","commit_id":"c6cf141ea509f480f2a6c27012fcf5a8ffe8f61a"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7967ed5915595d9b00284dd1011ffbb8da3c70b3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Brant Knudson \u003cbknudson@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-31 15:02:08 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix sending invalid query parameters to database"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When a long query parameter name is used (such as a name with"},{"line_number":10,"context_line":"more than 255 characters), this is never going to match a user"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5afe65bd_8a47c24a","line":7,"updated":"2015-06-03 06:28:02.000000000","message":"The title doesn\u0027t describe the specific of the change,  should this be something like \"Don\u0027t query db if criteria longer than col length\"  or just mention about the length issue?","commit_id":"1262df62a668b20e5cb518d9205bde8680e981a0"}],"keystone/common/driver_hints.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a4ce1b73d029eb2e48b331d21debe03e0024cab7","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def __init__(self):"},{"line_number":49,"context_line":"        self.limit \u003d None"},{"line_number":50,"context_line":"        self.filters \u003d list()"},{"line_number":51,"context_line":"        self.no_matches \u003d False"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def add_filter(self, name, value, comparator\u003d\u0027equals\u0027,"},{"line_number":54,"context_line":"                   case_sensitive\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_3ce320da","line":51,"updated":"2015-03-14 07:53:41.000000000","message":"(nit) just wonder if perhaps the name of this variable might imply that there have been no matches so far or something like that.  Perhaps call it something like \"cannot_match\"?","commit_id":"82960a66c7df51d02bad9de990ae81496b8fc212"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3597e54ad4348e09ae6797ee36478422948ab461","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def __init__(self):"},{"line_number":49,"context_line":"        self.limit \u003d None"},{"line_number":50,"context_line":"        self.filters \u003d list()"},{"line_number":51,"context_line":"        self.no_matches \u003d False"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def add_filter(self, name, value, comparator\u003d\u0027equals\u0027,"},{"line_number":54,"context_line":"                   case_sensitive\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_8db21892","line":51,"in_reply_to":"9a80dd14_3ce320da","updated":"2015-03-14 16:13:07.000000000","message":"Done","commit_id":"82960a66c7df51d02bad9de990ae81496b8fc212"}],"keystone/common/sql/core.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a4ce1b73d029eb2e48b331d21debe03e0024cab7","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if not col.type.length:"},{"line_number":249,"context_line":"            return"},{"line_number":250,"context_line":"        if len(value) \u003e col.type.length:"},{"line_number":251,"context_line":"            raise cls()"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def _filter(model, query, hints):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_bca0f090","line":251,"updated":"2015-03-14 07:53:41.000000000","message":"nice!","commit_id":"82960a66c7df51d02bad9de990ae81496b8fc212"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1dd7bad56af8d0f5e8393c76905f05e7d9413863","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return wrapper"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"class WontMatch(Exception):"},{"line_number":243,"context_line":"    @classmethod"},{"line_number":244,"context_line":"    def check(cls, value, col_attr):"},{"line_number":245,"context_line":"        col \u003d col_attr.property.columns[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_53778602","line":242,"updated":"2015-04-10 23:27:38.000000000","message":"honestly not sure i\u0027ve ever seen a contraction used in a class name","commit_id":"efb505be273f06859988033e57c909f836b05da0"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1dd7bad56af8d0f5e8393c76905f05e7d9413863","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if not col.type.length:"},{"line_number":249,"context_line":"            return"},{"line_number":250,"context_line":"        if len(value) \u003e col.type.length:"},{"line_number":251,"context_line":"            raise cls()"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def _filter(model, query, hints):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_d3d036cc","line":251,"updated":"2015-04-10 23:27:38.000000000","message":"no message?","commit_id":"efb505be273f06859988033e57c909f836b05da0"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7967ed5915595d9b00284dd1011ffbb8da3c70b3","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        \"\"\""},{"line_number":337,"context_line":"        key \u003d filter_[\u0027name\u0027]"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        col \u003d getattr(model, key)"},{"line_number":340,"context_line":"        if isinstance(col.property.columns[0].type, sql.types.Boolean):"},{"line_number":341,"context_line":"            cumulative_filter_dict[key] \u003d ("},{"line_number":342,"context_line":"                utils.attr_as_boolean(filter_[\u0027value\u0027]))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_ef5be8f4","line":339,"updated":"2015-06-03 06:28:02.000000000","message":"nice to have: would be nice to use column_attr too for consistency of naming variables","commit_id":"1262df62a668b20e5cb518d9205bde8680e981a0"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f80d6edc2f51546ff106bd9fb8d941bbe96aa77a","unresolved":false,"context_lines":[{"line_number":5665,"context_line":""},{"line_number":5666,"context_line":"    def _get_user_name_field_size(self):"},{"line_number":5667,"context_line":"        \"\"\"Subclasses must override this method to return the size of the user"},{"line_number":5668,"context_line":"        name field."},{"line_number":5669,"context_line":"        \"\"\""},{"line_number":5670,"context_line":"        # For the base class, just pick some large-ish number."},{"line_number":5671,"context_line":"        return 256"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_213148ed","line":5668,"updated":"2015-04-10 16:15:12.000000000","message":"Suggest changing this docstring to the following format https://www.python.org/dev/peps/pep-0008/#documentation-strings\n\nWhere the summary is contained on the first line and any additional information is documented below: \n\n    def _method(self):\n        \"\"\"Return the size of the user name field.\n\n         More stuff about this method here..\n\n        \"\"\"","commit_id":"efb505be273f06859988033e57c909f836b05da0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f0fb352a1312b500f2bba92aa23f6947397b42f","unresolved":false,"context_lines":[{"line_number":5665,"context_line":""},{"line_number":5666,"context_line":"    def _get_user_name_field_size(self):"},{"line_number":5667,"context_line":"        \"\"\"Subclasses must override this method to return the size of the user"},{"line_number":5668,"context_line":"        name field."},{"line_number":5669,"context_line":"        \"\"\""},{"line_number":5670,"context_line":"        # For the base class, just pick some large-ish number."},{"line_number":5671,"context_line":"        return 256"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab921fb_8d7e7517","line":5668,"in_reply_to":"7aaa499b_213148ed","updated":"2015-04-25 12:22:31.000000000","message":"Done","commit_id":"efb505be273f06859988033e57c909f836b05da0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f80d6edc2f51546ff106bd9fb8d941bbe96aa77a","unresolved":false,"context_lines":[{"line_number":5672,"context_line":""},{"line_number":5673,"context_line":"    def test_filter_value_wider_than_field(self):"},{"line_number":5674,"context_line":"        \"\"\"If a filter value is given that\u0027s larger than the field in the"},{"line_number":5675,"context_line":"        backend then no values are returned."},{"line_number":5676,"context_line":"        \"\"\""},{"line_number":5677,"context_line":""},{"line_number":5678,"context_line":"        # Create some users just to make sure would return something if the"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_014d2c72","line":5675,"updated":"2015-04-10 16:15:12.000000000","message":"same comment here.","commit_id":"efb505be273f06859988033e57c909f836b05da0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f0fb352a1312b500f2bba92aa23f6947397b42f","unresolved":false,"context_lines":[{"line_number":5672,"context_line":""},{"line_number":5673,"context_line":"    def test_filter_value_wider_than_field(self):"},{"line_number":5674,"context_line":"        \"\"\"If a filter value is given that\u0027s larger than the field in the"},{"line_number":5675,"context_line":"        backend then no values are returned."},{"line_number":5676,"context_line":"        \"\"\""},{"line_number":5677,"context_line":""},{"line_number":5678,"context_line":"        # Create some users just to make sure would return something if the"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab921fb_6d7b2129","line":5675,"in_reply_to":"7aaa499b_014d2c72","updated":"2015-04-25 12:22:31.000000000","message":"Done","commit_id":"efb505be273f06859988033e57c909f836b05da0"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e8af711a116efea0d551158914143ae7b8fff243","unresolved":false,"context_lines":[{"line_number":5792,"context_line":"        self._delete_test_data(\u0027group\u0027, group_list)"},{"line_number":5793,"context_line":""},{"line_number":5794,"context_line":"    def _get_user_name_field_size(self):"},{"line_number":5795,"context_line":"        \"\"\"Return the size of the user name field for this backend."},{"line_number":5796,"context_line":""},{"line_number":5797,"context_line":"        Subclasses must override this method to return the size of the user"},{"line_number":5798,"context_line":"        name field for this backend."}],"source_content_type":"text/x-python","patch_set":6,"id":"9af37de9_d67240ad","line":5795,"updated":"2015-05-11 12:20:47.000000000","message":"which backend? maybe there should be \u0027the\u0027 instead of \u0027this\u0027 ?","commit_id":"3d5bfd21005f37411e7a8b8bc1f04896e1b64803"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"20b79c120d9269086459e028c09217e70e630195","unresolved":false,"context_lines":[{"line_number":5792,"context_line":"        self._delete_test_data(\u0027group\u0027, group_list)"},{"line_number":5793,"context_line":""},{"line_number":5794,"context_line":"    def _get_user_name_field_size(self):"},{"line_number":5795,"context_line":"        \"\"\"Return the size of the user name field for this backend."},{"line_number":5796,"context_line":""},{"line_number":5797,"context_line":"        Subclasses must override this method to return the size of the user"},{"line_number":5798,"context_line":"        name field for this backend."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_a430fe56","line":5795,"in_reply_to":"9af37de9_d67240ad","updated":"2015-05-30 14:41:35.000000000","message":"Done","commit_id":"3d5bfd21005f37411e7a8b8bc1f04896e1b64803"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e8af711a116efea0d551158914143ae7b8fff243","unresolved":false,"context_lines":[{"line_number":5795,"context_line":"        \"\"\"Return the size of the user name field for this backend."},{"line_number":5796,"context_line":""},{"line_number":5797,"context_line":"        Subclasses must override this method to return the size of the user"},{"line_number":5798,"context_line":"        name field for this backend."},{"line_number":5799,"context_line":""},{"line_number":5800,"context_line":"        \"\"\""},{"line_number":5801,"context_line":"        # For the base class, just pick some large-ish number."}],"source_content_type":"text/x-python","patch_set":6,"id":"9af37de9_3682ac53","line":5798,"updated":"2015-05-11 12:20:47.000000000","message":"Do they? If they really do why not enforce it? \nAs a check i removed overriding method from test_backend_sql and tests passed.","commit_id":"3d5bfd21005f37411e7a8b8bc1f04896e1b64803"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"20b79c120d9269086459e028c09217e70e630195","unresolved":false,"context_lines":[{"line_number":5795,"context_line":"        \"\"\"Return the size of the user name field for this backend."},{"line_number":5796,"context_line":""},{"line_number":5797,"context_line":"        Subclasses must override this method to return the size of the user"},{"line_number":5798,"context_line":"        name field for this backend."},{"line_number":5799,"context_line":""},{"line_number":5800,"context_line":"        \"\"\""},{"line_number":5801,"context_line":"        # For the base class, just pick some large-ish number."}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_c42d3aff","line":5798,"in_reply_to":"9af37de9_3682ac53","updated":"2015-05-30 14:41:35.000000000","message":"Done","commit_id":"3d5bfd21005f37411e7a8b8bc1f04896e1b64803"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e8af711a116efea0d551158914143ae7b8fff243","unresolved":false,"context_lines":[{"line_number":5799,"context_line":""},{"line_number":5800,"context_line":"        \"\"\""},{"line_number":5801,"context_line":"        # For the base class, just pick some large-ish number."},{"line_number":5802,"context_line":"        return 256"},{"line_number":5803,"context_line":""},{"line_number":5804,"context_line":"    def test_filter_value_wider_than_field(self):"},{"line_number":5805,"context_line":"        # If a filter value is given that\u0027s larger than the field in the"}],"source_content_type":"text/x-python","patch_set":6,"id":"9af37de9_5669b08a","line":5802,"updated":"2015-05-11 12:20:47.000000000","message":"Can we add some more docs to this method? It may be confusing why 256 was choosen (and not 257 or 512).","commit_id":"3d5bfd21005f37411e7a8b8bc1f04896e1b64803"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"20b79c120d9269086459e028c09217e70e630195","unresolved":false,"context_lines":[{"line_number":5799,"context_line":""},{"line_number":5800,"context_line":"        \"\"\""},{"line_number":5801,"context_line":"        # For the base class, just pick some large-ish number."},{"line_number":5802,"context_line":"        return 256"},{"line_number":5803,"context_line":""},{"line_number":5804,"context_line":"    def test_filter_value_wider_than_field(self):"},{"line_number":5805,"context_line":"        # If a filter value is given that\u0027s larger than the field in the"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_e4eb96a2","line":5802,"in_reply_to":"9af37de9_5669b08a","updated":"2015-05-30 14:41:35.000000000","message":"Done","commit_id":"3d5bfd21005f37411e7a8b8bc1f04896e1b64803"}]}
