)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"48598756fb73f0d6c2949aa14db24b39fd4dfe62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0fffb8c6_90275614","updated":"2021-10-12 05:47:01.000000000","message":"No response from murano core team, So approving it so that murano-dashboard support Django 3.2","commit_id":"81195976cd7a54cd2e216bf11e70bb6e24190883"}],"muranodashboard/catalog/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2f6452c721fa3195d750bdbd0830ed8c816bd62f","unresolved":true,"context_lines":[{"line_number":27,"context_line":"try:"},{"line_number":28,"context_line":"    from django.templatetags.static import static  # New way with Django 3.x"},{"line_number":29,"context_line":"except ImportError:"},{"line_number":30,"context_line":"    from django.contrib.staticfiles.templatetags.staticfiles import static"},{"line_number":31,"context_line":"from django.urls import reverse"},{"line_number":32,"context_line":"# django.contrib.formtools migration to django 1.8"},{"line_number":33,"context_line":"# https://docs.djangoproject.com/en/1.8/ref/contrib/formtools/"}],"source_content_type":"text/x-python","patch_set":4,"id":"3d3ee841_1def6a92","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":74},"updated":"2021-09-22 12:08:19.000000000","message":"There is no need for this \"except\" clause as this usage is already marked as deprecated in Django 2.2 and L.28 is the right way in Django 2.2.","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"378a1e7da29d649a1a10f78e3864f128b24f3100","unresolved":false,"context_lines":[{"line_number":27,"context_line":"try:"},{"line_number":28,"context_line":"    from django.templatetags.static import static  # New way with Django 3.x"},{"line_number":29,"context_line":"except ImportError:"},{"line_number":30,"context_line":"    from django.contrib.staticfiles.templatetags.staticfiles import static"},{"line_number":31,"context_line":"from django.urls import reverse"},{"line_number":32,"context_line":"# django.contrib.formtools migration to django 1.8"},{"line_number":33,"context_line":"# https://docs.djangoproject.com/en/1.8/ref/contrib/formtools/"}],"source_content_type":"text/x-python","patch_set":4,"id":"b1e691ca_333bbed9","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":74},"in_reply_to":"3d3ee841_1def6a92","updated":"2021-09-22 12:16:36.000000000","message":"Done","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"}],"muranodashboard/environments/topology.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2f6452c721fa3195d750bdbd0830ed8c816bd62f","unresolved":true,"context_lines":[{"line_number":17,"context_line":"try:"},{"line_number":18,"context_line":"    from django.templatetags.static import static  # New way with Django 3.x"},{"line_number":19,"context_line":"except ImportError:"},{"line_number":20,"context_line":"    from django.contrib.staticfiles.templatetags.staticfiles import static"},{"line_number":21,"context_line":"from django.template import loader"},{"line_number":22,"context_line":"from django.urls import reverse"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1e0697da_996b14f3","line":20,"updated":"2021-09-22 12:08:19.000000000","message":"Same as my comment in the previous file.","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"378a1e7da29d649a1a10f78e3864f128b24f3100","unresolved":false,"context_lines":[{"line_number":17,"context_line":"try:"},{"line_number":18,"context_line":"    from django.templatetags.static import static  # New way with Django 3.x"},{"line_number":19,"context_line":"except ImportError:"},{"line_number":20,"context_line":"    from django.contrib.staticfiles.templatetags.staticfiles import static"},{"line_number":21,"context_line":"from django.template import loader"},{"line_number":22,"context_line":"from django.urls import reverse"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"6373afc2_7ef68734","line":20,"in_reply_to":"1e0697da_996b14f3","updated":"2021-09-22 12:16:36.000000000","message":"Done","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"}],"muranodashboard/tests/unit/dynamic_ui/test_forms.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2f6452c721fa3195d750bdbd0830ed8c816bd62f","unresolved":true,"context_lines":[{"line_number":96,"context_line":"        form \u003d forms.DynamicFormMetaclass(\u0027foo_form\u0027, (), test_dict)"},{"line_number":97,"context_line":"        self.assertEqual(\u0027foo_form\u0027, form.__name__)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027foo_service\u0027, form.service)"},{"line_number":99,"context_line":"        self.assertIsInstance(form.declared_fields, collections.OrderedDict)"},{"line_number":100,"context_line":"        self.assertIn(\u0027foo_spec\u0027, form.declared_fields)"},{"line_number":101,"context_line":"        self.assertIsInstance(form.declared_fields[\u0027foo_spec\u0027],"},{"line_number":102,"context_line":"                              fields.CharField)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0b9224c2_cbbf35cc","side":"PARENT","line":99,"updated":"2021-09-22 12:08:19.000000000","message":"Does it work if you replace collections.OrderedDict with \"dict\"?","commit_id":"fb7d081bc89d9d2a80f0d49a32413c81f2d04289"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"378a1e7da29d649a1a10f78e3864f128b24f3100","unresolved":true,"context_lines":[{"line_number":96,"context_line":"        form \u003d forms.DynamicFormMetaclass(\u0027foo_form\u0027, (), test_dict)"},{"line_number":97,"context_line":"        self.assertEqual(\u0027foo_form\u0027, form.__name__)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027foo_service\u0027, form.service)"},{"line_number":99,"context_line":"        self.assertIsInstance(form.declared_fields, collections.OrderedDict)"},{"line_number":100,"context_line":"        self.assertIn(\u0027foo_spec\u0027, form.declared_fields)"},{"line_number":101,"context_line":"        self.assertIsInstance(form.declared_fields[\u0027foo_spec\u0027],"},{"line_number":102,"context_line":"                              fields.CharField)"}],"source_content_type":"text/x-python","patch_set":4,"id":"79225d3a_1168f4b3","side":"PARENT","line":99,"in_reply_to":"0b9224c2_cbbf35cc","updated":"2021-09-22 12:16:36.000000000","message":"I tried, and no, it didn\u0027t work for me.","commit_id":"fb7d081bc89d9d2a80f0d49a32413c81f2d04289"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2dc99caa2835a26b502a646c82e302f5e2911ac7","unresolved":true,"context_lines":[{"line_number":96,"context_line":"        form \u003d forms.DynamicFormMetaclass(\u0027foo_form\u0027, (), test_dict)"},{"line_number":97,"context_line":"        self.assertEqual(\u0027foo_form\u0027, form.__name__)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027foo_service\u0027, form.service)"},{"line_number":99,"context_line":"        self.assertIsInstance(form.declared_fields, collections.OrderedDict)"},{"line_number":100,"context_line":"        self.assertIn(\u0027foo_spec\u0027, form.declared_fields)"},{"line_number":101,"context_line":"        self.assertIsInstance(form.declared_fields[\u0027foo_spec\u0027],"},{"line_number":102,"context_line":"                              fields.CharField)"}],"source_content_type":"text/x-python","patch_set":4,"id":"94cb62a1_3f6c5abc","side":"PARENT","line":99,"in_reply_to":"79225d3a_1168f4b3","updated":"2021-09-22 17:20:53.000000000","message":"I tried and succeeded using your patch.","commit_id":"fb7d081bc89d9d2a80f0d49a32413c81f2d04289"}],"muranodashboard/tests/unit/packages/test_views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2f6452c721fa3195d750bdbd0830ed8c816bd62f","unresolved":true,"context_lines":[{"line_number":58,"context_line":"            except:"},{"line_number":59,"context_line":"                # This is for Django 3.x"},{"line_number":60,"context_line":"                self.assertIn(key.lower(), response)"},{"line_number":61,"context_line":"                self.assertEqual((key, val), (key, response[key.lower()]))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @mock.patch.object(views, \u0027exceptions\u0027)"},{"line_number":64,"context_line":"    @mock.patch.object(views, \u0027reverse\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"55c7c278_11a14855","line":61,"updated":"2021-09-22 12:08:19.000000000","message":"Perhaps an approach like https://review.opendev.org/c/openstack/horizon/+/777397 would be cleaner.","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"378a1e7da29d649a1a10f78e3864f128b24f3100","unresolved":true,"context_lines":[{"line_number":58,"context_line":"            except:"},{"line_number":59,"context_line":"                # This is for Django 3.x"},{"line_number":60,"context_line":"                self.assertIn(key.lower(), response)"},{"line_number":61,"context_line":"                self.assertEqual((key, val), (key, response[key.lower()]))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @mock.patch.object(views, \u0027exceptions\u0027)"},{"line_number":64,"context_line":"    @mock.patch.object(views, \u0027reverse\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"8e389cb0_31b3a1c3","line":61,"in_reply_to":"55c7c278_11a14855","updated":"2021-09-22 12:16:36.000000000","message":"I saw this, and wanted to do something like this, but couldn\u0027t find out how. Could you give an example of what it would be?","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2dc99caa2835a26b502a646c82e302f5e2911ac7","unresolved":true,"context_lines":[{"line_number":58,"context_line":"            except:"},{"line_number":59,"context_line":"                # This is for Django 3.x"},{"line_number":60,"context_line":"                self.assertIn(key.lower(), response)"},{"line_number":61,"context_line":"                self.assertEqual((key, val), (key, response[key.lower()]))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @mock.patch.object(views, \u0027exceptions\u0027)"},{"line_number":64,"context_line":"    @mock.patch.object(views, \u0027reverse\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c3900e0d_a00aae9c","line":61,"in_reply_to":"8e389cb0_31b3a1c3","updated":"2021-09-22 17:20:53.000000000","message":"Let me update it. At least it works in my local test.","commit_id":"48ecd37113f250df29c6ef689c5714829bf12c99"}]}
