/
forms.py
38 lines (29 loc) · 1.07 KB
/
forms.py
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
from django.forms import ModelForm, ClearableFileInput
from django.utils.html import escape
from django.utils.safestring import mark_safe
from models import Bio
from utils import Render
class ImgWidget(ClearableFileInput):
def render(self, name, value, attrs=None):
substitutions = {}
template = u'%(input)s'
substitutions['input'] = super(ClearableFileInput, self)\
.render(name, value, attrs)
if value and hasattr(value, "url"):
template = u'%(initial)s<br />%(input)s'
substitutions['initial'] = (u'<img src="%s"/>' %\
(escape(value.url)))
return mark_safe(template % substitutions)
class BioForm(ModelForm, Render):
class Meta:
model = Bio
widgets = {
'img': ImgWidget(),
}
def render(self):
form_field = dict([(field.name,
{'label':field.label,
'value':field.as_widget(),
'errors':field.errors}) for field in self])
get = lambda item: form_field[item]
return self.get_struct(get)