summaryrefslogtreecommitdiff
path: root/postgresqleu/util/widgets.py
diff options
context:
space:
mode:
authorMagnus Hagander2018-06-26 19:42:38 +0000
committerMagnus Hagander2018-06-27 10:55:04 +0000
commit4ac6015c0a645d1ee967a47df6b74b415f03f2ce (patch)
tree669c0c8ef4f13981c6b673638107f14884d3f750 /postgresqleu/util/widgets.py
parent922c2bddc4510284bea7cb0905d54b6e3dfe38ff (diff)
Add widgets for pretty-printing json
Diffstat (limited to 'postgresqleu/util/widgets.py')
-rw-r--r--postgresqleu/util/widgets.py19
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)