)]}'
{"monitoring/alarms/constants.py":[{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"3e2f30080e2632c6fe1859d4e7cce2132edd16ab","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from monitoring.config.local_settings import STATIC_URL"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"URL_PREFIX \u003d \u0027horizon:monitoring:alarms:\u0027"},{"line_number":20,"context_line":"TEMPLATE_PREFIX \u003d \u0027monitoring/alarms/\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_6ae686b1","line":17,"updated":"2015-10-08 14:04:05.000000000","message":"Should import from django.conf, see;\n\nhttps://docs.djangoproject.com/en/1.7/topics/settings/#using-settings-in-python-code","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"},{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"3e2f30080e2632c6fe1859d4e7cce2132edd16ab","unresolved":false,"context_lines":[{"line_number":23,"context_line":"WARNING_ICON \u003d STATIC_URL + \u0027/monitoring/img/warning-icon.png\u0027"},{"line_number":24,"context_line":"OK_ICON \u003d STATIC_URL + \u0027/monitoring/img/ok-icon.png\u0027"},{"line_number":25,"context_line":"UNKNOWN_ICON \u003d STATIC_URL + \u0027/monitoring/img/unknown-icon.png\u0027"},{"line_number":26,"context_line":"NOTFOUND_ICON \u003d STATIC_URL + \u0027/monitoring/img/notfound-icon.png\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_c5678b4b","line":26,"updated":"2015-10-08 14:04:05.000000000","message":"STATIC_URL may be None (the default: https://docs.djangoproject.com/en/1.7/ref/settings/#static-url) in which case this will raise a TypeError.\n\nFurther, if not None, then STATIC_URL is defined to always end with a slash, so the leading slash in the png paths should be removed if STATIC_URL is prefixed.","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"},{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"bf7816b1599c3a40e315a66b0d5f0ae8a1f8906c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"URL_PREFIX \u003d \u0027horizon:monitoring:alarms:\u0027"},{"line_number":20,"context_line":"TEMPLATE_PREFIX \u003d \u0027monitoring/alarms/\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"prefix \u003d settings.STATIC_URL or \u0027/\u0027"},{"line_number":23,"context_line":"CRITICAL_ICON \u003d prefix + \u0027monitoring/img/critical-icon.png\u0027"},{"line_number":24,"context_line":"WARNING_ICON \u003d prefix + \u0027monitoring/img/warning-icon.png\u0027"},{"line_number":25,"context_line":"OK_ICON \u003d prefix + \u0027monitoring/img/ok-icon.png\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_1f012406","line":22,"updated":"2015-10-09 10:55:17.000000000","message":"Here (and elsewhere) this will mean that if the deployment has configured STATIC_URL\u003d\u0027\u0027 then this will change it to \u0027/\u0027, which is not equivalent. The suggestion was to use;\n\n    settings.STATIC_URL or \u0027\u0027\n\nto avoid exceptions from attempting to concatenate None and a string.","commit_id":"39564b0b280b567c93cbf1d7d5c6429b01cb116c"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"533285fe757d682c5c3e3cc316e3f5dce159c297","unresolved":false,"context_lines":[{"line_number":19,"context_line":"URL_PREFIX \u003d \u0027horizon:monitoring:alarms:\u0027"},{"line_number":20,"context_line":"TEMPLATE_PREFIX \u003d \u0027monitoring/alarms/\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"prefix \u003d settings.STATIC_URL or \u0027/\u0027"},{"line_number":23,"context_line":"CRITICAL_ICON \u003d prefix + \u0027monitoring/img/critical-icon.png\u0027"},{"line_number":24,"context_line":"WARNING_ICON \u003d prefix + \u0027monitoring/img/warning-icon.png\u0027"},{"line_number":25,"context_line":"OK_ICON \u003d prefix + \u0027monitoring/img/ok-icon.png\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_7fe375d9","line":22,"in_reply_to":"7a2fa921_1f012406","updated":"2015-10-09 11:53:55.000000000","message":"Done","commit_id":"39564b0b280b567c93cbf1d7d5c6429b01cb116c"}],"monitoring/alarms/tables.py":[{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"3e2f30080e2632c6fe1859d4e7cce2132edd16ab","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from monitoring.alarms import constants"},{"line_number":27,"context_line":"from monitoring.overview import constants as ov_constants"},{"line_number":28,"context_line":"from monitoring import api"},{"line_number":29,"context_line":"from monitoring.config.local_settings import STATIC_URL"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_05c02329","line":29,"updated":"2015-10-08 14:04:05.000000000","message":"Should import from django.conf, see;\n\nhttps://docs.djangoproject.com/en/1.7/topics/settings/#using-settings-in-python-code","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"},{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"3e2f30080e2632c6fe1859d4e7cce2132edd16ab","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        endpoint \u003d str(reverse_lazy(ov_constants.URL_PREFIX + \u0027proxy\u0027))"},{"line_number":162,"context_line":"        endpoint \u003d self.table.request.build_absolute_uri(endpoint)"},{"line_number":163,"context_line":"        self.attrs[\u0027target\u0027] \u003d \u0027_blank\u0027"},{"line_number":164,"context_line":"        url \u003d STATIC_URL + \u0027/grafana/index.html#/dashboard/script/detail.js\u0027"},{"line_number":165,"context_line":"        query \u003d \"?name\u003d%s\u0026threshold\u003d%s\u0026api\u003d%s\" % \\"},{"line_number":166,"context_line":"                (name, threshold, endpoint)"},{"line_number":167,"context_line":"        return url + query"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_c50b0b8d","line":164,"updated":"2015-10-08 14:04:05.000000000","message":"See comment in constants.py","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"}],"monitoring/config/local_settings.py":[{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"3e2f30080e2632c6fe1859d4e7cce2132edd16ab","unresolved":false,"context_lines":[{"line_number":2,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Horizon static components"},{"line_number":5,"context_line":"STATIC_URL \u003d \u0027/static\u0027"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Services being monitored"},{"line_number":8,"context_line":"MONITORING_SERVICES \u003d getattr("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e5aba773","line":5,"updated":"2015-10-08 14:04:05.000000000","message":"I don\u0027t think this should be part of the default set of Monasca configuration options - this isn\u0027t a Monasca specific setting, and many deployments will not use this URL.\n\nThat aside, as per https://docs.djangoproject.com/en/1.7/ref/settings/#static-url this should end in a slash.","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"9d8e4ac6eb4a8637d11a1bf17d5cf5f21b370307","unresolved":false,"context_lines":[{"line_number":2,"context_line":"from django.utils.translation import ugettext_lazy as _"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Horizon static components"},{"line_number":5,"context_line":"STATIC_URL \u003d \u0027/static\u0027"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Services being monitored"},{"line_number":8,"context_line":"MONITORING_SERVICES \u003d getattr("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_f89ec661","line":5,"in_reply_to":"7a2fa921_e5aba773","updated":"2015-10-09 08:43:30.000000000","message":"Thank you, Ben! I changed the code.","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"}],"monitoring/overview/constants.py":[{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"9e9042ce5550d457d48a960969b08050d7d4426b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    elif settings.WEBROOT:"},{"line_number":26,"context_line":"        url \u003d settings.WEBROOT + \u0027static/\u0027"},{"line_number":27,"context_line":"    else:"},{"line_number":28,"context_line":"        url \u003d \u0027/static/\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    return url"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_eb1fceb4","line":28,"updated":"2015-10-09 09:12:40.000000000","message":"This logic is already present in the default horizon settings.py:\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/settings.py#L286\n\nIf a deployment has deliberately changed STATIC_URL in the main horizon settings to an empty string or None then that is probably intentional and I don\u0027t think there\u0027s a reason to change it here.","commit_id":"7ffe94f49f14af968fdde6062508d1a255d96f92"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"729cd4a65c3b2f07d4f29948dd431705db3266b2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    elif settings.WEBROOT:"},{"line_number":26,"context_line":"        url \u003d settings.WEBROOT + \u0027static/\u0027"},{"line_number":27,"context_line":"    else:"},{"line_number":28,"context_line":"        url \u003d \u0027/static/\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    return url"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_9fb214e4","line":28,"in_reply_to":"7a2fa921_eb1fceb4","updated":"2015-10-09 10:34:37.000000000","message":"Good point!","commit_id":"7ffe94f49f14af968fdde6062508d1a255d96f92"},{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"9e9042ce5550d457d48a960969b08050d7d4426b","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    return url"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"prefix \u003d get_static_url()"},{"line_number":33,"context_line":"CRITICAL_ICON \u003d prefix + \u0027monitoring/img/critical-icon.png\u0027"},{"line_number":34,"context_line":"WARNING_ICON \u003d prefix + \u0027monitoring/img/warning-icon.png\u0027"},{"line_number":35,"context_line":"OK_ICON \u003d prefix + \u0027monitoring/img/ok-icon.png\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_2b7b86c2","line":32,"updated":"2015-10-09 09:12:40.000000000","message":"So I think this would be better as:\n\n    prefix \u003d django.conf.settings.STATIC_URL or \u0027\u0027","commit_id":"7ffe94f49f14af968fdde6062508d1a255d96f92"}],"monitoring/overview/templates/overview/index.html":[{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"3e2f30080e2632c6fe1859d4e7cce2132edd16ab","unresolved":false,"context_lines":[{"line_number":9,"context_line":"{% block main %}"},{"line_number":10,"context_line":"    \u003cdiv style\u003d\"padding: 3px;\"\u003e"},{"line_number":11,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":12,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ static_url }}/grafana/index.html#/dashboard/file/{{ dashboard.fileName }}?api\u003d{{api}}\" class\u003d\"btn btn-default btn-sm\"\u003e"},{"line_number":13,"context_line":"              \u003cspan class\u003d\"glyphicon glyphicon-dashboard\"\u003e\u003c/span\u003e"},{"line_number":14,"context_line":"              {% trans dashboard.title %}"},{"line_number":15,"context_line":"          \u003c/a\u003e"}],"source_content_type":"text/html","patch_set":1,"id":"7a2fa921_0a4592b1","line":12,"updated":"2015-10-08 14:04:05.000000000","message":"Why not convert to use Django\u0027s \u0027static\u0027 tag, or the \u0027get_static_prefix\u0027 tag?\n\nSee:\n* https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#std:templatetag-static\n* https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#get-static-prefix","commit_id":"efdfab231731586053d8ad05764d35f341ed719c"},{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"bf7816b1599c3a40e315a66b0d5f0ae8a1f8906c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"{% block main %}"},{"line_number":10,"context_line":"    \u003cdiv style\u003d\"padding: 3px;\"\u003e"},{"line_number":11,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":12,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ static_url }}grafana/index.html#/dashboard/file/{{ dashboard.fileName }}?api\u003d{{api}}\" class\u003d\"btn btn-default btn-sm\"\u003e"},{"line_number":13,"context_line":"              \u003cspan class\u003d\"glyphicon glyphicon-dashboard\"\u003e\u003c/span\u003e"},{"line_number":14,"context_line":"              {% trans dashboard.title %}"},{"line_number":15,"context_line":"          \u003c/a\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"7a2fa921_5a400a34","line":12,"updated":"2015-10-09 10:55:17.000000000","message":"You don\u0027t need to explicitly pass in static_url in the context, you can just use the {% get-static-prefix %} tag:\n\nhttps://docs.djangoproject.com/en/1.7/ref/templates/builtins/#get-static-prefix","commit_id":"39564b0b280b567c93cbf1d7d5c6429b01cb116c"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"533285fe757d682c5c3e3cc316e3f5dce159c297","unresolved":false,"context_lines":[{"line_number":9,"context_line":"{% block main %}"},{"line_number":10,"context_line":"    \u003cdiv style\u003d\"padding: 3px;\"\u003e"},{"line_number":11,"context_line":"      {% for dashboard in dashboards %}"},{"line_number":12,"context_line":"      \u003ca target\u003d{{ dashboard.title }} href\u003d\"{{ static_url }}grafana/index.html#/dashboard/file/{{ dashboard.fileName }}?api\u003d{{api}}\" class\u003d\"btn btn-default btn-sm\"\u003e"},{"line_number":13,"context_line":"              \u003cspan class\u003d\"glyphicon glyphicon-dashboard\"\u003e\u003c/span\u003e"},{"line_number":14,"context_line":"              {% trans dashboard.title %}"},{"line_number":15,"context_line":"          \u003c/a\u003e"}],"source_content_type":"text/html","patch_set":3,"id":"7a2fa921_9fc3f137","line":12,"in_reply_to":"7a2fa921_5a400a34","updated":"2015-10-09 11:53:55.000000000","message":"Thank you!","commit_id":"39564b0b280b567c93cbf1d7d5c6429b01cb116c"}],"monitoring/overview/views.py":[{"author":{"_account_id":15799,"name":"Ben Motz","email":"ben.launchpad@ouat.co.uk","username":"bmotz"},"change_message_id":"bbbc94fd62215e190dc5389553edf7624a6da292","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            ((\u0027identity\u0027, \u0027admin_required\u0027), ), self.request"},{"line_number":184,"context_line":"        )"},{"line_number":185,"context_line":"        context[\u0027enable_kibana_button\u0027] \u003d settings.ENABLE_KIBANA_BUTTON"},{"line_number":186,"context_line":"        context[\u0027static_url\u0027] \u003d dj_settings.STATIC_URL or \u0027\u0027"},{"line_number":187,"context_line":"        return context"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_df7ac9bc","line":186,"updated":"2015-10-09 12:04:18.000000000","message":"You don\u0027t need this line anymore (or the import on line 22)","commit_id":"dee2d0c4ee02dc58974d1cc99d4ed1b4323a0f18"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"2dc80206bb43f3241760fc681e031b956040c842","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            ((\u0027identity\u0027, \u0027admin_required\u0027), ), self.request"},{"line_number":184,"context_line":"        )"},{"line_number":185,"context_line":"        context[\u0027enable_kibana_button\u0027] \u003d settings.ENABLE_KIBANA_BUTTON"},{"line_number":186,"context_line":"        context[\u0027static_url\u0027] \u003d dj_settings.STATIC_URL or \u0027\u0027"},{"line_number":187,"context_line":"        return context"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_90ac3e8d","line":186,"in_reply_to":"7a2fa921_df7ac9bc","updated":"2015-10-09 12:57:46.000000000","message":"Done","commit_id":"dee2d0c4ee02dc58974d1cc99d4ed1b4323a0f18"}]}
