)]}'
{"doc/source/topics/customizing.rst":[{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":20,"context_line":"``local_settings.py`` to a list of tuples, such that ``(\u0027name\u0027, \u0027label\u0027, \u0027path\u0027)``"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"``name``"},{"line_number":23,"context_line":"  The name by which the theme value is stored in the cookie"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"``label``"},{"line_number":26,"context_line":"  The label shown in the theme toggle under the User Menu"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_d04b1b58","line":23,"updated":"2016-02-10 16:53:33.000000000","message":"this sentence is confusing, I thought it meant the cookie name, but it\u0027s like the cookie slug name etc","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":20,"context_line":"``local_settings.py`` to a list of tuples, such that ``(\u0027name\u0027, \u0027label\u0027, \u0027path\u0027)``"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"``name``"},{"line_number":23,"context_line":"  The name by which the theme value is stored in the cookie"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"``label``"},{"line_number":26,"context_line":"  The label shown in the theme toggle under the User Menu"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_95cb4e53","line":23,"in_reply_to":"3a57f1b5_d04b1b58","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":34,"context_line":"a list of themes.  If you wish to run in a mode similar to legacy Horizon,"},{"line_number":35,"context_line":"set ``AVAILABLE_THEMES`` with a single tuple, and the theme toggle will not"},{"line_number":36,"context_line":"be available at all through the application to allow user configuration themes."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Both the Dashboard custom variables and Bootstrap variables can be overridden."},{"line_number":39,"context_line":"For a full list of the Dashboard SCSS variables that can be changed, see the"},{"line_number":40,"context_line":"variables file at ``openstack_dashboard/static/dashboard/scss/_variables.scss``."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_70aa67d6","line":37,"updated":"2016-02-10 16:53:33.000000000","message":"I think including an example of using available themes here is needed","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":34,"context_line":"a list of themes.  If you wish to run in a mode similar to legacy Horizon,"},{"line_number":35,"context_line":"set ``AVAILABLE_THEMES`` with a single tuple, and the theme toggle will not"},{"line_number":36,"context_line":"be available at all through the application to allow user configuration themes."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Both the Dashboard custom variables and Bootstrap variables can be overridden."},{"line_number":39,"context_line":"For a full list of the Dashboard SCSS variables that can be changed, see the"},{"line_number":40,"context_line":"variables file at ``openstack_dashboard/static/dashboard/scss/_variables.scss``."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_35161aa8","line":37,"in_reply_to":"3a57f1b5_70aa67d6","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"ae33d6992a55974e71b6e7784cbf59dddd6d642c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"themes available at run time.  It uses a browser cookie to allow users to"},{"line_number":16,"context_line":"toggle between the configured themes.  By default, Horizon is configured"},{"line_number":17,"context_line":"with the two standard themes available: \u0027default\u0027 and \u0027material\u0027."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"To configure or alter the available themes, set ``AVAILABLE_THEMES`` in"},{"line_number":20,"context_line":"``local_settings.py`` to a list of tuples, such that ``(\u0027name\u0027, \u0027label\u0027, \u0027path\u0027)``"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"bae84128_95fb6e47","line":18,"updated":"2016-02-24 19:51:22.000000000","message":"So we have no deprecation period for CUSTOM_THEME_PATH ?","commit_id":"5ec868f75d4f202ee02fa9bcd2165b546b679c1c"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"b5a50c39ea5a845da3901d83dad5b0cfd5746607","unresolved":false,"context_lines":[{"line_number":15,"context_line":"themes available at run time.  It uses a browser cookie to allow users to"},{"line_number":16,"context_line":"toggle between the configured themes.  By default, Horizon is configured"},{"line_number":17,"context_line":"with the two standard themes available: \u0027default\u0027 and \u0027material\u0027."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"To configure or alter the available themes, set ``AVAILABLE_THEMES`` in"},{"line_number":20,"context_line":"``local_settings.py`` to a list of tuples, such that ``(\u0027name\u0027, \u0027label\u0027, \u0027path\u0027)``"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"bae84128_5191f351","line":18,"in_reply_to":"bae84128_95fb6e47","updated":"2016-02-24 23:00:18.000000000","message":"Done","commit_id":"5ec868f75d4f202ee02fa9bcd2165b546b679c1c"}],"doc/source/topics/settings.rst":[{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":416,"context_line":"    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":417,"context_line":"    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":418,"context_line":"]``"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"This setting tells Horizon which themes to use."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"A list of tuples which define multiple themes. The tuple format is"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_d090fb97","line":419,"updated":"2016-02-10 16:53:33.000000000","message":"this example above could go in the other customizing doc pls","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":416,"context_line":"    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":417,"context_line":"    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":418,"context_line":"]``"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"This setting tells Horizon which themes to use."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"A list of tuples which define multiple themes. The tuple format is"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_557876f2","line":419,"in_reply_to":"3a57f1b5_d090fb97","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":481,"context_line":"Default: ``\"theme\"``"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"This setting tells Horizon in which cookie key to store the currently"},{"line_number":484,"context_line":"set theme."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"``DROPDOWN_MAX_ITEMS``"},{"line_number":487,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_90e9231d","line":484,"updated":"2016-02-10 16:53:33.000000000","message":"how long will this cookie last?","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":481,"context_line":"Default: ``\"theme\"``"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"This setting tells Horizon in which cookie key to store the currently"},{"line_number":484,"context_line":"set theme."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"``DROPDOWN_MAX_ITEMS``"},{"line_number":487,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a57f1b5_95558e51","line":484,"in_reply_to":"3a57f1b5_90e9231d","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"7920e5a05f55b3738db0808a873d07e30e8237c0","unresolved":false,"context_lines":[{"line_number":415,"context_line":"Default: ``AVAILABLE_THEMES \u003d ["},{"line_number":416,"context_line":"    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":417,"context_line":"    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":418,"context_line":"]``"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"This setting tells Horizon which themes to use."},{"line_number":421,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a57f1b5_ec71a3a9","line":418,"updated":"2016-02-10 17:32:03.000000000","message":"if this is the default, this list does not match what is in local_settings.py.example","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":415,"context_line":"Default: ``AVAILABLE_THEMES \u003d ["},{"line_number":416,"context_line":"    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":417,"context_line":"    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":418,"context_line":"]``"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"This setting tells Horizon which themes to use."},{"line_number":421,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a57f1b5_b5abead5","line":418,"in_reply_to":"3a57f1b5_ec71a3a9","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":".. _custom_theme_path:"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"``CUSTOM_THEME_PATH``"},{"line_number":411,"context_line":"---------------------"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":".. versionadded:: 2015.1(Kilo)"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bae84128_0739f541","side":"PARENT","line":410,"updated":"2016-02-24 19:52:22.000000000","message":"This setting should be deprecated, not removed (since you\u0027re still supporting it in your theme_settings.py code).","commit_id":"e8fec35f715d4a7f02afbb6aadbf1bd6a34115f5"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":434,"context_line":"use the alternate theme, set your CUSTOM_THEME_PATH to ``themes/material``."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"``DEFAULT_THEME_PATH``"},{"line_number":438,"context_line":"----------------------"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":".. versionadded:: 8.0.0(Liberty)"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bae84128_a7e489ac","side":"PARENT","line":437,"updated":"2016-02-24 19:52:22.000000000","message":"Same comment about not removing this setting.","commit_id":"e8fec35f715d4a7f02afbb6aadbf1bd6a34115f5"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":420,"context_line":"This setting tells Horizon which themes to use."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"A list of tuples which define multiple themes. The tuple format is"},{"line_number":423,"context_line":"``(\u0027{{ theme_name }}\u0027, \u0027{{ theme_label }}\u0027, \u0027{{ theme_path }}\u0027)``."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"The ``theme_name`` is the name used to define the directory which"},{"line_number":426,"context_line":"the theme is collected into, under ``/{{ THEME_COLLECTION_DIR }}``."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bae84128_2f9215a0","line":423,"updated":"2016-02-24 19:52:22.000000000","message":"I wonder if third value can be always derived from the first one? If it is, do we need it?","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"By default, the ``theme path`` is the directory that will serve as"},{"line_number":435,"context_line":"the static root of the theme and the entire contents of the directory"},{"line_number":436,"context_line":"is served up at ``/{{ THEME_COLLECTION_DIR }}/{{ theme_name }}``."},{"line_number":437,"context_line":"If you wish to include content other than static files in a theme"},{"line_number":438,"context_line":"directory, but do not wish that content to be served up, then you"},{"line_number":439,"context_line":"can create a sub directory named ``static``. If the theme folder"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bae84128_cf7289b0","line":436,"updated":"2016-02-24 19:52:22.000000000","message":"contents are served","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"ae33d6992a55974e71b6e7784cbf59dddd6d642c","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":".. _custom_theme_path:"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"``CUSTOM_THEME_PATH``"},{"line_number":411,"context_line":"---------------------"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":".. versionadded:: 2015.1(Kilo)"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bae84128_95808e8d","side":"PARENT","line":410,"updated":"2016-02-24 19:51:22.000000000","message":"Where did I go??? Yes, I understand where it went, but we never had a deprecation period.","commit_id":"e8fec35f715d4a7f02afbb6aadbf1bd6a34115f5"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"b5a50c39ea5a845da3901d83dad5b0cfd5746607","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":".. _custom_theme_path:"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"``CUSTOM_THEME_PATH``"},{"line_number":411,"context_line":"---------------------"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":".. versionadded:: 2015.1(Kilo)"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bae84128_f1864715","side":"PARENT","line":410,"in_reply_to":"bae84128_95808e8d","updated":"2016-02-24 23:00:18.000000000","message":"Done","commit_id":"e8fec35f715d4a7f02afbb6aadbf1bd6a34115f5"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"ae33d6992a55974e71b6e7784cbf59dddd6d642c","unresolved":false,"context_lines":[{"line_number":434,"context_line":"use the alternate theme, set your CUSTOM_THEME_PATH to ``themes/material``."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"``DEFAULT_THEME_PATH``"},{"line_number":438,"context_line":"----------------------"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":".. versionadded:: 8.0.0(Liberty)"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bae84128_355a6251","side":"PARENT","line":437,"updated":"2016-02-24 19:51:22.000000000","message":"I disappeared too, without warning.","commit_id":"e8fec35f715d4a7f02afbb6aadbf1bd6a34115f5"}],"horizon/themes.py":[{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Offline Context Generator"},{"line_number":40,"context_line":"def offline_context():"},{"line_number":41,"context_line":"    for theme in settings.AVAILABLE_THEMES:"},{"line_number":42,"context_line":"        base_context \u003d settings.COMPRESS_OFFLINE_CONTEXT_BASE.copy()"},{"line_number":43,"context_line":"        base_context[\u0027THEME\u0027] \u003d theme[0]"},{"line_number":44,"context_line":"        base_context[\u0027THEME_DIR\u0027] \u003d settings.THEME_COLLECTION_DIR"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_b03c5f94","line":41,"updated":"2016-02-10 16:53:33.000000000","message":"should you have a fall back if AVAILABLE_THEMES is not configured?  this will fail hard","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Offline Context Generator"},{"line_number":40,"context_line":"def offline_context():"},{"line_number":41,"context_line":"    for theme in settings.AVAILABLE_THEMES:"},{"line_number":42,"context_line":"        base_context \u003d settings.COMPRESS_OFFLINE_CONTEXT_BASE.copy()"},{"line_number":43,"context_line":"        base_context[\u0027THEME\u0027] \u003d theme[0]"},{"line_number":44,"context_line":"        base_context[\u0027THEME_DIR\u0027] \u003d settings.THEME_COLLECTION_DIR"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_bb3d1bbd","line":41,"in_reply_to":"3a57f1b5_b03c5f94","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # If the cookie doesn\u0027t exist, set it to the default theme"},{"line_number":86,"context_line":"        theme \u003d getattr(_local, \u0027theme\u0027, settings.DEFAULT_THEME)"},{"line_number":87,"context_line":"        theme_path \u003d \u0027\u0027"},{"line_number":88,"context_line":"        for each_theme in settings.AVAILABLE_THEMES:"},{"line_number":89,"context_line":"            if theme \u003d\u003d each_theme[0]:"},{"line_number":90,"context_line":"                theme_path \u003d each_theme[2]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_1073f381","line":87,"updated":"2016-02-10 16:53:33.000000000","message":"some of the settings in here should have a default / fallback value I think.","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # If the cookie doesn\u0027t exist, set it to the default theme"},{"line_number":86,"context_line":"        theme \u003d getattr(_local, \u0027theme\u0027, settings.DEFAULT_THEME)"},{"line_number":87,"context_line":"        theme_path \u003d \u0027\u0027"},{"line_number":88,"context_line":"        for each_theme in settings.AVAILABLE_THEMES:"},{"line_number":89,"context_line":"            if theme \u003d\u003d each_theme[0]:"},{"line_number":90,"context_line":"                theme_path \u003d each_theme[2]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_26835258","line":87,"in_reply_to":"3a57f1b5_1073f381","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":9659,"name":"Matt Wood","email":"matt.wood@hpe.com","username":"woodm1979"},"change_message_id":"645afb9f7afc0df8ad303b483238b02aad3c0e22","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                request.COOKIES[settings.THEME_COOKIE_NAME]"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"        except KeyError:"},{"line_number":66,"context_line":"            setattr(_local, \u0027theme\u0027, settings.DEFAULT_THEME)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def process_response(self, request, response):"},{"line_number":69,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_acc64b47","line":66,"updated":"2016-02-10 17:50:59.000000000","message":"Why use setattr here?  If you know the name of the attribute, why not just set it normally?","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                request.COOKIES[settings.THEME_COOKIE_NAME]"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"        except KeyError:"},{"line_number":66,"context_line":"            setattr(_local, \u0027theme\u0027, settings.DEFAULT_THEME)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def process_response(self, request, response):"},{"line_number":69,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_15bbdee6","line":66,"in_reply_to":"3a57f1b5_acc64b47","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8c6af3b17ef987c2b16a8a12d74004cedaabaee5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                request.COOKIES[settings.THEME_COOKIE_NAME]"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"        except KeyError:"},{"line_number":66,"context_line":"            setattr(_local, \u0027theme\u0027, settings.DEFAULT_THEME)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def process_response(self, request, response):"},{"line_number":69,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_fb12b308","line":66,"in_reply_to":"3a57f1b5_acc64b47","updated":"2016-02-10 19:28:12.000000000","message":"It is clearer to set it directly with setattr. setattr is necessary when the attribute isn\u0027t a literal string but in this case _local.theme \u003d settings.DEFAULT_THEME is clearer (and same in the try: block)","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                request.COOKIES[settings.THEME_COOKIE_NAME]"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"        except KeyError:"},{"line_number":66,"context_line":"            setattr(_local, \u0027theme\u0027, settings.DEFAULT_THEME)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def process_response(self, request, response):"},{"line_number":69,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_29000201","line":66,"in_reply_to":"3a57f1b5_fb12b308","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":9659,"name":"Matt Wood","email":"matt.wood@hpe.com","username":"woodm1979"},"change_message_id":"645afb9f7afc0df8ad303b483238b02aad3c0e22","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            if not template_name.startswith(\u0027/\u0027):"},{"line_number":99,"context_line":"                # Note (hurgleburgler): Is there a better way to get this path?"},{"line_number":100,"context_line":"                yield safe_join("},{"line_number":101,"context_line":"                    \u0027openstack_dashboard\u0027,"},{"line_number":102,"context_line":"                    theme_path,"},{"line_number":103,"context_line":"                    \u0027templates\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_0c2c3f01","line":100,"updated":"2016-02-10 17:50:59.000000000","message":"Why is this a generator?  You\u0027re only returning once.","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            if not template_name.startswith(\u0027/\u0027):"},{"line_number":99,"context_line":"                # Note (hurgleburgler): Is there a better way to get this path?"},{"line_number":100,"context_line":"                yield safe_join("},{"line_number":101,"context_line":"                    \u0027openstack_dashboard\u0027,"},{"line_number":102,"context_line":"                    theme_path,"},{"line_number":103,"context_line":"                    \u0027templates\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_9597ce8f","line":100,"in_reply_to":"3a57f1b5_0c2c3f01","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# Get the themes dir from settings"},{"line_number":47,"context_line":"def get_theme_dir():"},{"line_number":48,"context_line":"    return getattr(settings, \u0027THEME_COLLECTION_DIR\u0027, \u0027themes\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_af8bc51d","line":47,"updated":"2016-02-24 19:52:22.000000000","message":"My first thought here was that it returns a directory where a _specific_ them (like themes/default) is stored. Perhaps more proper function name would be \u0027get_themes_dir()\u0027?","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":12281,"name":"Itxaka","email":"igarcia@suse.com","username":"itxaka"},"change_message_id":"d6a28bab64c0878c76e0cd6b4175174a8fb7a454","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        yield base_context"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"# A piece of middleware that"},{"line_number":76,"context_line":"class ThemeMiddleware(object):"},{"line_number":77,"context_line":"    \"\"\"The Theme Middleware component.  The custom template loaders"},{"line_number":78,"context_line":"       don\u0027t have access to the request object, so we need to store"}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_d9e433ad","line":75,"updated":"2016-02-24 12:07:05.000000000","message":"the suspense is killing me!","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        # If the cookie doesn\u0027t exist, set it to the default theme"},{"line_number":109,"context_line":"        theme \u003d getattr(_local, \u0027theme\u0027, get_default_theme())"},{"line_number":110,"context_line":"        theme_path \u003d \u0027\u0027"},{"line_number":111,"context_line":"        for each_theme in get_themes():"},{"line_number":112,"context_line":"            if theme \u003d\u003d each_theme[0]:"},{"line_number":113,"context_line":"                theme_path \u003d each_theme[2]"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_aff1056d","line":111,"updated":"2016-02-24 19:52:22.000000000","message":"Would\n\n  for theme, label, path in get_themes()\n    ...\n\nallow for a more understandable code?","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def load_template_source(self, template_name, template_dirs\u003dNone):"},{"line_number":140,"context_line":"        for path in self.get_template_sources(template_name):"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                with io.open(path, encoding\u003dsettings.FILE_CHARSET) as file:"},{"line_number":143,"context_line":"                    return file.read(), path"},{"line_number":144,"context_line":"            except IOError:"},{"line_number":145,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_3a3d31bc","line":142,"updated":"2016-02-24 19:52:22.000000000","message":"this setting looks unfamiliar to me (not found in docs), where does it come from?","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"}],"openstack_dashboard/local/local_settings.py.example":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8c6af3b17ef987c2b16a8a12d74004cedaabaee5","unresolved":false,"context_lines":[{"line_number":422,"context_line":"#TROVE_ADD_USER_PERMS \u003d []"},{"line_number":423,"context_line":"#TROVE_ADD_DATABASE_PERMS \u003d []"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"# Change this patch to the appropriate list of tuples container"},{"line_number":426,"context_line":"# a key, label and static directory containing two files:"},{"line_number":427,"context_line":"# _variables.scss and _styles.scss"},{"line_number":428,"context_line":"#AVAILABLE_THEMES \u003d (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027)"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3a57f1b5_7b72434b","line":425,"range":{"start_line":425,"start_character":54,"end_line":425,"end_character":63},"updated":"2016-02-10 19:28:12.000000000","message":"nit - \u0027containing\u0027","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":422,"context_line":"#TROVE_ADD_USER_PERMS \u003d []"},{"line_number":423,"context_line":"#TROVE_ADD_DATABASE_PERMS \u003d []"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"# Change this patch to the appropriate list of tuples container"},{"line_number":426,"context_line":"# a key, label and static directory containing two files:"},{"line_number":427,"context_line":"# _variables.scss and _styles.scss"},{"line_number":428,"context_line":"#AVAILABLE_THEMES \u003d (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027)"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3a57f1b5_364b7d89","line":425,"range":{"start_line":425,"start_character":54,"end_line":425,"end_character":63},"in_reply_to":"3a57f1b5_7b72434b","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"7920e5a05f55b3738db0808a873d07e30e8237c0","unresolved":false,"context_lines":[{"line_number":425,"context_line":"# Change this patch to the appropriate list of tuples container"},{"line_number":426,"context_line":"# a key, label and static directory containing two files:"},{"line_number":427,"context_line":"# _variables.scss and _styles.scss"},{"line_number":428,"context_line":"#AVAILABLE_THEMES \u003d (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"LOGGING \u003d {"},{"line_number":431,"context_line":"    \u0027version\u0027: 1,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3a57f1b5_cc570701","line":428,"updated":"2016-02-10 17:32:03.000000000","message":"this is wrong, it needs to be within a list","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":425,"context_line":"# Change this patch to the appropriate list of tuples container"},{"line_number":426,"context_line":"# a key, label and static directory containing two files:"},{"line_number":427,"context_line":"# _variables.scss and _styles.scss"},{"line_number":428,"context_line":"#AVAILABLE_THEMES \u003d (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"LOGGING \u003d {"},{"line_number":431,"context_line":"    \u0027version\u0027: 1,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3a57f1b5_56671925","line":428,"in_reply_to":"3a57f1b5_9bcb7f53","updated":"2016-02-10 20:48:28.000000000","message":"I originally had it as a dictionary.  Being a list of tuples makes it inline with regions.","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":425,"context_line":"# Change this patch to the appropriate list of tuples container"},{"line_number":426,"context_line":"# a key, label and static directory containing two files:"},{"line_number":427,"context_line":"# _variables.scss and _styles.scss"},{"line_number":428,"context_line":"#AVAILABLE_THEMES \u003d (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"LOGGING \u003d {"},{"line_number":431,"context_line":"    \u0027version\u0027: 1,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3a57f1b5_35be1ad5","line":428,"in_reply_to":"3a57f1b5_cc570701","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8c6af3b17ef987c2b16a8a12d74004cedaabaee5","unresolved":false,"context_lines":[{"line_number":425,"context_line":"# Change this patch to the appropriate list of tuples container"},{"line_number":426,"context_line":"# a key, label and static directory containing two files:"},{"line_number":427,"context_line":"# _variables.scss and _styles.scss"},{"line_number":428,"context_line":"#AVAILABLE_THEMES \u003d (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"LOGGING \u003d {"},{"line_number":431,"context_line":"    \u0027version\u0027: 1,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"3a57f1b5_9bcb7f53","line":428,"in_reply_to":"3a57f1b5_cc570701","updated":"2016-02-10 19:28:12.000000000","message":"I would consider using either a list of dictionaries or a dictionary for this; it tends to be more readable and more inline with other parts of settings","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":431,"context_line":"# Change this patch to the appropriate list of tuples containing"},{"line_number":432,"context_line":"# a key, label and static directory containing two files:"},{"line_number":433,"context_line":"# _variables.scss and _styles.scss"},{"line_number":434,"context_line":"#AVAILABLE_THEMES \u003d ["},{"line_number":435,"context_line":"#    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":436,"context_line":"#    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":437,"context_line":"#]"}],"source_content_type":"application/octet-stream","patch_set":32,"id":"bae84128_ba15c19c","line":434,"updated":"2016-02-24 19:52:22.000000000","message":"What\u0027s about adding here other theme-related settings like path/default theme name/cookie name/etc?","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"}],"openstack_dashboard/settings.py":[{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":351,"context_line":"POLICY_CHECK_FUNCTION \u003d policy.check"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"# Add HORIZON_CONFIG to the context information for offline compression"},{"line_number":354,"context_line":"COMPRESS_OFFLINE_CONTEXT_BASE \u003d {"},{"line_number":355,"context_line":"    \u0027WEBROOT\u0027: WEBROOT,"},{"line_number":356,"context_line":"    \u0027STATIC_URL\u0027: STATIC_URL,"},{"line_number":357,"context_line":"    \u0027HORIZON_CONFIG\u0027: HORIZON_CONFIG"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_d09f9b5d","line":354,"updated":"2016-02-10 16:53:33.000000000","message":"you are renaming a standard django configuration item here, this seems concerning, could use more explanation in this area for others","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":351,"context_line":"POLICY_CHECK_FUNCTION \u003d policy.check"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"# Add HORIZON_CONFIG to the context information for offline compression"},{"line_number":354,"context_line":"COMPRESS_OFFLINE_CONTEXT_BASE \u003d {"},{"line_number":355,"context_line":"    \u0027WEBROOT\u0027: WEBROOT,"},{"line_number":356,"context_line":"    \u0027STATIC_URL\u0027: STATIC_URL,"},{"line_number":357,"context_line":"    \u0027HORIZON_CONFIG\u0027: HORIZON_CONFIG"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_d3ab1bd5","line":354,"in_reply_to":"3a57f1b5_d09f9b5d","updated":"2016-02-10 20:19:24.000000000","message":"Renaming to something less confusing and updating comments.","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"ae33d6992a55974e71b6e7784cbf59dddd6d642c","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"# \u0027key\u0027, \u0027label\u0027, \u0027path\u0027"},{"line_number":268,"context_line":"AVAILABLE_THEMES \u003d ["},{"line_number":269,"context_line":"    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":270,"context_line":"    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":271,"context_line":"]"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bae84128_f5863ada","line":269,"updated":"2016-02-24 19:51:22.000000000","message":"middle value should be localized as it\u0027s user visible.","commit_id":"5ec868f75d4f202ee02fa9bcd2165b546b679c1c"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"b5a50c39ea5a845da3901d83dad5b0cfd5746607","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"# \u0027key\u0027, \u0027label\u0027, \u0027path\u0027"},{"line_number":268,"context_line":"AVAILABLE_THEMES \u003d ["},{"line_number":269,"context_line":"    (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":270,"context_line":"    (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":271,"context_line":"]"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bae84128_acf0e8ca","line":269,"in_reply_to":"bae84128_f5863ada","updated":"2016-02-24 23:00:18.000000000","message":"Done","commit_id":"5ec868f75d4f202ee02fa9bcd2165b546b679c1c"},{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"a08e7c1e3e1ae8c99e88d31c782153d96e841748","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"# \u0027key\u0027, \u0027label\u0027, \u0027path\u0027"},{"line_number":268,"context_line":"AVAILABLE_THEMES \u003d ["},{"line_number":269,"context_line":"    (\u0027default\u0027, _(\u0027Default\u0027), \u0027themes/default\u0027),"},{"line_number":270,"context_line":"    (\u0027material\u0027, _(\u0027Material\u0027), \u0027themes/material\u0027),"},{"line_number":271,"context_line":"]"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"bae84128_d97d22b3","line":269,"updated":"2016-02-25 01:42:06.000000000","message":"I\u0027m concerned that the translation of \"Default\" as in the default theme should be different than the translation of \"Default\" in other contexts, and providing a translation for the word \"Material\" won\u0027t make any sense without context.\n\nPlease change these to use pgettext_lazy, something like\npgettext_lazy(\"Default style theme\", u\"Default\")","commit_id":"aec05a607ca46c2610ccca9985d980cee50a6b8e"}],"openstack_dashboard/templates/header/_theme_list.html":[{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        var CookieDate \u003d new Date;"},{"line_number":36,"context_line":"        CookieDate.setFullYear(CookieDate.getFullYear( ) +10);"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        // TODO: Escape this?"},{"line_number":39,"context_line":"        document.cookie \u003d \u0027{{ theme_cookie }}\u003d\u0027 + $this.data(\u0027theme\u0027) + \u0027; path\u003d/; expires\u003d\u0027 + CookieDate.toGMTString( ) + \u0027;\u0027;"},{"line_number":40,"context_line":"        document.location.reload();"},{"line_number":41,"context_line":"      });"}],"source_content_type":"text/html","patch_set":11,"id":"3a57f1b5_9004c37e","line":38,"updated":"2016-02-10 16:53:33.000000000","message":"either escape this or don\u0027t.  there is no try / todo","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        var CookieDate \u003d new Date;"},{"line_number":36,"context_line":"        CookieDate.setFullYear(CookieDate.getFullYear( ) +10);"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        // TODO: Escape this?"},{"line_number":39,"context_line":"        document.cookie \u003d \u0027{{ theme_cookie }}\u003d\u0027 + $this.data(\u0027theme\u0027) + \u0027; path\u003d/; expires\u003d\u0027 + CookieDate.toGMTString( ) + \u0027;\u0027;"},{"line_number":40,"context_line":"        document.location.reload();"},{"line_number":41,"context_line":"      });"}],"source_content_type":"text/html","patch_set":11,"id":"3a57f1b5_53308b9e","line":38,"in_reply_to":"3a57f1b5_9004c37e","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"cd111dd944121b9b537263dd96d803bae9ff2c5a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"       href\u003d\"#\""},{"line_number":14,"context_line":"       target\u003d\"_self\"\u003e"},{"line_number":15,"context_line":"      \u003cspan class\u003d\"fa fa-check dropdown-selected-icon\"\u003e\u003c/span\u003e"},{"line_number":16,"context_line":"      \u003cspan class\u003d\"dropdown-title\"\u003e{{ theme.1 }}\u003c/span\u003e"},{"line_number":17,"context_line":"    \u003c/a\u003e"},{"line_number":18,"context_line":"  \u003c/li\u003e"},{"line_number":19,"context_line":"  {% endfor %}"}],"source_content_type":"text/html","patch_set":29,"id":"dae33548_7e07ed81","line":16,"updated":"2016-02-18 05:06:09.000000000","message":"Do we need to use trans because this value will be displayed on page?\n\n{% trans theme.1 %}","commit_id":"e1baad3cf2f7a5af910478791bc890d75dce89ae"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"17374d833fdf6e5cfccb15f4250379b304b26fdb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"       href\u003d\"#\""},{"line_number":14,"context_line":"       target\u003d\"_self\"\u003e"},{"line_number":15,"context_line":"      \u003cspan class\u003d\"fa fa-check dropdown-selected-icon\"\u003e\u003c/span\u003e"},{"line_number":16,"context_line":"      \u003cspan class\u003d\"dropdown-title\"\u003e{{ theme.1 }}\u003c/span\u003e"},{"line_number":17,"context_line":"    \u003c/a\u003e"},{"line_number":18,"context_line":"  \u003c/li\u003e"},{"line_number":19,"context_line":"  {% endfor %}"}],"source_content_type":"text/html","patch_set":29,"id":"dae33548_52581d56","line":16,"in_reply_to":"dae33548_7e07ed81","updated":"2016-02-18 05:42:05.000000000","message":"As I understand it, the value of the variable theme.1 will be displayed - that can\u0027t be translated, can it?","commit_id":"e1baad3cf2f7a5af910478791bc890d75dce89ae"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        }"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        var CookieDate \u003d new Date;"},{"line_number":36,"context_line":"        CookieDate.setFullYear(CookieDate.getFullYear( ) +10);"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        document.cookie \u003d \u0027{{ theme_cookie }}\u003d\u0027 + $this.data(\u0027theme\u0027) + \u0027; path\u003d/; expires\u003d\u0027 + CookieDate.toGMTString( ) + \u0027;\u0027;"},{"line_number":39,"context_line":"        document.location.reload();"}],"source_content_type":"text/html","patch_set":32,"id":"bae84128_f55aba29","line":36,"updated":"2016-02-24 19:52:22.000000000","message":"Is it obligatory to set Expires for cookie? Because setting Expires in 10 years from now looks the same as not setting Expires at all.","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"}],"openstack_dashboard/templatetags/themes.py":[{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_theme(request):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    this_theme \u003d settings.DEFAULT_THEME"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        theme \u003d request.COOKIES[settings.THEME_COOKIE_NAME]"},{"line_number":33,"context_line":"        for each_theme in settings.AVAILABLE_THEMES:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_701107ac","line":30,"updated":"2016-02-10 16:53:33.000000000","message":"look for / use default values of these new settings","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def get_theme(request):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    this_theme \u003d settings.DEFAULT_THEME"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        theme \u003d request.COOKIES[settings.THEME_COOKIE_NAME]"},{"line_number":33,"context_line":"        for each_theme in settings.AVAILABLE_THEMES:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_b3e8dfe3","line":30,"in_reply_to":"3a57f1b5_701107ac","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def find_asset(theme, asset):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    theme_path \u003d \u0027\u0027"},{"line_number":45,"context_line":"    for each_theme in settings.AVAILABLE_THEMES:"},{"line_number":46,"context_line":"        name, label, path \u003d each_theme"},{"line_number":47,"context_line":"        if theme \u003d\u003d name:"},{"line_number":48,"context_line":"            theme_path \u003d path"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_d020fbf9","line":45,"updated":"2016-02-10 16:53:33.000000000","message":"same comment","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":42,"context_line":"def find_asset(theme, asset):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    theme_path \u003d \u0027\u0027"},{"line_number":45,"context_line":"    for each_theme in settings.AVAILABLE_THEMES:"},{"line_number":46,"context_line":"        name, label, path \u003d each_theme"},{"line_number":47,"context_line":"        if theme \u003d\u003d name:"},{"line_number":48,"context_line":"            theme_path \u003d path"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_73f267d4","line":45,"in_reply_to":"3a57f1b5_d020fbf9","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":9659,"name":"Matt Wood","email":"matt.wood@hpe.com","username":"woodm1979"},"change_message_id":"645afb9f7afc0df8ad303b483238b02aad3c0e22","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    theme_path \u003d \u0027\u0027"},{"line_number":45,"context_line":"    for each_theme in settings.AVAILABLE_THEMES:"},{"line_number":46,"context_line":"        name, label, path \u003d each_theme"},{"line_number":47,"context_line":"        if theme \u003d\u003d name:"},{"line_number":48,"context_line":"            theme_path \u003d path"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_ec476375","line":46,"updated":"2016-02-10 17:50:59.000000000","message":"The above 2 lines can be combined:\n\nfor name, label, path in settings.AVAILABLE_THEMES:","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    theme_path \u003d \u0027\u0027"},{"line_number":45,"context_line":"    for each_theme in settings.AVAILABLE_THEMES:"},{"line_number":46,"context_line":"        name, label, path \u003d each_theme"},{"line_number":47,"context_line":"        if theme \u003d\u003d name:"},{"line_number":48,"context_line":"            theme_path \u003d path"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a57f1b5_5577163a","line":46,"in_reply_to":"3a57f1b5_ec476375","updated":"2016-02-10 20:48:28.000000000","message":"Done","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        theme \u003d request.COOKIES[hz_themes.get_theme_cookie_name()]"},{"line_number":35,"context_line":"        for each_theme in hz_themes.get_themes():"},{"line_number":36,"context_line":"            if theme \u003d\u003d each_theme[0]:"},{"line_number":37,"context_line":"                this_theme \u003d each_theme[0]"},{"line_number":38,"context_line":"    except KeyError:"},{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_c7ec2d2c","line":37,"updated":"2016-02-24 19:52:22.000000000","message":"In case of many themes adding \u0027break\u0027 here would be nice (but I\u0027m not sure what\u0027s the reasonable themes threshold when it becomes reasonable).","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    theme_path \u003d \u0027\u0027"},{"line_number":47,"context_line":"    for name, label, path in hz_themes.get_themes():"},{"line_number":48,"context_line":"        if theme \u003d\u003d name:"},{"line_number":49,"context_line":"            theme_path \u003d path"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    theme_path \u003d os.path.join(settings.ROOT_PATH, theme_path)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_67dc4175","line":49,"updated":"2016-02-24 19:52:22.000000000","message":"same thing here.","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"}],"openstack_dashboard/test/integration_tests/horizon.conf":[{"author":{"_account_id":14124,"name":"Matt Borland","email":"matt.borland@hpe.com","username":"mborland"},"change_message_id":"45bf933e655111884b279d600d1c04e0d0a561b2","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"[image]"},{"line_number":33,"context_line":"# http accessible image (string value)"},{"line_number":34,"context_line":"http_image\u003dhttp://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[identity]"},{"line_number":37,"context_line":"# Username to use for non-admin API requests. (string value)"}],"source_content_type":"text/plain","patch_set":3,"id":"5a5ae5dd_befb2478","line":34,"updated":"2016-02-08 16:13:21.000000000","message":"Was the deletion of images_list intentional for this patch?","commit_id":"1ee11fdd7907b3e94687401d32cd47d08dac7004"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"2b2a708d0237f943144d59f92a00014de64253a7","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"[image]"},{"line_number":33,"context_line":"# http accessible image (string value)"},{"line_number":34,"context_line":"http_image\u003dhttp://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[identity]"},{"line_number":37,"context_line":"# Username to use for non-admin API requests. (string value)"}],"source_content_type":"text/plain","patch_set":3,"id":"3a57f1b5_e19481e9","line":34,"in_reply_to":"5a5ae5dd_befb2478","updated":"2016-02-09 20:48:32.000000000","message":"Definitely not.  Thanks :)","commit_id":"1ee11fdd7907b3e94687401d32cd47d08dac7004"},{"author":{"_account_id":6650,"name":"Eric Peterson","email":"ejpetey@gmail.com","username":"ericpeterson-l"},"change_message_id":"60770ad0d85aaf7c46840aeceaae9be2f9ed0995","unresolved":false,"context_lines":[{"line_number":32,"context_line":"[image]"},{"line_number":33,"context_line":"# http accessible image (string value)"},{"line_number":34,"context_line":"http_image\u003dhttp://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"images_list\u003dcirros-0.3.4-x86_64-uec,"},{"line_number":37,"context_line":"            cirros-0.3.4-x86_64-uec-kernel,"},{"line_number":38,"context_line":"            cirros-0.3.4-x86_64-uec-ramdisk"}],"source_content_type":"text/plain","patch_set":11,"id":"3a57f1b5_306b8f20","line":35,"updated":"2016-02-10 16:53:33.000000000","message":"revert this thing?","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"370bc371e182ec4a40d33ec43cfedc1b62e76dce","unresolved":false,"context_lines":[{"line_number":32,"context_line":"[image]"},{"line_number":33,"context_line":"# http accessible image (string value)"},{"line_number":34,"context_line":"http_image\u003dhttp://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"images_list\u003dcirros-0.3.4-x86_64-uec,"},{"line_number":37,"context_line":"            cirros-0.3.4-x86_64-uec-kernel,"},{"line_number":38,"context_line":"            cirros-0.3.4-x86_64-uec-ramdisk"}],"source_content_type":"text/plain","patch_set":11,"id":"3a57f1b5_33b70fda","line":35,"in_reply_to":"3a57f1b5_0b142842","updated":"2016-02-10 20:19:24.000000000","message":"Done","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"2ae55e0259841fff605f6a6818d5903167869bae","unresolved":false,"context_lines":[{"line_number":32,"context_line":"[image]"},{"line_number":33,"context_line":"# http accessible image (string value)"},{"line_number":34,"context_line":"http_image\u003dhttp://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"images_list\u003dcirros-0.3.4-x86_64-uec,"},{"line_number":37,"context_line":"            cirros-0.3.4-x86_64-uec-kernel,"},{"line_number":38,"context_line":"            cirros-0.3.4-x86_64-uec-ramdisk"}],"source_content_type":"text/plain","patch_set":11,"id":"3a57f1b5_0b142842","line":35,"in_reply_to":"3a57f1b5_306b8f20","updated":"2016-02-10 16:57:49.000000000","message":"+1, forgot to do it a i9n test fixup","commit_id":"ea92e7bb2000a4c6972778d9e9dfa657e6d4b8e6"}],"openstack_dashboard/theme_settings.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    for ndx, each_theme in enumerate(available_themes):"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Maintain Backward Compatibility for CUSTOM_THEME_PATH"},{"line_number":51,"context_line":"        if custom_path:"},{"line_number":52,"context_line":"            if each_theme[2] \u003d\u003d custom_path:"},{"line_number":53,"context_line":"                custom_ndx \u003d ndx"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_07b8d5e4","line":51,"updated":"2016-02-24 19:52:22.000000000","message":"It makes sense to me to make it a keyword arg (not mandatory, since it\u0027s for keeping backwards compatibility).","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Maintain Backward Compatibility for CUSTOM_THEME_PATH"},{"line_number":51,"context_line":"        if custom_path:"},{"line_number":52,"context_line":"            if each_theme[2] \u003d\u003d custom_path:"},{"line_number":53,"context_line":"                custom_ndx \u003d ndx"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # Maintain Backward Compatibility for DEFAULT_THEME_PATH"}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_c78b8d1d","line":52,"updated":"2016-02-24 19:52:22.000000000","message":"Destructuring a tuple into separate values would slightly improve readability.","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                custom_ndx \u003d ndx"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # Maintain Backward Compatibility for DEFAULT_THEME_PATH"},{"line_number":56,"context_line":"        if default_path:"},{"line_number":57,"context_line":"            if each_theme[0] \u003d\u003d \u0027default\u0027:"},{"line_number":58,"context_line":"                default_ndx \u003d ndx"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_677ba12a","line":56,"updated":"2016-02-24 19:52:22.000000000","message":"Same comment here about keyword arg.","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"b909005cddf25d2316e07323fadcb986d6322f17","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        # If CUSTOM_THEME_PATH is set, then we should set that as the default"},{"line_number":64,"context_line":"        # theme to make sure that upgrading Horizon doesn\u0027t jostle anyone"},{"line_number":65,"context_line":"        default_theme \u003d available_themes[custom_ndx][0]"},{"line_number":66,"context_line":"        logging.warning(\"Your AVAILABLE_THEMES already contains your \""},{"line_number":67,"context_line":"                        \"CUSTOM_THEME_PATH, therefore using configuration in \""},{"line_number":68,"context_line":"                        \"AVAILABLE_THEMES for %s.\" % custom_path)"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bae84128_e71051ae","line":66,"updated":"2016-02-24 19:52:22.000000000","message":"See the comment in docs about deprecating CUSTOM_THEME_PATH.","commit_id":"6b4d1f38e7a8a02418f573e82c4390bbe3334a68"}],"openstack_dashboard/themes/material/templates/header/_header.html":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8c6af3b17ef987c2b16a8a12d74004cedaabaee5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"          \u003cspan class\u003d\"md-hamburger-layer md-hamburger-menu\"\u003e\u003c/span\u003e"},{"line_number":19,"context_line":"        \u003c/button\u003e"},{"line_number":20,"context_line":"        {% theme_dir as theme_dir %}"},{"line_number":21,"context_line":"        \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ theme_dir }}/material/js/material.hamburger.js\u0027\u003e\u003c/script\u003e"},{"line_number":22,"context_line":"      \u003c/div\u003e"},{"line_number":23,"context_line":"      {% include \"header/_brand.html\" %}"},{"line_number":24,"context_line":"    \u003c/div\u003e"}],"source_content_type":"text/html","patch_set":12,"id":"3a57f1b5_1b19cf88","line":21,"range":{"start_line":21,"start_character":24,"end_line":21,"end_character":34},"updated":"2016-02-10 19:28:12.000000000","message":"Is the use of STATIC_URL here intentional?","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":11778,"name":"Diana Whitten","email":"hurgleburgler@gmail.com","username":"hurgleburgler"},"change_message_id":"d98a5bd04ecc3288572234838836b5b63807e663","unresolved":false,"context_lines":[{"line_number":18,"context_line":"          \u003cspan class\u003d\"md-hamburger-layer md-hamburger-menu\"\u003e\u003c/span\u003e"},{"line_number":19,"context_line":"        \u003c/button\u003e"},{"line_number":20,"context_line":"        {% theme_dir as theme_dir %}"},{"line_number":21,"context_line":"        \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ theme_dir }}/material/js/material.hamburger.js\u0027\u003e\u003c/script\u003e"},{"line_number":22,"context_line":"      \u003c/div\u003e"},{"line_number":23,"context_line":"      {% include \"header/_brand.html\" %}"},{"line_number":24,"context_line":"    \u003c/div\u003e"}],"source_content_type":"text/html","patch_set":12,"id":"3a57f1b5_f69f2501","line":21,"range":{"start_line":21,"start_character":24,"end_line":21,"end_character":34},"in_reply_to":"3a57f1b5_1b19cf88","updated":"2016-02-10 20:48:28.000000000","message":"It is not unintentional.  What else did you have in mind?","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"fbc8f21dccf90eb03cd1cf59babff1826836e96b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"          \u003cspan class\u003d\"md-hamburger-layer md-hamburger-menu\"\u003e\u003c/span\u003e"},{"line_number":19,"context_line":"        \u003c/button\u003e"},{"line_number":20,"context_line":"        {% theme_dir as theme_dir %}"},{"line_number":21,"context_line":"        \u003cscript src\u003d\u0027{{ STATIC_URL }}{{ theme_dir }}/material/js/material.hamburger.js\u0027\u003e\u003c/script\u003e"},{"line_number":22,"context_line":"      \u003c/div\u003e"},{"line_number":23,"context_line":"      {% include \"header/_brand.html\" %}"},{"line_number":24,"context_line":"    \u003c/div\u003e"}],"source_content_type":"text/html","patch_set":12,"id":"3a57f1b5_29ea4210","line":21,"range":{"start_line":21,"start_character":24,"end_line":21,"end_character":34},"in_reply_to":"3a57f1b5_f69f2501","updated":"2016-02-10 20:52:18.000000000","message":"I misread this - i see now it\u0027s always referring to the material theme hamburger, my mistake.","commit_id":"9d4c5ca72e0c283f074ca5fe1c32c4764a53d58b"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"cd111dd944121b9b537263dd96d803bae9ff2c5a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% load branding i18n %}"},{"line_number":2,"context_line":"{% load context_selection %}"},{"line_number":3,"context_line":"{% load compress %}"},{"line_number":4,"context_line":"{% load themes %}"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"\u003cnav class\u003d\"navbar-inverse material-header navbar-fixed-top\"\u003e"}],"source_content_type":"text/html","patch_set":29,"id":"dae33548_e36b661c","line":3,"updated":"2016-02-18 05:06:09.000000000","message":"Can we remove it?","commit_id":"e1baad3cf2f7a5af910478791bc890d75dce89ae"},{"author":{"_account_id":12071,"name":"Richard Jones","email":"r1chardj0n3s@gmail.com","username":"richard"},"change_message_id":"a25c27fac2cd700600398132237ff06b203a92af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% load branding i18n %}"},{"line_number":2,"context_line":"{% load context_selection %}"},{"line_number":3,"context_line":"{% load compress %}"},{"line_number":4,"context_line":"{% load themes %}"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"\u003cnav class\u003d\"navbar-inverse material-header navbar-fixed-top\"\u003e"}],"source_content_type":"text/html","patch_set":29,"id":"dae33548_b23d29df","line":3,"in_reply_to":"dae33548_e36b661c","updated":"2016-02-18 05:49:06.000000000","message":"Done","commit_id":"e1baad3cf2f7a5af910478791bc890d75dce89ae"}]}
