diff --git a/readthedocs/builds/migrations/0040_remove_old_jsonfields.py b/readthedocs/builds/migrations/0040_remove_old_jsonfields.py deleted file mode 100644 index 6d0cfd07d86..00000000000 --- a/readthedocs/builds/migrations/0040_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', '0039_migrate_config_data'), - ] - - 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/0010_remove_old_jsonfields.py b/readthedocs/integrations/migrations/0010_remove_old_jsonfields.py deleted file mode 100644 index c1f53454b88..00000000000 --- a/readthedocs/integrations/migrations/0010_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', '0009_migrate_headers_data'), - ] - - 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 b3186a00c3a..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 @@ -101,15 +102,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) @@ -146,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, @@ -154,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