)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"cda49ec947146a50f33535d36233f4eb0e11c37c","unresolved":false,"context_lines":[{"line_number":11,"context_line":" - horizon/openstack_dashboard/static/openstack-service-api/"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3477f0fa3912f6381474e4278037f909aa9fa55a"},{"line_number":14,"context_line":"Co-Authored-By: r1chardj0n3s@gmail.com"},{"line_number":15,"context_line":"Co-Authored-By: tqtran@us.ibm.com"},{"line_number":16,"context_line":"Partially-Implements: blueprint auto-js-file-finding"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_f8b97c16","line":14,"updated":"2015-06-26 23:42:18.000000000","message":"format should be name \u003cemail\u003e, so Richard Jones \u003cr1chardj0n3s@gmail.com\u003e","commit_id":"f9b0482d0cdbe10b39f3ad628e1482158229681c"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"0b4c871cc791d0225b383ac658d0af70a8c22c66","unresolved":false,"context_lines":[{"line_number":11,"context_line":" - horizon/openstack_dashboard/static/openstack-service-api/"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3477f0fa3912f6381474e4278037f909aa9fa55a"},{"line_number":14,"context_line":"Co-Authored-By: r1chardj0n3s@gmail.com"},{"line_number":15,"context_line":"Co-Authored-By: tqtran@us.ibm.com"},{"line_number":16,"context_line":"Partially-Implements: blueprint auto-js-file-finding"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"fa32b979_b8bd34d9","line":14,"in_reply_to":"fa32b979_f8b97c16","updated":"2015-06-26 23:54:29.000000000","message":"Done","commit_id":"f9b0482d0cdbe10b39f3ad628e1482158229681c"}],"horizon/site_urls.py":[{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"cda49ec947146a50f33535d36233f4eb0e11c37c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        url(r\u0027^qunit/$\u0027,"},{"line_number":48,"context_line":"            TemplateView.as_view(template_name\u003d\"horizon/qunit.html\"),"},{"line_number":49,"context_line":"            name\u003d\u0027qunit_tests\u0027),"},{"line_number":50,"context_line":"        url(r\u0027^jasmine/.*?$\u0027, jasmine.dispatcher))"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_f82f3c86","line":50,"updated":"2015-06-26 23:42:18.000000000","message":"question, what is the difference here?","commit_id":"f9b0482d0cdbe10b39f3ad628e1482158229681c"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"0b4c871cc791d0225b383ac658d0af70a8c22c66","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        url(r\u0027^qunit/$\u0027,"},{"line_number":48,"context_line":"            TemplateView.as_view(template_name\u003d\"horizon/qunit.html\"),"},{"line_number":49,"context_line":"            name\u003d\u0027qunit_tests\u0027),"},{"line_number":50,"context_line":"        url(r\u0027^jasmine/.*?$\u0027, jasmine.dispatcher))"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa32b979_f8ec1cf5","line":50,"in_reply_to":"fa32b979_f82f3c86","updated":"2015-06-26 23:54:29.000000000","message":"With (...) it will require jasmine.dispatcher to have a second parameter to accept the second argument.","commit_id":"f9b0482d0cdbe10b39f3ad628e1482158229681c"}],"horizon/templates/horizon/jasmine/jasmine.html":[{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"973c089cea52d99a2d8b93703041a196e229707b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e"},{"line_number":47,"context_line":"  {% endfor %}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  \u003c!-- Magic Search library must be after magic-search override widget --\u003e"},{"line_number":50,"context_line":"  \u003cscript src\u003d\"{{ STATIC_URL }}horizon/lib/magic_search/magic_search.js\"\u003e\u003c/script\u003e"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\u003c/head\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_8159e290","side":"PARENT","line":49,"updated":"2015-06-22 04:29:20.000000000","message":"I realise this comment isn\u0027t part of this patch, but it\u0027s not clear to me -- what \"magic-search override widget\" is it referring to that this is \"after\"?","commit_id":"6eb639303791940a3e28ed58be5a7b03eb032349"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"973c089cea52d99a2d8b93703041a196e229707b","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  \u003c!-- source files --\u003e"},{"line_number":31,"context_line":"  {% for file in HORIZON_CONFIG.js_files %}"},{"line_number":32,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  \u003c!-- Magic Search library must be after magic-search override widget --\u003e"},{"line_number":35,"context_line":"  \u003cscript src\u003d\"{{ STATIC_URL }}horizon/lib/magic_search/magic_search.js\"\u003e\u003c/script\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_e1646e4a","line":32,"updated":"2015-06-22 04:29:20.000000000","message":"This was quite confusing at first glance. Please retain the indentation and have the endfor on a new line.\n\nIf this is just for saving some newlines in the generated content, I think I would prefer that this source be more readable since that generated content will be minified/compressed for clients anyway.","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"85185502db69803bae0901716958bc577fa953d3","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  \u003c!-- source files --\u003e"},{"line_number":31,"context_line":"  {% for file in HORIZON_CONFIG.js_files %}"},{"line_number":32,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  \u003c!-- Magic Search library must be after magic-search override widget --\u003e"},{"line_number":35,"context_line":"  \u003cscript src\u003d\"{{ STATIC_URL }}horizon/lib/magic_search/magic_search.js\"\u003e\u003c/script\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_f25c1f7f","line":32,"in_reply_to":"fa32b979_bd9bcd65","updated":"2015-06-22 18:51:42.000000000","message":"Sure I can bring the whitespace back. but they do make the generated html code ugly. ;-)","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"140f86352dba5a2c8caf23d03d761440135c5b11","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  \u003c!-- source files --\u003e"},{"line_number":31,"context_line":"  {% for file in HORIZON_CONFIG.js_files %}"},{"line_number":32,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  \u003c!-- Magic Search library must be after magic-search override widget --\u003e"},{"line_number":35,"context_line":"  \u003cscript src\u003d\"{{ STATIC_URL }}horizon/lib/magic_search/magic_search.js\"\u003e\u003c/script\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_bd9bcd65","line":32,"in_reply_to":"fa32b979_e1646e4a","updated":"2015-06-22 17:14:11.000000000","message":"agree with the endfor tag on a new line.","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"973c089cea52d99a2d8b93703041a196e229707b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  \u003c!-- Magic Search library must be after magic-search override widget --\u003e"},{"line_number":35,"context_line":"  \u003cscript src\u003d\"{{ STATIC_URL }}horizon/lib/magic_search/magic_search.js\"\u003e\u003c/script\u003e"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  \u003c!-- mock and spec files --\u003e"},{"line_number":38,"context_line":"  {% for file in HORIZON_CONFIG.js_spec_files %}"},{"line_number":39,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":40,"context_line":""}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_41543a53","line":37,"updated":"2015-06-22 04:29:20.000000000","message":"I think this comment should say something more like \"test files - mock and spec\"","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"85185502db69803bae0901716958bc577fa953d3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  \u003c!-- Magic Search library must be after magic-search override widget --\u003e"},{"line_number":35,"context_line":"  \u003cscript src\u003d\"{{ STATIC_URL }}horizon/lib/magic_search/magic_search.js\"\u003e\u003c/script\u003e"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  \u003c!-- mock and spec files --\u003e"},{"line_number":38,"context_line":"  {% for file in HORIZON_CONFIG.js_spec_files %}"},{"line_number":39,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":40,"context_line":""}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_48767a3f","line":37,"in_reply_to":"fa32b979_41543a53","updated":"2015-06-22 18:51:42.000000000","message":"Done","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"973c089cea52d99a2d8b93703041a196e229707b","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  \u003c!-- mock and spec files --\u003e"},{"line_number":38,"context_line":"  {% for file in HORIZON_CONFIG.js_spec_files %}"},{"line_number":39,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"\u003c/head\u003e"},{"line_number":42,"context_line":"\u003cbody\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_61513e62","line":39,"updated":"2015-06-22 04:29:20.000000000","message":"Again, we lost some indentation and a newline here, making this less readable.","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"85185502db69803bae0901716958bc577fa953d3","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  \u003c!-- mock and spec files --\u003e"},{"line_number":38,"context_line":"  {% for file in HORIZON_CONFIG.js_spec_files %}"},{"line_number":39,"context_line":"  \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ file }}\u0027\u003e\u003c/script\u003e{% endfor %}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"\u003c/head\u003e"},{"line_number":42,"context_line":"\u003cbody\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_b24f77bd","line":39,"in_reply_to":"fa32b979_61513e62","updated":"2015-06-22 18:51:42.000000000","message":"Done","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"973c089cea52d99a2d8b93703041a196e229707b","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"      var templates \u003d ["},{"line_number":54,"context_line":"        {% for external_template in HORIZON_CONFIG.external_templates %}"},{"line_number":55,"context_line":"        \u0027{{ STATIC_URL }}{{ external_template }}\u0027,{% endfor %}"},{"line_number":56,"context_line":"      ];"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      var tplmodule \u003d angular.module(\u0027templates\u0027, []);"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_014e32c1","line":55,"updated":"2015-06-22 04:29:20.000000000","message":"Indentation, newline, as above :)","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"85185502db69803bae0901716958bc577fa953d3","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"      var templates \u003d ["},{"line_number":54,"context_line":"        {% for external_template in HORIZON_CONFIG.external_templates %}"},{"line_number":55,"context_line":"        \u0027{{ STATIC_URL }}{{ external_template }}\u0027,{% endfor %}"},{"line_number":56,"context_line":"      ];"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"      var tplmodule \u003d angular.module(\u0027templates\u0027, []);"}],"source_content_type":"text/html","patch_set":3,"id":"fa32b979_327cc7ea","line":55,"in_reply_to":"fa32b979_014e32c1","updated":"2015-06-22 18:51:42.000000000","message":"Done","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"}],"horizon/test/jasmine/jasmine_tests.py":[{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"140f86352dba5a2c8caf23d03d761440135c5b11","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from horizon.test import helpers as test"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class ServicesTests(test.JasmineTests):"},{"line_number":18,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_7d90e54e","line":17,"updated":"2015-06-22 17:14:11.000000000","message":"can we investigate on removing this class altogether since we are no longer manually injecting via this mechanism?","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"},{"author":{"_account_id":13805,"name":"Shaoquan Chen","email":"sean.chen2@hp.com","username":"SeanChen"},"change_message_id":"85185502db69803bae0901716958bc577fa953d3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from horizon.test import helpers as test"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class ServicesTests(test.JasmineTests):"},{"line_number":18,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_05ee1b8b","line":17,"in_reply_to":"fa32b979_7d90e54e","updated":"2015-06-22 18:51:42.000000000","message":"I will see if know how to get rid of this class.","commit_id":"8b897c9bec3985a2e6500d0562a14d44b1fd56e3"}]}
