diff options
author | Magnus Hagander | 2018-06-26 19:42:38 +0000 |
---|---|---|
committer | Magnus Hagander | 2018-06-27 10:55:04 +0000 |
commit | 4ac6015c0a645d1ee967a47df6b74b415f03f2ce (patch) | |
tree | 669c0c8ef4f13981c6b673638107f14884d3f750 /postgresqleu/util/widgets.py | |
parent | 922c2bddc4510284bea7cb0905d54b6e3dfe38ff (diff) |
Add widgets for pretty-printing json
Diffstat (limited to 'postgresqleu/util/widgets.py')
-rw-r--r-- | postgresqleu/util/widgets.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/postgresqleu/util/widgets.py b/postgresqleu/util/widgets.py index dd4dbd55..7a5404d2 100644 --- a/postgresqleu/util/widgets.py +++ b/postgresqleu/util/widgets.py @@ -1,6 +1,8 @@ from django import forms from django.utils.safestring import mark_safe +import json + class RequiredFileUploadWidget(forms.FileInput): def __init__(self, filename=None, attrs=None): self.filename = filename @@ -18,3 +20,20 @@ class RequiredFileUploadWidget(forms.FileInput): output.append("Upload new file: ") output.append(super(RequiredFileUploadWidget, self).render(name, value, attrs)) return mark_safe(u''.join(output)) + +class PrettyPrintJsonWidget(forms.Textarea): + def render(self, name, value, attrs=None, renderer=None): + # This is mighty ugly -- we parse the json and then turn it back into json. + # Luckily this isn't called often :) + try: + value = json.dumps(json.loads(value), indent=2) + except ValueError: + # Don't try to do anything if it's not valid json + pass + t = super(PrettyPrintJsonWidget, self).render(name, value, attrs, renderer) + return t + +class AdminJsonWidget(PrettyPrintJsonWidget): + def render(self, name, value, attrs=None, renderer=None): + attrs['cols'] = 100 + return super(AdminJsonWidget, self).render(name, value, attrs, renderer) |