|
12 | 12 | from django.db import models, transaction
|
13 | 13 | from django.utils.safestring import mark_safe
|
14 | 14 | from django.utils.translation import gettext_lazy as _
|
15 |
| -from jsonfield import JSONField |
16 | 15 | from pygments import highlight
|
17 | 16 | from pygments.formatters import HtmlFormatter
|
18 | 17 | from pygments.lexers import JsonLexer
|
@@ -102,12 +101,15 @@ def from_requests_exchange(self, response, related_object):
|
102 | 101 | :param related_object: Object to use for generic relationship.
|
103 | 102 | """
|
104 | 103 | 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. |
105 | 107 | obj = self.create(
|
106 | 108 | related_object=related_object,
|
107 |
| - request_headers=request.headers or {}, |
| 109 | + request_headers=dict(request.headers) or {}, |
108 | 110 | request_body=request.body or '',
|
109 | 111 | status_code=response.status_code,
|
110 |
| - response_headers=response.headers, |
| 112 | + response_headers=dict(response.headers), |
111 | 113 | response_body=response.text,
|
112 | 114 | )
|
113 | 115 | self.delete_limit(related_object)
|
@@ -144,17 +146,15 @@ class HttpExchange(models.Model):
|
144 | 146 |
|
145 | 147 | date = models.DateTimeField(_('Date'), auto_now_add=True)
|
146 | 148 |
|
147 |
| - request_headers = JSONField(_('Request headers')) |
148 |
| - request_headers_json = models.JSONField( |
| 149 | + request_headers = models.JSONField( |
149 | 150 | _('Request headers'),
|
150 | 151 | # Delete after deploy
|
151 | 152 | null=True,
|
152 | 153 | default=None,
|
153 | 154 | )
|
154 | 155 | request_body = models.TextField(_('Request body'))
|
155 | 156 |
|
156 |
| - response_headers = JSONField(_('Request headers')) |
157 |
| - response_headers_json = models.JSONField( |
| 157 | + response_headers = models.JSONField( |
158 | 158 | _('Request headers'),
|
159 | 159 | # Delete after deploy
|
160 | 160 | null=True,
|
@@ -298,8 +298,7 @@ class Integration(models.Model):
|
298 | 298 | max_length=32,
|
299 | 299 | choices=INTEGRATIONS,
|
300 | 300 | )
|
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) |
303 | 302 | exchanges = GenericRelation(
|
304 | 303 | 'HttpExchange',
|
305 | 304 | related_query_name='integrations',
|
|
0 commit comments