From 81d12c8a53d456db38010961aaab8dea26901ab7 Mon Sep 17 00:00:00 2001 From: Manuel Kaufmann Date: Tue, 15 Feb 2022 13:46:10 -0300 Subject: [PATCH 1/3] Revert "Cast CaseInsensitiveDict into dicts to make them JSON serializable" This reverts commit aca62266e91a14d01dd4a0422a79df18db7ffbca. --- readthedocs/integrations/models.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/readthedocs/integrations/models.py b/readthedocs/integrations/models.py index b3186a00c3a..adb96528945 100644 --- a/readthedocs/integrations/models.py +++ b/readthedocs/integrations/models.py @@ -101,15 +101,12 @@ def from_requests_exchange(self, response, related_object): :param related_object: Object to use for generic relationship. """ request = response.request - # NOTE: we need to cast ``request.headers`` and ``response.headers`` - # because it's a ``requests.structures.CaseInsensitiveDict`` which is - # not JSON serializable. obj = self.create( related_object=related_object, - request_headers=dict(request.headers) or {}, + request_headers=request.headers or {}, request_body=request.body or '', status_code=response.status_code, - response_headers=dict(response.headers), + response_headers=response.headers, response_body=response.text, ) self.delete_limit(related_object) From 72091cdb502a7b8e20b66fdd6b03c21d9bf20a43 Mon Sep 17 00:00:00 2001 From: Manuel Kaufmann Date: Tue, 15 Feb 2022 13:46:15 -0300 Subject: [PATCH 2/3] Revert "Migrations: rename migrations to avoid conflicts" This reverts commit 9414253290293bbfaa117bb4810f738f4d8ec8a5. --- ...0_remove_old_jsonfields.py => 0039_remove_old_jsonfields.py} | 2 +- ...0_remove_old_jsonfields.py => 0009_remove_old_jsonfields.py} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename readthedocs/builds/migrations/{0040_remove_old_jsonfields.py => 0039_remove_old_jsonfields.py} (90%) rename readthedocs/integrations/migrations/{0010_remove_old_jsonfields.py => 0009_remove_old_jsonfields.py} (94%) diff --git a/readthedocs/builds/migrations/0040_remove_old_jsonfields.py b/readthedocs/builds/migrations/0039_remove_old_jsonfields.py similarity index 90% rename from readthedocs/builds/migrations/0040_remove_old_jsonfields.py rename to readthedocs/builds/migrations/0039_remove_old_jsonfields.py index 6d0cfd07d86..8d34d4d66da 100644 --- a/readthedocs/builds/migrations/0040_remove_old_jsonfields.py +++ b/readthedocs/builds/migrations/0039_remove_old_jsonfields.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('builds', '0039_migrate_config_data'), + ('builds', '0038_add_new_jsonfields'), ] operations = [ diff --git a/readthedocs/integrations/migrations/0010_remove_old_jsonfields.py b/readthedocs/integrations/migrations/0009_remove_old_jsonfields.py similarity index 94% rename from readthedocs/integrations/migrations/0010_remove_old_jsonfields.py rename to readthedocs/integrations/migrations/0009_remove_old_jsonfields.py index c1f53454b88..786e7ae9dd0 100644 --- a/readthedocs/integrations/migrations/0010_remove_old_jsonfields.py +++ b/readthedocs/integrations/migrations/0009_remove_old_jsonfields.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('integrations', '0009_migrate_headers_data'), + ('integrations', '0008_add_new_jsonfields'), ] operations = [ From bdfc02490a5ff7ada8e0054890fe0ec35b9694e5 Mon Sep 17 00:00:00 2001 From: Manuel Kaufmann Date: Tue, 15 Feb 2022 13:46:20 -0300 Subject: [PATCH 3/3] Revert "Django3: remove old non-JSONFields and kept the new ones only" This reverts commit ff6184b209e62a3e1a19b5103a0306b07d0baa15. --- .../migrations/0039_remove_old_jsonfields.py | 22 ---------- readthedocs/builds/models.py | 1 + .../migrations/0009_remove_old_jsonfields.py | 40 ------------------- readthedocs/integrations/models.py | 7 +++- requirements/pip.txt | 4 -- 5 files changed, 6 insertions(+), 68 deletions(-) delete mode 100644 readthedocs/builds/migrations/0039_remove_old_jsonfields.py delete mode 100644 readthedocs/integrations/migrations/0009_remove_old_jsonfields.py diff --git a/readthedocs/builds/migrations/0039_remove_old_jsonfields.py b/readthedocs/builds/migrations/0039_remove_old_jsonfields.py deleted file mode 100644 index 8d34d4d66da..00000000000 --- a/readthedocs/builds/migrations/0039_remove_old_jsonfields.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-31 12:12 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('builds', '0038_add_new_jsonfields'), - ] - - operations = [ - migrations.RemoveField( - model_name='build', - name='_config', - ), - migrations.RenameField( - model_name='build', - old_name='_config_json', - new_name='_config', - ), - ] diff --git a/readthedocs/builds/models.py b/readthedocs/builds/models.py index 59b877fbb41..eda7ce05e7d 100644 --- a/readthedocs/builds/models.py +++ b/readthedocs/builds/models.py @@ -19,6 +19,7 @@ ModificationDateTimeField, ) from django_extensions.db.models import TimeStampedModel +from jsonfield import JSONField from polymorphic.models import PolymorphicModel import readthedocs.builds.automation_actions as actions diff --git a/readthedocs/integrations/migrations/0009_remove_old_jsonfields.py b/readthedocs/integrations/migrations/0009_remove_old_jsonfields.py deleted file mode 100644 index 786e7ae9dd0..00000000000 --- a/readthedocs/integrations/migrations/0009_remove_old_jsonfields.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-31 12:12 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('integrations', '0008_add_new_jsonfields'), - ] - - operations = [ - migrations.RemoveField( - model_name='httpexchange', - name='request_headers', - ), - migrations.RemoveField( - model_name='httpexchange', - name='response_headers', - ), - migrations.RemoveField( - model_name='integration', - name='provider_data', - ), - migrations.RenameField( - model_name='httpexchange', - old_name='request_headers_json', - new_name='request_headers', - ), - migrations.RenameField( - model_name='httpexchange', - old_name='response_headers_json', - new_name='response_headers', - ), - migrations.RenameField( - model_name='integration', - old_name='provider_data_json', - new_name='provider_data', - ), - ] diff --git a/readthedocs/integrations/models.py b/readthedocs/integrations/models.py index adb96528945..0cf1bd1893d 100644 --- a/readthedocs/integrations/models.py +++ b/readthedocs/integrations/models.py @@ -12,6 +12,7 @@ from django.db import models, transaction from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ +from jsonfield import JSONField from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import JsonLexer @@ -143,7 +144,8 @@ class HttpExchange(models.Model): date = models.DateTimeField(_('Date'), auto_now_add=True) - request_headers = models.JSONField( + request_headers = JSONField(_('Request headers')) + request_headers_json = models.JSONField( _('Request headers'), # Delete after deploy null=True, @@ -151,7 +153,8 @@ class HttpExchange(models.Model): ) request_body = models.TextField(_('Request body')) - response_headers = models.JSONField( + response_headers = JSONField(_('Request headers')) + response_headers_json = models.JSONField( _('Request headers'), # Delete after deploy null=True, diff --git a/requirements/pip.txt b/requirements/pip.txt index 552bd153000..51082c78f4d 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -21,10 +21,6 @@ drf-flex-fields==0.9.7 drf-extensions==0.7.1 django-vanilla-views==3.0.0 - -# This module is only used on migrations. We are now using Django's official -# JSONField. We should probably squash these migrations and remove this -# dependency as well. jsonfield==3.1.0 requests==2.27.1