)]}'
{"horizon/base.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7919268fe754760ed3268dd456a4ddc4b9793be7","unresolved":false,"context_lines":[{"line_number":812,"context_line":"                            \"PANEL_GROUP defined.\", config.__name__)"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def _process_panel_configuration(self, config):"},{"line_number":815,"context_line":"        \"\"\"Add, remove and set default panels on the dashboard.\"\"\""},{"line_number":816,"context_line":"        try:"},{"line_number":817,"context_line":"            dashboard \u003d config.get(\u0027PANEL_DASHBOARD\u0027)"},{"line_number":818,"context_line":"            if not dashboard:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Fmrg%3D","line":815,"updated":"2014-03-15 07:59:02.000000000","message":"Moved the existing panel configuration processing code to a different method.","commit_id":"dfdc4a533e69c0df1c3defc43fa337cb210e7268"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8cce98b9ab9c8d488c5ad2ee9dcfd546c083c779","unresolved":false,"context_lines":[{"line_number":872,"context_line":"                               (PanelGroup, ),"},{"line_number":873,"context_line":"                               dict("},{"line_number":874,"context_line":"                                   slug\u003dpanel_group_slug,"},{"line_number":875,"context_line":"                                   name\u003dconfig.get(\u0027PANEL_GROUP_NAME\u0027),"},{"line_number":876,"context_line":"                               ))"},{"line_number":877,"context_line":"            # Add the panel group to dashboard"},{"line_number":878,"context_line":"            panels \u003d list(dashboard_cls.panels)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BTko%3D","line":875,"updated":"2014-03-27 18:10:32.000000000","message":"The document says PANEL_GROUP_NAME is a required field. Isn\u0027t it better to check PANEL_GROUP_NAME is specified.","commit_id":"dfdc4a533e69c0df1c3defc43fa337cb210e7268"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7335112cb225e6ac2969aacb17f8c914db74a36e","unresolved":false,"context_lines":[{"line_number":872,"context_line":"                               (PanelGroup, ),"},{"line_number":873,"context_line":"                               dict("},{"line_number":874,"context_line":"                                   slug\u003dpanel_group_slug,"},{"line_number":875,"context_line":"                                   name\u003dconfig.get(\u0027PANEL_GROUP_NAME\u0027),"},{"line_number":876,"context_line":"                               ))"},{"line_number":877,"context_line":"            # Add the panel group to dashboard"},{"line_number":878,"context_line":"            panels \u003d list(dashboard_cls.panels)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BSzg%3D","line":875,"in_reply_to":"AAAAWH%2F%2BTko%3D","updated":"2014-03-27 19:50:41.000000000","message":"Good catch, adding the validation","commit_id":"dfdc4a533e69c0df1c3defc43fa337cb210e7268"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8cce98b9ab9c8d488c5ad2ee9dcfd546c083c779","unresolved":false,"context_lines":[{"line_number":873,"context_line":"                               dict("},{"line_number":874,"context_line":"                                   slug\u003dpanel_group_slug,"},{"line_number":875,"context_line":"                                   name\u003dconfig.get(\u0027PANEL_GROUP_NAME\u0027),"},{"line_number":876,"context_line":"                               ))"},{"line_number":877,"context_line":"            # Add the panel group to dashboard"},{"line_number":878,"context_line":"            panels \u003d list(dashboard_cls.panels)"},{"line_number":879,"context_line":"            panels.append(panel_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BTlQ%3D","line":876,"updated":"2014-03-27 18:10:32.000000000","message":"Nit: I prefer to { } style and dict() costs more than {}.\n\n {\u0027slug\u0027: panel_group_slug,\n  \u0027name\u0027: config.get(\u0027PANEL_GROUP_NAME\u0027)}","commit_id":"dfdc4a533e69c0df1c3defc43fa337cb210e7268"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7335112cb225e6ac2969aacb17f8c914db74a36e","unresolved":false,"context_lines":[{"line_number":873,"context_line":"                               dict("},{"line_number":874,"context_line":"                                   slug\u003dpanel_group_slug,"},{"line_number":875,"context_line":"                                   name\u003dconfig.get(\u0027PANEL_GROUP_NAME\u0027),"},{"line_number":876,"context_line":"                               ))"},{"line_number":877,"context_line":"            # Add the panel group to dashboard"},{"line_number":878,"context_line":"            panels \u003d list(dashboard_cls.panels)"},{"line_number":879,"context_line":"            panels.append(panel_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BS0M%3D","line":876,"in_reply_to":"AAAAWH%2F%2BTlQ%3D","updated":"2014-03-27 19:50:41.000000000","message":"Done. good to know, thanks!","commit_id":"dfdc4a533e69c0df1c3defc43fa337cb210e7268"}],"openstack_dashboard/test/helpers.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7919268fe754760ed3268dd456a4ddc4b9793be7","unresolved":false,"context_lines":[{"line_number":420,"context_line":"    return sort_order[flavor.name]"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"class PluginTestCase(TestCase):"},{"line_number":424,"context_line":"    \"\"\"The ``PluginTestCase`` class is for use with tests which deal with the"},{"line_number":425,"context_line":"    pluggable dashboard and panel configuration, it takes care of backing up"},{"line_number":426,"context_line":"    and restoring the Horizon configuration."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2FmrA%3D","line":423,"updated":"2014-03-15 07:59:02.000000000","message":"Mostly same code from plugin_panel_tests, moved it here for re-usability.","commit_id":"dfdc4a533e69c0df1c3defc43fa337cb210e7268"}],"openstack_dashboard/test/test_plugins/panel_tests.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"7919268fe754760ed3268dd456a4ddc4b9793be7","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"@override_settings(HORIZON_CONFIG\u003dHORIZON_CONFIG,"},{"line_number":43,"context_line":"                   INSTALLED_APPS\u003dINSTALLED_APPS)"},{"line_number":44,"context_line":"class PanelPluginTests(test.TestCase):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def setUp(self):"},{"line_number":47,"context_line":"        super(PanelPluginTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2FmrY%3D","side":"PARENT","line":44,"updated":"2014-03-15 07:59:02.000000000","message":"I need to write the same setup/teardown for Panel Group config, moved this code to the base test helpers class for re-usability.","commit_id":"41a9bba503f82776387d02a065f6bf3f7cc3705c"}]}
