)]}'
{"glance/api/v1/images.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"65d32a2625691054269586618192238b19c37bf7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"def _validate_time(req, values):"},{"line_number":73,"context_line":"    \"\"\"Validates time formats created_at and deleted_at"},{"line_number":74,"context_line":"    Introduced to add modularity."},{"line_number":75,"context_line":"    mage-meta-created_at"},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    try:"},{"line_number":78,"context_line":"        if \u0027created_at\u0027 in values and values[\u0027created_at\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_a9a9807d","line":75,"updated":"2015-11-20 17:25:25.000000000","message":"Looks like there\u0027s some leftover stuff in the docstring.  Also, you might want to mention updated_at since your code handles that field, too.","commit_id":"03283e2fe45af0470ca1ff4874e45af649ab9544"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"39937f337240c7eaf6c4e06fd64bf7f52e63bc37","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    here. This was introduced to keep modularity."},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    try:"},{"line_number":78,"context_line":"        if \u0027created_at\u0027 in values and values[\u0027created_at\u0027]:"},{"line_number":79,"context_line":"            time \u003d timeutils.parse_isotime(values[\u0027created_at\u0027])"},{"line_number":80,"context_line":"            values[\u0027created_at\u0027] \u003d time.strftime(timeutils.PERFECT_TIME_FORMAT)"},{"line_number":81,"context_line":"        if \u0027updated_at\u0027 in values and values[\u0027updated_at\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_0e520768","line":78,"updated":"2015-11-24 19:49:45.000000000","message":"Sorry for the nitpick but, could you make this something like:\n\n    for field in [\u0027created_at\u0027, ...]:\n        if values.get(field) is not None:\n            try:\n                ....\n            except ValueError:\n                ...","commit_id":"e0241d8311c28cd992f79ad7c82fcf166a9a1089"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"0b3c2f25b57e10f70f31bc801c0f3a411530f348","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    here. This was introduced to keep modularity."},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    for time_field in [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027]:"},{"line_number":78,"context_line":"        if time_field in values and values[time_field]:"},{"line_number":79,"context_line":"            try:"},{"line_number":80,"context_line":"                time \u003d timeutils.parse_isotime(values[time_field])"},{"line_number":81,"context_line":"                values[time_field] \u003d time.strftime("}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_1fa63453","line":78,"updated":"2015-11-26 17:59:57.000000000","message":"nit: this could be:\n\n    if values.get(time_field):\n        ....","commit_id":"4c486d470d064493f420fa0b0c278833d73a3567"}],"glance/tests/unit/v1/test_api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b7fe140db1dd1106fcb7497340ec0e57b73de9f6","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        fixture_headers \u003d {\u0027x-image-meta-store\u0027: \u0027file\u0027,"},{"line_number":197,"context_line":"                           \u0027x-image-meta-disk-format\u0027: \u0027vhd\u0027,"},{"line_number":198,"context_line":"                           \u0027x-image-meta-container-format\u0027: \u0027ovf\u0027,"},{"line_number":199,"context_line":"                           \u0027x-image-meta-created_at\u0027: \u00271100\u0027,"},{"line_number":200,"context_line":"                           \u0027x-image-meta-name\u0027: \u0027fake image #3\u0027}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        req \u003d webob.Request.blank(\"/images\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_33873514","line":199,"updated":"2015-11-20 19:44:54.000000000","message":"I wonder what\u0027s causing the 400 for this test to pass ... I\u0027m pretty sure that \u00271100\u0027 is a legal string for oslo timeutils.parse_isotime()","commit_id":"da865202a7403d88f12a067b038c3158b16e4bce"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"0382aa2a673430d257260882af8b2cedad69e22f","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        fixture_headers \u003d {\u0027x-image-meta-store\u0027: \u0027file\u0027,"},{"line_number":197,"context_line":"                           \u0027x-image-meta-disk-format\u0027: \u0027vhd\u0027,"},{"line_number":198,"context_line":"                           \u0027x-image-meta-container-format\u0027: \u0027ovf\u0027,"},{"line_number":199,"context_line":"                           \u0027x-image-meta-created_at\u0027: \u00271100\u0027,"},{"line_number":200,"context_line":"                           \u0027x-image-meta-name\u0027: \u0027fake image #3\u0027}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        req \u003d webob.Request.blank(\"/images\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_be5f5b74","line":199,"in_reply_to":"ba8a016a_33873514","updated":"2015-11-21 17:05:51.000000000","message":"It should be allowed but \u0027strftime\u0027 only allows values after 1900 and that is used within v1.","commit_id":"da865202a7403d88f12a067b038c3158b16e4bce"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"94307eda6b96ba4f4a50ebc53858587e27f19aa2","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        fixture_headers \u003d {\u0027x-image-meta-store\u0027: \u0027file\u0027,"},{"line_number":197,"context_line":"                           \u0027x-image-meta-disk-format\u0027: \u0027vhd\u0027,"},{"line_number":198,"context_line":"                           \u0027x-image-meta-container-format\u0027: \u0027ovf\u0027,"},{"line_number":199,"context_line":"                           \u0027x-image-meta-created_at\u0027: \u00271100\u0027,"},{"line_number":200,"context_line":"                           \u0027x-image-meta-name\u0027: \u0027fake image #3\u0027}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        req \u003d webob.Request.blank(\"/images\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_92f7d158","line":199,"in_reply_to":"ba8a016a_be5f5b74","updated":"2015-11-23 10:43:18.000000000","message":"That may be worth a one-line comment -- it could help anyone reading the code in 2100 to understand the test :-)","commit_id":"da865202a7403d88f12a067b038c3158b16e4bce"}]}
