Skip to content

Commit b749a2a

Browse files
authored
Merge pull request #8869 from readthedocs/humitos/remove-old-jsonfields
2 parents f330f20 + aca6226 commit b749a2a

File tree

5 files changed

+75
-12
lines changed

5 files changed

+75
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 3.2.11 on 2022-01-31 12:12
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('builds', '0039_migrate_config_data'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name='build',
15+
name='_config',
16+
),
17+
migrations.RenameField(
18+
model_name='build',
19+
old_name='_config_json',
20+
new_name='_config',
21+
),
22+
]

readthedocs/builds/models.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
ModificationDateTimeField,
2020
)
2121
from django_extensions.db.models import TimeStampedModel
22-
from jsonfield import JSONField
2322
from polymorphic.models import PolymorphicModel
2423

2524
import readthedocs.builds.automation_actions as actions
@@ -662,8 +661,7 @@ class Build(models.Model):
662661
null=True,
663662
blank=True,
664663
)
665-
_config = JSONField(_('Configuration used in the build'), default=dict)
666-
_config_json = models.JSONField(_('Configuration used in the build'), default=dict)
664+
_config = models.JSONField(_('Configuration used in the build'), default=dict)
667665

668666
length = models.IntegerField(_('Build Length'), null=True, blank=True)
669667

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Generated by Django 3.2.11 on 2022-01-31 12:12
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('integrations', '0009_migrate_headers_data'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name='httpexchange',
15+
name='request_headers',
16+
),
17+
migrations.RemoveField(
18+
model_name='httpexchange',
19+
name='response_headers',
20+
),
21+
migrations.RemoveField(
22+
model_name='integration',
23+
name='provider_data',
24+
),
25+
migrations.RenameField(
26+
model_name='httpexchange',
27+
old_name='request_headers_json',
28+
new_name='request_headers',
29+
),
30+
migrations.RenameField(
31+
model_name='httpexchange',
32+
old_name='response_headers_json',
33+
new_name='response_headers',
34+
),
35+
migrations.RenameField(
36+
model_name='integration',
37+
old_name='provider_data_json',
38+
new_name='provider_data',
39+
),
40+
]

readthedocs/integrations/models.py

+8-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from django.db import models, transaction
1313
from django.utils.safestring import mark_safe
1414
from django.utils.translation import gettext_lazy as _
15-
from jsonfield import JSONField
1615
from pygments import highlight
1716
from pygments.formatters import HtmlFormatter
1817
from pygments.lexers import JsonLexer
@@ -102,12 +101,15 @@ def from_requests_exchange(self, response, related_object):
102101
:param related_object: Object to use for generic relationship.
103102
"""
104103
request = response.request
104+
# NOTE: we need to cast ``request.headers`` and ``response.headers``
105+
# because it's a ``requests.structures.CaseInsensitiveDict`` which is
106+
# not JSON serializable.
105107
obj = self.create(
106108
related_object=related_object,
107-
request_headers=request.headers or {},
109+
request_headers=dict(request.headers) or {},
108110
request_body=request.body or '',
109111
status_code=response.status_code,
110-
response_headers=response.headers,
112+
response_headers=dict(response.headers),
111113
response_body=response.text,
112114
)
113115
self.delete_limit(related_object)
@@ -144,17 +146,15 @@ class HttpExchange(models.Model):
144146

145147
date = models.DateTimeField(_('Date'), auto_now_add=True)
146148

147-
request_headers = JSONField(_('Request headers'))
148-
request_headers_json = models.JSONField(
149+
request_headers = models.JSONField(
149150
_('Request headers'),
150151
# Delete after deploy
151152
null=True,
152153
default=None,
153154
)
154155
request_body = models.TextField(_('Request body'))
155156

156-
response_headers = JSONField(_('Request headers'))
157-
response_headers_json = models.JSONField(
157+
response_headers = models.JSONField(
158158
_('Request headers'),
159159
# Delete after deploy
160160
null=True,
@@ -298,8 +298,7 @@ class Integration(models.Model):
298298
max_length=32,
299299
choices=INTEGRATIONS,
300300
)
301-
provider_data = JSONField(_('Provider data'), default=dict)
302-
provider_data_json = models.JSONField(_('Provider data'), default=dict)
301+
provider_data = models.JSONField(_('Provider data'), default=dict)
303302
exchanges = GenericRelation(
304303
'HttpExchange',
305304
related_query_name='integrations',

requirements/pip.txt

+4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ drf-flex-fields==0.9.7
2121
drf-extensions==0.7.1
2222

2323
django-vanilla-views==3.0.0
24+
25+
# This module is only used on migrations. We are now using Django's official
26+
# JSONField. We should probably squash these migrations and remove this
27+
# dependency as well.
2428
jsonfield==3.1.0
2529

2630
requests==2.27.1

0 commit comments

Comments
 (0)