Revision 1a3d8912
Added by Jérôme Schneider over 9 years ago
calebasse/dossiers/templatetags/dossiers.py | ||
---|---|---|
1 |
import copy |
|
2 |
|
|
1 | 3 |
from django import template |
4 |
from django import forms |
|
5 |
from django.utils.datastructures import SortedDict |
|
2 | 6 |
|
3 | 7 |
register = template.Library() |
4 | 8 |
|
9 |
def get_fieldset(parser, token): |
|
10 |
try: |
|
11 |
name, fields, as_, variable_name, from_, form = token.split_contents() |
|
12 |
except ValueError: |
|
13 |
raise template.TemplateSyntaxError('bad arguments for %r' % token.split_contents()[0]) |
|
14 |
|
|
15 |
return FieldSetNode(fields.split(','), variable_name, form) |
|
16 |
|
|
17 |
get_fieldset = register.tag(get_fieldset) |
|
18 |
|
|
19 |
|
|
20 |
class FieldSetNode(template.Node): |
|
21 |
def __init__(self, fields, variable_name, form_variable): |
|
22 |
self.fields = fields |
|
23 |
self.variable_name = variable_name |
|
24 |
self.form_variable = form_variable |
|
25 |
|
|
26 |
def render(self, context): |
|
27 |
form = template.Variable(self.form_variable).resolve(context) |
|
28 |
new_form = copy.copy(form) |
|
29 |
new_form.fields = SortedDict([(key, form.fields[key]) for key in self.fields if key in self.fields]) |
|
30 |
context[self.variable_name] = new_form |
|
31 |
|
|
32 |
return u'' |
|
33 |
|
|
5 | 34 |
def phone(value): |
6 | 35 |
result = "" |
7 | 36 |
if len(value) == 10: |
Also available in: Unified diff
dossiers: merge administrative forms into one form
Closes #2739