summaryrefslogtreecommitdiff
path: root/postgresqleu/util/widgets.py
blob: 7a5404d2e259468b2f3df6a38d166402a04ac6ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
		super(RequiredFileUploadWidget, self).__init__(attrs)

	def render(self, name, value, attrs=None):
		output = []
		if value and hasattr(value, 'url'):
			output.append('Current file: <a href="{0}">'.format(value.url))
			if self.filename:
				output.append(self.filename)
			else:
				output.append(value.name)
			output.append('</a><br/>')
		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)