)]}'
{"manila/api/common.py":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"8084204539fa0c53961ca0d7353fa83927fd1c55","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def get_pagination_params(request):"},{"line_number":70,"context_line":"    \"\"\"Return marker, limit offset tuple from request."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    :param request: `wsgi.Request` possibly containing \u0027marker\u0027 and \u0027limit\u0027"},{"line_number":73,"context_line":"                    GET variables. \u0027marker\u0027 is the id of the last element"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_bc7cc720","line":70,"updated":"2020-03-16 03:16:43.000000000","message":"NIT: limit,","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"887d328d78a8250c151db5adcd1eb7302d61e0ce","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def get_pagination_params(request):"},{"line_number":70,"context_line":"    \"\"\"Return marker, limit offset tuple from request."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    :param request: `wsgi.Request` possibly containing \u0027marker\u0027 and \u0027limit\u0027"},{"line_number":73,"context_line":"                    GET variables. \u0027marker\u0027 is the id of the last element"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_31f53eee","line":70,"in_reply_to":"1fa4df85_bc7cc720","updated":"2020-03-17 03:56:39.000000000","message":"A comma is missing.i will add it.","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"8084204539fa0c53961ca0d7353fa83927fd1c55","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    function."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    :param params: webob.multidict of request parameters (from"},{"line_number":201,"context_line":"                   cinder.api.openstack.wsgi.Request.params)"},{"line_number":202,"context_line":"    :param default_key: default sort key value, added to the list if no"},{"line_number":203,"context_line":"                        sort keys are supplied"},{"line_number":204,"context_line":"    :param default_dir: default sort dir value, added to the list if the"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_8e2ae3e4","line":201,"updated":"2020-03-16 03:16:43.000000000","message":"NIT. manila.api.openstack.wsgi.Request.params","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"887d328d78a8250c151db5adcd1eb7302d61e0ce","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    function."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    :param params: webob.multidict of request parameters (from"},{"line_number":201,"context_line":"                   cinder.api.openstack.wsgi.Request.params)"},{"line_number":202,"context_line":"    :param default_key: default sort key value, added to the list if no"},{"line_number":203,"context_line":"                        sort keys are supplied"},{"line_number":204,"context_line":"    :param default_dir: default sort dir value, added to the list if the"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_7130969f","line":201,"in_reply_to":"1fa4df85_8e2ae3e4","updated":"2020-03-17 03:56:39.000000000","message":"I optimized this function again, At present, we only support sort_key and sort_dir.","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        value \u003d strutils.validate_integer(value, name, min_value, max_value)"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    except ValueError as e:"},{"line_number":137,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dsix.text_type(e))"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def _validate_pagination_query(request, max_limit\u003dCONF.osapi_max_limit):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_1e2106fc","line":137,"range":{"start_line":137,"start_character":51,"end_line":137,"end_character":67},"updated":"2020-03-19 06:14:23.000000000","message":"don\u0027t need this conversion any longer, just use \u0027e\u0027","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        value \u003d strutils.validate_integer(value, name, min_value, max_value)"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    except ValueError as e:"},{"line_number":137,"context_line":"        raise webob.exc.HTTPBadRequest(explanation\u003dsix.text_type(e))"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def _validate_pagination_query(request, max_limit\u003dCONF.osapi_max_limit):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_13749c35","line":137,"range":{"start_line":137,"start_character":51,"end_line":137,"end_character":67},"in_reply_to":"1fa4df85_1e2106fc","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"}],"manila/api/openstack/api_version_request.py":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"8084204539fa0c53961ca0d7353fa83927fd1c55","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            method.end_version,"},{"line_number":228,"context_line":"                            method.experimental)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def matches(self, min_version, max_version\u003dNone, experimental\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Compares this version to the specified min/max range."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns whether the version object represents a version"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_ae16bfa6","line":230,"updated":"2020-03-16 03:16:43.000000000","message":"Why set max_version to None?","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"887d328d78a8250c151db5adcd1eb7302d61e0ce","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            method.end_version,"},{"line_number":228,"context_line":"                            method.experimental)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def matches(self, min_version, max_version\u003dNone, experimental\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Compares this version to the specified min/max range."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns whether the version object represents a version"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_f1c9e678","line":230,"in_reply_to":"1fa4df85_ae16bfa6","updated":"2020-03-17 03:56:39.000000000","message":"In general, most usage scenarios for this function are determines if the current API version is greater than the minimum version,so When using this function, we simply specify the minimum version, if we still take the maximum version as a required parameter, which is redundant.","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    * 2.51 - Added Share Network with multiple Subnets. Updated Share Networks"},{"line_number":141,"context_line":"             to handle with one or more subnets in different availability"},{"line_number":142,"context_line":"             zones."},{"line_number":143,"context_line":"    * 2.52 - Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages"},{"line_number":144,"context_line":"             filters, support query user messages within the specified time"},{"line_number":145,"context_line":"             period."},{"line_number":146,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_3e8de2d2","line":143,"range":{"start_line":143,"start_character":41,"end_line":143,"end_character":53},"updated":"2020-03-19 06:14:23.000000000","message":"created_since","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    * 2.51 - Added Share Network with multiple Subnets. Updated Share Networks"},{"line_number":141,"context_line":"             to handle with one or more subnets in different availability"},{"line_number":142,"context_line":"             zones."},{"line_number":143,"context_line":"    * 2.52 - Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages"},{"line_number":144,"context_line":"             filters, support query user messages within the specified time"},{"line_number":145,"context_line":"             period."},{"line_number":146,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_f38f8027","line":143,"range":{"start_line":143,"start_character":41,"end_line":143,"end_character":53},"in_reply_to":"1fa4df85_3e8de2d2","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"             to handle with one or more subnets in different availability"},{"line_number":142,"context_line":"             zones."},{"line_number":143,"context_line":"    * 2.52 - Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages"},{"line_number":144,"context_line":"             filters, support query user messages within the specified time"},{"line_number":145,"context_line":"             period."},{"line_number":146,"context_line":"\"\"\""},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_fec0aae2","line":144,"range":{"start_line":144,"start_character":30,"end_line":144,"end_character":35},"updated":"2020-03-19 06:14:23.000000000","message":"querying","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":141,"context_line":"             to handle with one or more subnets in different availability"},{"line_number":142,"context_line":"             zones."},{"line_number":143,"context_line":"    * 2.52 - Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages"},{"line_number":144,"context_line":"             filters, support query user messages within the specified time"},{"line_number":145,"context_line":"             period."},{"line_number":146,"context_line":"\"\"\""},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_b3858809","line":144,"range":{"start_line":144,"start_character":30,"end_line":144,"end_character":35},"in_reply_to":"1fa4df85_fec0aae2","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            method.end_version,"},{"line_number":228,"context_line":"                            method.experimental)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def matches(self, min_version, max_version\u003dNone, experimental\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Compares this version to the specified min/max range."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns whether the version object represents a version"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_5e245ec6","line":230,"range":{"start_line":230,"start_character":46,"end_line":230,"end_character":51},"updated":"2020-03-19 06:14:23.000000000","message":"No need to convert this to a kwarg, You shouldn\u0027t need to use this method directly, you can use relational operators...","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            method.end_version,"},{"line_number":228,"context_line":"                            method.experimental)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def matches(self, min_version, max_version\u003dNone, experimental\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Compares this version to the specified min/max range."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns whether the version object represents a version"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_f2e3dbd7","line":230,"range":{"start_line":230,"start_character":46,"end_line":230,"end_character":51},"updated":"2020-03-31 01:14:03.000000000","message":"You\u0027re not using this method directly anymore. Please revert this change to a kwarg..","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            method.end_version,"},{"line_number":228,"context_line":"                            method.experimental)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def matches(self, min_version, max_version\u003dNone, experimental\u003dFalse):"},{"line_number":231,"context_line":"        \"\"\"Compares this version to the specified min/max range."},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Returns whether the version object represents a version"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_1302a50b","line":230,"range":{"start_line":230,"start_character":46,"end_line":230,"end_character":51},"in_reply_to":"df33271e_f2e3dbd7","updated":"2020-04-01 06:08:53.000000000","message":"Done","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"2.52"},{"line_number":292,"context_line":"----"},{"line_number":293,"context_line":"  Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages api,"},{"line_number":294,"context_line":"  support query user messages within the specified time period."}],"source_content_type":"text/x-rst","patch_set":17,"id":"1fa4df85_9eb73687","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":42},"updated":"2020-03-19 06:14:23.000000000","message":"created_since","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":291,"context_line":"2.52"},{"line_number":292,"context_line":"----"},{"line_number":293,"context_line":"  Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages api,"},{"line_number":294,"context_line":"  support query user messages within the specified time period."}],"source_content_type":"text/x-rst","patch_set":17,"id":"1fa4df85_beba326b","line":294,"range":{"start_line":294,"start_character":10,"end_line":294,"end_character":15},"updated":"2020-03-19 06:14:23.000000000","message":"querying","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"2.52"},{"line_number":292,"context_line":"----"},{"line_number":293,"context_line":"  Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages api,"},{"line_number":294,"context_line":"  support query user messages within the specified time period."}],"source_content_type":"text/x-rst","patch_set":21,"id":"df33271e_0d30de9e","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":42},"updated":"2020-03-31 01:14:03.000000000","message":"created_since","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"2.52"},{"line_number":292,"context_line":"----"},{"line_number":293,"context_line":"  Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages api,"},{"line_number":294,"context_line":"  support query user messages within the specified time period."}],"source_content_type":"text/x-rst","patch_set":21,"id":"df33271e_5320adac","line":293,"range":{"start_line":293,"start_character":30,"end_line":293,"end_character":42},"in_reply_to":"df33271e_0d30de9e","updated":"2020-04-01 06:08:53.000000000","message":"I\u0027m sorry I was careless, Done.","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":291,"context_line":"2.52"},{"line_number":292,"context_line":"----"},{"line_number":293,"context_line":"  Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages api,"},{"line_number":294,"context_line":"  support query user messages within the specified time period."}],"source_content_type":"text/x-rst","patch_set":21,"id":"df33271e_ed349a95","line":294,"range":{"start_line":294,"start_character":10,"end_line":294,"end_character":15},"updated":"2020-03-31 01:14:03.000000000","message":"querying","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":291,"context_line":"2.52"},{"line_number":292,"context_line":"----"},{"line_number":293,"context_line":"  Added \u0027created_before\u0027 and \u0027create_since\u0027 field to list messages api,"},{"line_number":294,"context_line":"  support query user messages within the specified time period."}],"source_content_type":"text/x-rst","patch_set":21,"id":"df33271e_b3113960","line":294,"range":{"start_line":294,"start_character":10,"end_line":294,"end_character":15},"in_reply_to":"df33271e_ed349a95","updated":"2020-04-01 06:08:53.000000000","message":"Done","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"}],"manila/api/v2/messages.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        filters \u003d req.params.copy()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":84,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":85,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_9e13b666","line":84,"range":{"start_line":84,"start_character":7,"end_line":84,"end_character":21},"updated":"2020-03-19 06:14:23.000000000","message":"don\u0027t you want to remove limit, offset, sort_key and sort_dir from your filters variable?","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        filters \u003d req.params.copy()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":84,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":85,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_94d077cb","line":84,"range":{"start_line":84,"start_character":7,"end_line":84,"end_character":21},"in_reply_to":"1fa4df85_9e13b666","updated":"2020-03-20 02:08:52.000000000","message":"i will add pop to remore limit, offset from filters.\nsort_key and sort_dir will be removed in below funtion of get_sort_params. so we no need to remove again.","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":85,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"},{"line_number":88,"context_line":"            for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":89,"context_line":"                if time_comparison_filter in filters:"},{"line_number":90,"context_line":"                    time \u003d filters.get(time_comparison_filter)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_7e5a7a50","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":60},"updated":"2020-03-19 06:14:23.000000000","message":"you can use comparison operators:\n\n if req.api_version_request \u003e\u003d api_version.APIVersionRequest(MESSAGES_QUERY_BY_TIMESTAMP)","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":85,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"},{"line_number":88,"context_line":"            for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":89,"context_line":"                if time_comparison_filter in filters:"},{"line_number":90,"context_line":"                    time \u003d filters.get(time_comparison_filter)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_d4bd8f68","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":60},"in_reply_to":"1fa4df85_7e5a7a50","updated":"2020-03-20 02:08:52.000000000","message":"What are the problems with current comparison operation?","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"},{"line_number":88,"context_line":"            for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":89,"context_line":"                if time_comparison_filter in filters:"},{"line_number":90,"context_line":"                    time \u003d filters.get(time_comparison_filter)"},{"line_number":91,"context_line":"                    try:"},{"line_number":92,"context_line":"                        parsed_time \u003d timeutils.parse_isotime(time)"},{"line_number":93,"context_line":"                    except ValueError:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_7e1fda6f","line":90,"range":{"start_line":90,"start_character":20,"end_line":90,"end_character":24},"updated":"2020-03-19 06:14:23.000000000","message":"\"time\" is a builtin library, please use a different variable name for readability","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"},{"line_number":88,"context_line":"            for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":89,"context_line":"                if time_comparison_filter in filters:"},{"line_number":90,"context_line":"                    time \u003d filters.get(time_comparison_filter)"},{"line_number":91,"context_line":"                    try:"},{"line_number":92,"context_line":"                        parsed_time \u003d timeutils.parse_isotime(time)"},{"line_number":93,"context_line":"                    except ValueError:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_94b71787","line":90,"range":{"start_line":90,"start_character":20,"end_line":90,"end_character":24},"in_reply_to":"1fa4df85_7e1fda6f","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    try:"},{"line_number":92,"context_line":"                        parsed_time \u003d timeutils.parse_isotime(time)"},{"line_number":93,"context_line":"                    except ValueError:"},{"line_number":94,"context_line":"                        msg \u003d _(\u0027Invalid %s value\u0027) % time"},{"line_number":95,"context_line":"                        raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"                    filters[time_comparison_filter] \u003d parsed_time"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_1e2ee6a4","line":94,"range":{"start_line":94,"start_character":54,"end_line":94,"end_character":58},"updated":"2020-03-19 06:14:23.000000000","message":"Can we format the error message a bit more clearly, like this:\n\n  Invalid value specified for the query key \"%(time_comparison_filter)s\": %(value)s","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    try:"},{"line_number":92,"context_line":"                        parsed_time \u003d timeutils.parse_isotime(time)"},{"line_number":93,"context_line":"                    except ValueError:"},{"line_number":94,"context_line":"                        msg \u003d _(\u0027Invalid %s value\u0027) % time"},{"line_number":95,"context_line":"                        raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"                    filters[time_comparison_filter] \u003d parsed_time"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_34542321","line":94,"range":{"start_line":94,"start_character":54,"end_line":94,"end_character":58},"in_reply_to":"1fa4df85_1e2ee6a4","updated":"2020-03-20 02:08:52.000000000","message":"yes, it looks better.","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @wsgi.Controller.api_version(MESSAGES_BASE_MICRO_VERSION)"},{"line_number":76,"context_line":"    @wsgi.Controller.authorize(\u0027get_all\u0027)"},{"line_number":77,"context_line":"    def index(self, req):"},{"line_number":78,"context_line":"        \"\"\"Returns a list of messages, transformed through view builder.\"\"\""},{"line_number":79,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":80,"context_line":"        api_version \u003d req.api_version_request"},{"line_number":81,"context_line":"        filters \u003d req.params.copy()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":84,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":85,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"},{"line_number":88,"context_line":"            for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":89,"context_line":"                if time_comparison_filter in filters:"},{"line_number":90,"context_line":"                    time \u003d filters.get(time_comparison_filter)"},{"line_number":91,"context_line":"                    try:"},{"line_number":92,"context_line":"                        parsed_time \u003d timeutils.parse_isotime(time)"},{"line_number":93,"context_line":"                    except ValueError:"},{"line_number":94,"context_line":"                        msg \u003d _(\u0027Invalid %s value\u0027) % time"},{"line_number":95,"context_line":"                        raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"                    filters[time_comparison_filter] \u003d parsed_time"},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            filters.pop(\u0027created_since\u0027, None)"},{"line_number":100,"context_line":"            filters.pop(\u0027created_before\u0027, None)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        messages \u003d self.message_api.get_all(context, search_opts\u003dfilters,"},{"line_number":103,"context_line":"                                            limit\u003dlimit,"},{"line_number":104,"context_line":"                                            offset\u003doffset,"},{"line_number":105,"context_line":"                                            sort_key\u003dsort_key,"},{"line_number":106,"context_line":"                                            sort_dir\u003dsort_dir)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return self._view_builder.index(req, messages)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_fe33ca11","line":108,"range":{"start_line":77,"start_character":0,"end_line":108,"end_character":54},"updated":"2020-03-19 06:14:23.000000000","message":"please create two methods, code looks cleaner and much more consistent with other API methods... \n\nSee example here: https://opendev.org/openstack/manila/src/commit/3e855d5f60d19dc0ce96fe0e561891e98f75557b/manila/api/v2/share_export_locations.py#L71-L80","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @wsgi.Controller.api_version(MESSAGES_BASE_MICRO_VERSION)"},{"line_number":76,"context_line":"    @wsgi.Controller.authorize(\u0027get_all\u0027)"},{"line_number":77,"context_line":"    def index(self, req):"},{"line_number":78,"context_line":"        \"\"\"Returns a list of messages, transformed through view builder.\"\"\""},{"line_number":79,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":80,"context_line":"        api_version \u003d req.api_version_request"},{"line_number":81,"context_line":"        filters \u003d req.params.copy()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":84,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":85,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version.matches(MESSAGES_QUERY_BY_TIMESTAMP):"},{"line_number":88,"context_line":"            for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":89,"context_line":"                if time_comparison_filter in filters:"},{"line_number":90,"context_line":"                    time \u003d filters.get(time_comparison_filter)"},{"line_number":91,"context_line":"                    try:"},{"line_number":92,"context_line":"                        parsed_time \u003d timeutils.parse_isotime(time)"},{"line_number":93,"context_line":"                    except ValueError:"},{"line_number":94,"context_line":"                        msg \u003d _(\u0027Invalid %s value\u0027) % time"},{"line_number":95,"context_line":"                        raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"                    filters[time_comparison_filter] \u003d parsed_time"},{"line_number":98,"context_line":"        else:"},{"line_number":99,"context_line":"            filters.pop(\u0027created_since\u0027, None)"},{"line_number":100,"context_line":"            filters.pop(\u0027created_before\u0027, None)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        messages \u003d self.message_api.get_all(context, search_opts\u003dfilters,"},{"line_number":103,"context_line":"                                            limit\u003dlimit,"},{"line_number":104,"context_line":"                                            offset\u003doffset,"},{"line_number":105,"context_line":"                                            sort_key\u003dsort_key,"},{"line_number":106,"context_line":"                                            sort_dir\u003dsort_dir)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return self._view_builder.index(req, messages)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_6fd72651","line":108,"range":{"start_line":77,"start_character":0,"end_line":108,"end_character":54},"in_reply_to":"1fa4df85_fe33ca11","updated":"2020-03-20 02:08:52.000000000","message":"yes, it will looks better.","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":83,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":84,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":85,"context_line":"        filters.pop(\u0027limit\u0027, None)"},{"line_number":86,"context_line":"        filters.pop(\u0027offset\u0027, None)"},{"line_number":87,"context_line":"        filters.pop(\u0027created_since\u0027, None)"},{"line_number":88,"context_line":"        filters.pop(\u0027created_before\u0027, None)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_cd6b9682","line":86,"range":{"start_line":85,"start_character":0,"end_line":86,"end_character":35},"updated":"2020-03-31 01:14:03.000000000","message":"You don\u0027t need to pop these here.. These will be ignored by the exact_filter db utility method.. https://opendev.org/openstack/manila/src/commit/947315f0903c823b0fdd9d99c60078814587272c/manila/db/sqlalchemy/api.py#L270-L274","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":83,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":84,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":85,"context_line":"        filters.pop(\u0027limit\u0027, None)"},{"line_number":86,"context_line":"        filters.pop(\u0027offset\u0027, None)"},{"line_number":87,"context_line":"        filters.pop(\u0027created_since\u0027, None)"},{"line_number":88,"context_line":"        filters.pop(\u0027created_before\u0027, None)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_73a211b0","line":86,"range":{"start_line":85,"start_character":0,"end_line":86,"end_character":35},"in_reply_to":"df33271e_cd6b9682","updated":"2020-04-01 06:08:53.000000000","message":"yes, there is no need.","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        return self._view_builder.index(req, messages)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(MESSAGES_QUERY_BY_TIMESTAMP)   # noqa: F811"},{"line_number":99,"context_line":"    @wsgi.Controller.authorize(\u0027get_all\u0027)                       # noqa: F811"},{"line_number":100,"context_line":"    def index(self, req):                 # pylint: disable\u003dfunction-redefined"},{"line_number":101,"context_line":"        \"\"\"Returns a list of messages, transformed through view builder.\"\"\""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_2d2b2230","line":99,"range":{"start_line":99,"start_character":64,"end_line":99,"end_character":76},"updated":"2020-03-31 01:14:03.000000000","message":"This shouldn\u0027t need #noqa..","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        return self._view_builder.index(req, messages)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(MESSAGES_QUERY_BY_TIMESTAMP)   # noqa: F811"},{"line_number":99,"context_line":"    @wsgi.Controller.authorize(\u0027get_all\u0027)                       # noqa: F811"},{"line_number":100,"context_line":"    def index(self, req):                 # pylint: disable\u003dfunction-redefined"},{"line_number":101,"context_line":"        \"\"\"Returns a list of messages, transformed through view builder.\"\"\""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_738b311e","line":99,"range":{"start_line":99,"start_character":64,"end_line":99,"end_character":76},"in_reply_to":"df33271e_2d2b2230","updated":"2020-04-01 06:08:53.000000000","message":"Done","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(MESSAGES_QUERY_BY_TIMESTAMP)   # noqa: F811"},{"line_number":99,"context_line":"    @wsgi.Controller.authorize(\u0027get_all\u0027)                       # noqa: F811"},{"line_number":100,"context_line":"    def index(self, req):                 # pylint: disable\u003dfunction-redefined"},{"line_number":101,"context_line":"        \"\"\"Returns a list of messages, transformed through view builder.\"\"\""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":103,"context_line":"        filters \u003d req.params.copy()"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_8dd18e26","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":4},"updated":"2020-03-31 01:14:03.000000000","message":"This method isn\u0027t unit tested: https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_50a/706438/21/check/openstack-tox-cover/50aa677/cover/manila_api_v2_messages_py.html#t98","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(MESSAGES_QUERY_BY_TIMESTAMP)   # noqa: F811"},{"line_number":99,"context_line":"    @wsgi.Controller.authorize(\u0027get_all\u0027)                       # noqa: F811"},{"line_number":100,"context_line":"    def index(self, req):                 # pylint: disable\u003dfunction-redefined"},{"line_number":101,"context_line":"        \"\"\"Returns a list of messages, transformed through view builder.\"\"\""},{"line_number":102,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":103,"context_line":"        filters \u003d req.params.copy()"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_d322fdb8","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":4},"in_reply_to":"df33271e_8dd18e26","updated":"2020-04-01 06:08:53.000000000","message":"yes, i have added unit test,\nmanila/tests/api/v2/test_messages.py---\u003edef test_index_with_created_since_and_created_before(self):","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":106,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":107,"context_line":"        filters.pop(\u0027limit\u0027, None)"},{"line_number":108,"context_line":"        filters.pop(\u0027offset\u0027, None)"},{"line_number":109,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_0d073ecc","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":35},"updated":"2020-03-31 01:14:03.000000000","message":"Same comment as above..","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        params \u003d common.get_pagination_params(req)"},{"line_number":106,"context_line":"        limit, offset \u003d [params.get(\u0027limit\u0027), params.get(\u0027offset\u0027)]"},{"line_number":107,"context_line":"        filters.pop(\u0027limit\u0027, None)"},{"line_number":108,"context_line":"        filters.pop(\u0027offset\u0027, None)"},{"line_number":109,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(filters)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_1372a549","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":35},"in_reply_to":"df33271e_0d073ecc","updated":"2020-04-01 06:08:53.000000000","message":"Done","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"8084204539fa0c53961ca0d7353fa83927fd1c55","unresolved":false,"context_lines":[{"line_number":5275,"context_line":"    if filters:"},{"line_number":5276,"context_line":"        for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":5277,"context_line":"            if filters.get(time_comparison_filter, None):"},{"line_number":5278,"context_line":"                time_filter_dict[time_comparison_filter] \u003d \\"},{"line_number":5279,"context_line":"                    filters.get(time_comparison_filter)"},{"line_number":5280,"context_line":"                filters.pop(time_comparison_filter)"},{"line_number":5281,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_0e6cb334","line":5278,"updated":"2020-03-16 03:16:43.000000000","message":"NIT. use () instead of \\ for breaking lines. Preferred style as per https://docs.openstack.org/hacking/latest/user/hacking.html#general","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"887d328d78a8250c151db5adcd1eb7302d61e0ce","unresolved":false,"context_lines":[{"line_number":5275,"context_line":"    if filters:"},{"line_number":5276,"context_line":"        for time_comparison_filter in [\u0027created_since\u0027, \u0027created_before\u0027]:"},{"line_number":5277,"context_line":"            if filters.get(time_comparison_filter, None):"},{"line_number":5278,"context_line":"                time_filter_dict[time_comparison_filter] \u003d \\"},{"line_number":5279,"context_line":"                    filters.get(time_comparison_filter)"},{"line_number":5280,"context_line":"                filters.pop(time_comparison_filter)"},{"line_number":5281,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_f18ec630","line":5278,"in_reply_to":"1fa4df85_0e6cb334","updated":"2020-03-17 03:56:39.000000000","message":"ok, Thank you for your suggestion.","commit_id":"7cefe96f06d34280127c95b77b18f0879e57059f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":5291,"context_line":"                      time_comparison_filter)"},{"line_number":5292,"context_line":"            return None"},{"line_number":5293,"context_line":""},{"line_number":5294,"context_line":"        query \u003d query.filter_by(**filters)"},{"line_number":5295,"context_line":"    return query"},{"line_number":5296,"context_line":""},{"line_number":5297,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_d975c899","line":5294,"range":{"start_line":5294,"start_character":8,"end_line":5294,"end_character":42},"updated":"2020-03-19 06:14:23.000000000","message":"You\u0027re replacing the use of the method \"exact_filter\" with this. So you\u0027re losing the ability to perform queries with \"in\" operator - see: https://opendev.org/openstack/manila/src/commit/947315f0903c823b0fdd9d99c60078814587272c/manila/db/sqlalchemy/api.py#L268-L289\n\n\n\nCan you think of a way you can add this logic to the exact_filter method itself? That way we can reuse it across queries later on...  you\u0027re only adding two new filters, so you can rewrite the exact_filter method to be like this: http://paste.openstack.org/show/790865/\n\nWhat do you think?","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":5291,"context_line":"                      time_comparison_filter)"},{"line_number":5292,"context_line":"            return None"},{"line_number":5293,"context_line":""},{"line_number":5294,"context_line":"        query \u003d query.filter_by(**filters)"},{"line_number":5295,"context_line":"    return query"},{"line_number":5296,"context_line":""},{"line_number":5297,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_73e4f00d","line":5294,"range":{"start_line":5294,"start_character":8,"end_line":5294,"end_character":42},"in_reply_to":"1fa4df85_d975c899","updated":"2020-03-20 02:08:52.000000000","message":"yes, i will add this logic to exact_fileter method, so we can reuse it later.","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":5249,"context_line":"    :param filters: dictionary of filters; values that are in lists, tuples,"},{"line_number":5250,"context_line":"                    or sets cause an \u0027IN\u0027 operation, while exact matching"},{"line_number":5251,"context_line":"                    is used for other values, see"},{"line_number":5252,"context_line":"                    _process_messages_filters function for more"},{"line_number":5253,"context_line":"                    information"},{"line_number":5254,"context_line":"    :returns: list of matching messages"},{"line_number":5255,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_ad1612f0","line":5252,"range":{"start_line":5252,"start_character":20,"end_line":5252,"end_character":45},"updated":"2020-03-31 01:14:03.000000000","message":"\"exact_filter\"","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":5249,"context_line":"    :param filters: dictionary of filters; values that are in lists, tuples,"},{"line_number":5250,"context_line":"                    or sets cause an \u0027IN\u0027 operation, while exact matching"},{"line_number":5251,"context_line":"                    is used for other values, see"},{"line_number":5252,"context_line":"                    _process_messages_filters function for more"},{"line_number":5253,"context_line":"                    information"},{"line_number":5254,"context_line":"    :returns: list of matching messages"},{"line_number":5255,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_4e53e017","line":5252,"range":{"start_line":5252,"start_character":20,"end_line":5252,"end_character":45},"in_reply_to":"df33271e_ad1612f0","updated":"2020-04-01 06:08:53.000000000","message":"Done","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[{"line_number":5266,"context_line":"                             \u0027action_id\u0027, \u0027detail_id\u0027, \u0027message_level\u0027,"},{"line_number":5267,"context_line":"                             \u0027created_since\u0027, \u0027created_before\u0027)"},{"line_number":5268,"context_line":""},{"line_number":5269,"context_line":"        if not filters:"},{"line_number":5270,"context_line":"            filters \u003d {}"},{"line_number":5271,"context_line":"        else:"},{"line_number":5272,"context_line":"            for key in filters:"},{"line_number":5273,"context_line":"                if key not in legal_filter_keys:"},{"line_number":5274,"context_line":"                    filters.pop(key)"},{"line_number":5275,"context_line":""},{"line_number":5276,"context_line":"        query \u003d exact_filter(query, messages, filters, legal_filter_keys)"},{"line_number":5277,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_4d3f8686","line":5274,"range":{"start_line":5269,"start_character":0,"end_line":5274,"end_character":36},"updated":"2020-03-31 01:14:03.000000000","message":"the exact_filter method is taking care of ignoring these invalid keys..","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[{"line_number":5266,"context_line":"                             \u0027action_id\u0027, \u0027detail_id\u0027, \u0027message_level\u0027,"},{"line_number":5267,"context_line":"                             \u0027created_since\u0027, \u0027created_before\u0027)"},{"line_number":5268,"context_line":""},{"line_number":5269,"context_line":"        if not filters:"},{"line_number":5270,"context_line":"            filters \u003d {}"},{"line_number":5271,"context_line":"        else:"},{"line_number":5272,"context_line":"            for key in filters:"},{"line_number":5273,"context_line":"                if key not in legal_filter_keys:"},{"line_number":5274,"context_line":"                    filters.pop(key)"},{"line_number":5275,"context_line":""},{"line_number":5276,"context_line":"        query \u003d exact_filter(query, messages, filters, legal_filter_keys)"},{"line_number":5277,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_0e171847","line":5274,"range":{"start_line":5269,"start_character":0,"end_line":5274,"end_character":36},"in_reply_to":"df33271e_4d3f8686","updated":"2020-04-01 06:08:53.000000000","message":"yes, there is no need to check again.","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"}],"manila/db/sqlalchemy/utils.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    try:"},{"line_number":44,"context_line":"        sort_key_attr \u003d getattr(model, sort_key)"},{"line_number":45,"context_line":"    except AttributeError:"},{"line_number":46,"context_line":"        raise exception.InvalidInput(reason\u003d\u0027Invalid sort key\u0027)"},{"line_number":47,"context_line":"    if sort_dir \u003d\u003d \u0027desc\u0027:"},{"line_number":48,"context_line":"        query \u003d query.order_by(sqlalchemy.desc(sort_key_attr))"},{"line_number":49,"context_line":"    elif sort_dir \u003d\u003d \u0027asc\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_1954c0c9","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":61},"updated":"2020-03-19 06:14:23.000000000","message":"Invalid sort key %s\n\n^ return the key being used","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    try:"},{"line_number":44,"context_line":"        sort_key_attr \u003d getattr(model, sort_key)"},{"line_number":45,"context_line":"    except AttributeError:"},{"line_number":46,"context_line":"        raise exception.InvalidInput(reason\u003d\u0027Invalid sort key\u0027)"},{"line_number":47,"context_line":"    if sort_dir \u003d\u003d \u0027desc\u0027:"},{"line_number":48,"context_line":"        query \u003d query.order_by(sqlalchemy.desc(sort_key_attr))"},{"line_number":49,"context_line":"    elif sort_dir \u003d\u003d \u0027asc\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_93a72cbd","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":61},"in_reply_to":"1fa4df85_1954c0c9","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"811e5d6a80e9d17cffbad56b538190c778f39206","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"df33271e_2de042fa","updated":"2020-03-31 01:14:03.000000000","message":"This file hasn\u0027t been sufficiently unit tested, please see the unit test report here: https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_50a/706438/21/check/openstack-tox-cover/50aa677/cover/manila_db_sqlalchemy_utils_py.html","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"11753916716c4b256d9e55492501800f5571e628","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"df33271e_09df12d6","in_reply_to":"df33271e_2de042fa","updated":"2020-04-01 06:08:53.000000000","message":"i have added some unit test to cover this file.\nmanila/tests/db/sqlalchemy/test_api.py--\u003e\ntest_message_get_all_with_invalid_sort_key()\ntest_message_get_all_sorted_asc()\ntest_message_get_all_with_limit_and_offset()","commit_id":"2f685f7977b180c13e95cdf53318ef3616410d32"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4602100db8303429304b7872f41f54236f51cc4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    :param model: the ORM model class"},{"line_number":25,"context_line":"    :param limit: maximum number of items to return"},{"line_number":26,"context_line":"    :param sort_key: attributes by which results should be sorted, default is"},{"line_number":27,"context_line":"                      create_at"},{"line_number":28,"context_line":"    :param sort_dir: direction in which results should be sorted (asc, desc)"},{"line_number":29,"context_line":"    :param offset: the number of items to skip from the marker or from the"},{"line_number":30,"context_line":"                    first element."}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_0bf7f38c","line":27,"range":{"start_line":27,"start_character":22,"end_line":27,"end_character":31},"updated":"2020-04-02 02:50:26.000000000","message":"created_at","commit_id":"3b68da736838152ef179b33f1d2bd2fc179743d2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ec777c94a1564094b80cc862d60da594c07200b8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    :param model: the ORM model class"},{"line_number":25,"context_line":"    :param limit: maximum number of items to return"},{"line_number":26,"context_line":"    :param sort_key: attributes by which results should be sorted, default is"},{"line_number":27,"context_line":"                      create_at"},{"line_number":28,"context_line":"    :param sort_dir: direction in which results should be sorted (asc, desc)"},{"line_number":29,"context_line":"    :param offset: the number of items to skip from the marker or from the"},{"line_number":30,"context_line":"                    first element."}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_14270f66","line":27,"range":{"start_line":27,"start_character":22,"end_line":27,"end_character":31},"in_reply_to":"df33271e_0bf7f38c","updated":"2020-04-02 03:08:22.000000000","message":"Done","commit_id":"3b68da736838152ef179b33f1d2bd2fc179743d2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4602100db8303429304b7872f41f54236f51cc4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        raise exception.InvalidInput(reason\u003d\u0027Invalid sort key %s\u0027 % sort_key)"},{"line_number":40,"context_line":"    if sort_dir \u003d\u003d \u0027desc\u0027:"},{"line_number":41,"context_line":"        query \u003d query.order_by(sqlalchemy.desc(sort_key_attr))"},{"line_number":42,"context_line":"    elif sort_dir \u003d\u003d \u0027asc\u0027:"},{"line_number":43,"context_line":"        query \u003d query.order_by(sqlalchemy.asc(sort_key_attr))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    if limit is not None:"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_0b3c132d","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":26},"updated":"2020-04-02 02:50:26.000000000","message":"nit: else","commit_id":"3b68da736838152ef179b33f1d2bd2fc179743d2"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ec777c94a1564094b80cc862d60da594c07200b8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        raise exception.InvalidInput(reason\u003d\u0027Invalid sort key %s\u0027 % sort_key)"},{"line_number":40,"context_line":"    if sort_dir \u003d\u003d \u0027desc\u0027:"},{"line_number":41,"context_line":"        query \u003d query.order_by(sqlalchemy.desc(sort_key_attr))"},{"line_number":42,"context_line":"    elif sort_dir \u003d\u003d \u0027asc\u0027:"},{"line_number":43,"context_line":"        query \u003d query.order_by(sqlalchemy.asc(sort_key_attr))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    if limit is not None:"}],"source_content_type":"text/x-python","patch_set":24,"id":"df33271e_f429cb36","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":26},"in_reply_to":"df33271e_0b3c132d","updated":"2020-04-02 03:08:22.000000000","message":"Done","commit_id":"3b68da736838152ef179b33f1d2bd2fc179743d2"}],"manila/tests/db/sqlalchemy/test_api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":3626,"context_line":"                                        filters\u003d{\u0027action_id\u0027: \u0027002\u0027})"},{"line_number":3627,"context_line":""},{"line_number":3628,"context_line":"        self.assertEqual(2, len(result))"},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"    def test_message_get_all_sorted(self):"},{"line_number":3631,"context_line":"        ids \u003d []"},{"line_number":3632,"context_line":"        for i in [\u0027003\u0027, \u0027002\u0027, \u0027001\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_59731881","line":3629,"range":{"start_line":3629,"start_character":0,"end_line":3629,"end_character":0},"updated":"2020-03-19 06:14:23.000000000","message":"Please add unit tests for \"created_since\" and \"created_before\"","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":3626,"context_line":"                                        filters\u003d{\u0027action_id\u0027: \u0027002\u0027})"},{"line_number":3627,"context_line":""},{"line_number":3628,"context_line":"        self.assertEqual(2, len(result))"},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"    def test_message_get_all_sorted(self):"},{"line_number":3631,"context_line":"        ids \u003d []"},{"line_number":3632,"context_line":"        for i in [\u0027003\u0027, \u0027002\u0027, \u0027001\u0027]:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1fa4df85_a8b2e592","line":3629,"range":{"start_line":3629,"start_character":0,"end_line":3629,"end_character":0},"in_reply_to":"1fa4df85_59731881","updated":"2020-03-20 02:08:52.000000000","message":"i will add.","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"}],"releasenotes/notes/bp-support-query-user-message-by-timestamp-c0a02b3b3e337e12.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add ``created_since`` and ``created_before`` to messages list API, user"},{"line_number":4,"context_line":"    messages can be queried by stimestamp with API version ``2.52`` and"},{"line_number":5,"context_line":"    beyond."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_196da097","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":70},"updated":"2020-03-19 06:14:23.000000000","message":"Remove","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add ``created_since`` and ``created_before`` to messages list API, user"},{"line_number":4,"context_line":"    messages can be queried by stimestamp with API version ``2.52`` and"},{"line_number":5,"context_line":"    beyond."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_b39a685f","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":70},"in_reply_to":"1fa4df85_196da097","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ebf0c9a0cd49130f13b3324cda8d82bb0a64292a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add ``created_since`` and ``created_before`` to messages list API, user"},{"line_number":4,"context_line":"    messages can be queried by stimestamp with API version ``2.52`` and"},{"line_number":5,"context_line":"    beyond."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_39689c85","line":5,"range":{"start_line":3,"start_character":72,"end_line":5,"end_character":11},"updated":"2020-03-19 06:14:23.000000000","message":"User messages can be queried by timestamp with query keys ``created_since`` and ``created_before`` starting with API version ``2.52``.","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2fd0b065d7f9feb4a92dcc7b4fc2944b7bba3355","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add ``created_since`` and ``created_before`` to messages list API, user"},{"line_number":4,"context_line":"    messages can be queried by stimestamp with API version ``2.52`` and"},{"line_number":5,"context_line":"    beyond."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1fa4df85_f3bd40b7","line":5,"range":{"start_line":3,"start_character":72,"end_line":5,"end_character":11},"in_reply_to":"1fa4df85_39689c85","updated":"2020-03-20 02:08:52.000000000","message":"Done","commit_id":"3859d5166b01d5c611bd39bca0fae35bf2fa78a6"}]}
