)]}'
{"searchlightclient/osc/v1/search.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"44d53c44b9773c5974c587191e41b413b40c65e9","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        for r in data.hits[\u0027hits\u0027]:"},{"line_number":97,"context_line":"            converted \u003d {}"},{"line_number":98,"context_line":"            # hit._id may include extra information appended after _."},{"line_number":99,"context_line":"            r[\u0027_id\u0027] \u003d r[\u0027_id\u0027].split(\u0027_\u0027)[0]"},{"line_number":100,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":101,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":102,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_e5537b15","line":99,"range":{"start_line":99,"start_character":29,"end_line":99,"end_character":32},"updated":"2016-02-23 17:41:51.000000000","message":"It would be safer to use _source[\u0027id\u0027] which should always be guaranteed to be the same as the resource itself. The _id implementation might change which would break clients.","commit_id":"73df77ed06afd3a4f8ac6714a457dbc7146f4318"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"bf34a9b07da486c18dd012b875a0c86d43e24438","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        for r in data.hits[\u0027hits\u0027]:"},{"line_number":97,"context_line":"            converted \u003d {}"},{"line_number":98,"context_line":"            # hit._id may include extra information appended after _."},{"line_number":99,"context_line":"            r[\u0027_id\u0027] \u003d r[\u0027_id\u0027].split(\u0027_\u0027)[0]"},{"line_number":100,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":101,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":102,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_08582487","line":99,"range":{"start_line":99,"start_character":29,"end_line":99,"end_character":32},"in_reply_to":"bae84128_228b8a69","updated":"2016-02-24 01:16:42.000000000","message":"Like Travis\u0027s way:)","commit_id":"73df77ed06afd3a4f8ac6714a457dbc7146f4318"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"2e7c2ba683e2f76b800f9db7418f159a6aff0486","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        for r in data.hits[\u0027hits\u0027]:"},{"line_number":97,"context_line":"            converted \u003d {}"},{"line_number":98,"context_line":"            # hit._id may include extra information appended after _."},{"line_number":99,"context_line":"            r[\u0027_id\u0027] \u003d r[\u0027_id\u0027].split(\u0027_\u0027)[0]"},{"line_number":100,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":101,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":102,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_228b8a69","line":99,"range":{"start_line":99,"start_character":29,"end_line":99,"end_character":32},"in_reply_to":"bae84128_e5537b15","updated":"2016-02-23 22:32:22.000000000","message":"How about like what I did on the panel?  If in source, use it. Otherwise this. (line 94 below)\n\nhttps://review.openstack.org/#/c/227036/37..39/openstack_dashboard/dashboards/project/static/dashboard/project/search/util/resource-locator.service.js","commit_id":"73df77ed06afd3a4f8ac6714a457dbc7146f4318"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"b23d3f96b2a13d0c9603106b8d16a4865df479b1","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        for r in data.hits[\u0027hits\u0027]:"},{"line_number":97,"context_line":"            converted \u003d {}"},{"line_number":98,"context_line":"            # hit._id may include extra information appended after _."},{"line_number":99,"context_line":"            r[\u0027_id\u0027] \u003d r[\u0027_source\u0027].get(\u0027id\u0027) or r[\u0027_id\u0027].split(\u0027_\u0027)[0]"},{"line_number":100,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":101,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":102,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_47913d52","line":99,"range":{"start_line":99,"start_character":63,"end_line":99,"end_character":65},"updated":"2016-02-24 19:44:31.000000000","message":"split(\u0027_\u0027)[0] definitely won\u0027t be safe in all circumstances (things with ids that aren\u0027t UUIDs). Safer (if a bit ugly looking) is:\n\n\u0027_\u0027.join(r[\u0027_id\u0027].split(\u0027_\u0027)[:-1])\n\nOtherwise this is fine is _source is always guaranteed to be in the results, otherwise .get(\u0027_source\u0027, {}).get(\u0027id\u0027)","commit_id":"507b457e54f818fe8bad1410921fd7ab3a7dc057"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"7ddcb97e8c1e47b706f867e8954562baa2f77403","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        for r in data.hits[\u0027hits\u0027]:"},{"line_number":97,"context_line":"            converted \u003d {}"},{"line_number":98,"context_line":"            # hit._id may include extra information appended after _."},{"line_number":99,"context_line":"            r[\u0027_id\u0027] \u003d r[\u0027_source\u0027].get(\u0027id\u0027) or r[\u0027_id\u0027].split(\u0027_\u0027)[0]"},{"line_number":100,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":101,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":102,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_bc6e4594","line":99,"range":{"start_line":99,"start_character":63,"end_line":99,"end_character":65},"in_reply_to":"bae84128_47913d52","updated":"2016-02-25 06:36:33.000000000","message":"\u0027_\u0027.join(r[\u0027_id\u0027].split(\u0027_\u0027)[:-1]) doesn\u0027t work:\n\n\u003e\u003e\u003e r\u003d\u00271\u0027\n\u003e\u003e\u003e \u0027_\u0027.join(r.split(\u0027_\u0027)[:-1])\n\u0027\u0027\n\u003e\u003e\u003e r\u003d\u00271_2_3\u0027\n\u003e\u003e\u003e \u0027_\u0027.join(r.split(\u0027_\u0027)[:-1])\n\u00271_2\u0027","commit_id":"507b457e54f818fe8bad1410921fd7ab3a7dc057"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"7ce3070bdd61c41e5372d31106fe83bcf5a6e358","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        for r in data.hits[\u0027hits\u0027]:"},{"line_number":97,"context_line":"            converted \u003d {}"},{"line_number":98,"context_line":"            # hit._id may include extra information appended after _."},{"line_number":99,"context_line":"            r[\u0027_id\u0027] \u003d r[\u0027_source\u0027].get(\u0027id\u0027) or r[\u0027_id\u0027].split(\u0027_\u0027)[0]"},{"line_number":100,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":101,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":102,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_8ff50ccd","line":99,"range":{"start_line":99,"start_character":63,"end_line":99,"end_character":65},"in_reply_to":"bae84128_47913d52","updated":"2016-02-25 02:17:48.000000000","message":"Done","commit_id":"507b457e54f818fe8bad1410921fd7ab3a7dc057"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e88440780bb7b76f74be19b27ecc377eb1bad1ca","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            converted \u003d {}"},{"line_number":115,"context_line":"            # hit._id may include extra information appended after _,"},{"line_number":116,"context_line":"            # so use r[\u0027_source\u0027][\u0027id\u0027] for safe."},{"line_number":117,"context_line":"            r[\u0027_id\u0027] \u003d r.get(\u0027_source\u0027, {}).get(\u0027id\u0027)"},{"line_number":118,"context_line":"            for k, v in six.iteritems(r):"},{"line_number":119,"context_line":"                converted[mapping[k]] \u003d v"},{"line_number":120,"context_line":"                if k \u003d\u003d \"_source\" and not parsed_args.source:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_f8a0b9a7","line":117,"range":{"start_line":117,"start_character":28,"end_line":117,"end_character":30},"updated":"2016-02-25 15:32:30.000000000","message":"Since we are always specifying _source, this could be simplified a bit (although maybe it\u0027s best to allow for the chance there\u0027s no ID column) but i\u0027m fine with it this way","commit_id":"e6719aeb08864175dabb44bedb55f443d1dc890e"}]}
