)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"99f0819609d192fbae8aad45c40df11975e58679","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce oslo.versionedobjects to smaug"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce oslo.versionedobjects to smaug."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I03898954b46d32de31771bcd9f71be4c1937506e"},{"line_number":12,"context_line":"Closes-Bug: #1535595"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a68dd71_7053816d","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":41},"updated":"2016-01-26 15:58:26.000000000","message":"Why write the same thing twice.","commit_id":"e25a182b5ee0aec86b8ca50b264dae97b1708351"}],"smaug/db/sqlalchemy/api.py":[{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"99f0819609d192fbae8aad45c40df11975e58679","unresolved":false,"context_lines":[{"line_number":326,"context_line":"    return globals().get(method_name)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"_GET_METHODS \u003d {}"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a68dd71_70af012c","line":329,"range":{"start_line":329,"start_character":0,"end_line":329,"end_character":17},"updated":"2016-01-26 15:58:26.000000000","message":"Move to top of the file with the rest of the module global variables.","commit_id":"e25a182b5ee0aec86b8ca50b264dae97b1708351"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"300d88e206f1773fdb70d6888f6c9f292de768bb","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    # Exceptions to model to get methods, in general method names are a simple"},{"line_number":315,"context_line":"    # conversion changing ORM name from camel case to snake format and adding"},{"line_number":316,"context_line":"    # _get to the string"},{"line_number":317,"context_line":"    GET_EXCEPTIONS \u003d {}"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    if model in GET_EXCEPTIONS:"},{"line_number":320,"context_line":"        return GET_EXCEPTIONS[model]"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    # General conversion"},{"line_number":323,"context_line":"    # Convert camel cased model name to snake format"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_634bb52c","line":320,"range":{"start_line":317,"start_character":0,"end_line":320,"end_character":36},"updated":"2016-01-27 13:14:12.000000000","message":"When will model be in GET_EXCEPTIONS ?","commit_id":"512f8e2789714c0bcad2d96fa60dc0553a5522ec"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"2b9184b0265bd16428f7757cb56b3b133a3f8d73","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    # Exceptions to model to get methods, in general method names are a simple"},{"line_number":315,"context_line":"    # conversion changing ORM name from camel case to snake format and adding"},{"line_number":316,"context_line":"    # _get to the string"},{"line_number":317,"context_line":"    GET_EXCEPTIONS \u003d {}"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    if model in GET_EXCEPTIONS:"},{"line_number":320,"context_line":"        return GET_EXCEPTIONS[model]"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    # General conversion"},{"line_number":323,"context_line":"    # Convert camel cased model name to snake format"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_80a6c3bf","line":320,"range":{"start_line":317,"start_character":0,"end_line":320,"end_character":36},"in_reply_to":"7a5de9d1_634bb52c","updated":"2016-01-28 01:58:25.000000000","message":"Used in this case: the get method of resource don\u0027t meet the name rules. In smaug, I think we don\u0027t this exception conversion now. I will remove it.","commit_id":"512f8e2789714c0bcad2d96fa60dc0553a5522ec"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"300d88e206f1773fdb70d6888f6c9f292de768bb","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    s \u003d re.sub(\u0027(.)([A-Z][a-z]+)\u0027, r\u0027\\1_\\2\u0027, model.__name__)"},{"line_number":325,"context_line":"    # Get method must be snake formatted model name concatenated with _get"},{"line_number":326,"context_line":"    method_name \u003d re.sub(\u0027([a-z0-9])([A-Z])\u0027, r\u0027\\1_\\2\u0027, s).lower() + \u0027_get\u0027"},{"line_number":327,"context_line":"    return globals().get(method_name)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_e3032575","line":327,"range":{"start_line":327,"start_character":11,"end_line":327,"end_character":20},"updated":"2016-01-27 13:14:12.000000000","message":"Do we really want to get that information from the globals?","commit_id":"512f8e2789714c0bcad2d96fa60dc0553a5522ec"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"2b9184b0265bd16428f7757cb56b3b133a3f8d73","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    s \u003d re.sub(\u0027(.)([A-Z][a-z]+)\u0027, r\u0027\\1_\\2\u0027, model.__name__)"},{"line_number":325,"context_line":"    # Get method must be snake formatted model name concatenated with _get"},{"line_number":326,"context_line":"    method_name \u003d re.sub(\u0027([a-z0-9])([A-Z])\u0027, r\u0027\\1_\\2\u0027, s).lower() + \u0027_get\u0027"},{"line_number":327,"context_line":"    return globals().get(method_name)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_a0209ff8","line":327,"range":{"start_line":327,"start_character":11,"end_line":327,"end_character":20},"in_reply_to":"7a5de9d1_e3032575","updated":"2016-01-28 01:58:25.000000000","message":"globals()  Return the dictionary containing the current scope\u0027s global variables.  globals().get return the method symbol in the global variables, is a callable method. method_name is only the method name, is a string.So we need this conversion.","commit_id":"512f8e2789714c0bcad2d96fa60dc0553a5522ec"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"5e4f68891d178b34cb051fc92ab672db272f2f6b","unresolved":false,"context_lines":[{"line_number":323,"context_line":"def get_by_id(context, model, id, *args, **kwargs):"},{"line_number":324,"context_line":"    # Add get method to cache dictionary if it\u0027s not already there"},{"line_number":325,"context_line":"    if not _GET_METHODS.get(model):"},{"line_number":326,"context_line":"        _GET_METHODS[model] \u003d _get_get_method(model)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    return _GET_METHODS[model](context, id, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_0e40b6a4","line":326,"range":{"start_line":326,"start_character":30,"end_line":326,"end_character":45},"updated":"2016-01-28 11:03:06.000000000","message":"Sure the return value not None?","commit_id":"4b4fd472bc5e1c0da39430760006f50a67c00f75"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"1ec2e57a327168390a428c38a42fd2def424f04b","unresolved":false,"context_lines":[{"line_number":323,"context_line":"def get_by_id(context, model, id, *args, **kwargs):"},{"line_number":324,"context_line":"    # Add get method to cache dictionary if it\u0027s not already there"},{"line_number":325,"context_line":"    if not _GET_METHODS.get(model):"},{"line_number":326,"context_line":"        _GET_METHODS[model] \u003d _get_get_method(model)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    return _GET_METHODS[model](context, id, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_c02b0d93","line":326,"range":{"start_line":326,"start_character":30,"end_line":326,"end_character":45},"in_reply_to":"7a5de9d1_0e40b6a4","updated":"2016-02-01 01:55:40.000000000","message":"return a callable method or raise a exception here.     \nreturn globals().get(method_name)","commit_id":"4b4fd472bc5e1c0da39430760006f50a67c00f75"}]}
