strasbourg: create multi-pages formdefs
This commit is contained in:
parent
007c22888d
commit
0169f3127c
|
@ -44,13 +44,20 @@ try:
|
|||
except IndexError:
|
||||
pass
|
||||
print formdef.name
|
||||
formdef.fields = []
|
||||
|
||||
field_id = 0
|
||||
formdef.fields = [
|
||||
fields.PageField(id='1', type='page')
|
||||
]
|
||||
|
||||
field_id = 1
|
||||
|
||||
first_fieldset = True
|
||||
|
||||
def process_children(node):
|
||||
global field_id
|
||||
for field_node in node.getchildren():
|
||||
global field_id, first_fieldset
|
||||
|
||||
children_nodes = node.getchildren()
|
||||
for field_node in children_nodes:
|
||||
field_id += 1
|
||||
if field_node.tag in ('action', 'label'):
|
||||
continue
|
||||
|
@ -64,12 +71,25 @@ def process_children(node):
|
|||
if 'repeat' in field_node.attrib:
|
||||
print '!!! fieldset repeat'
|
||||
try:
|
||||
formdef.fields.append(fields.TitleField(id=str(field_id),
|
||||
type='title',
|
||||
label=fix_encoding(field_node.find('label').attrib['plain'])))
|
||||
if first_fieldset:
|
||||
first_fieldset = False
|
||||
formdef.fields.append(fields.TitleField(id=str(field_id),
|
||||
type='title',
|
||||
label=fix_encoding(field_node.find('label').attrib['plain'])))
|
||||
formdef.fields[0].label = fix_encoding(field_node.find('label').attrib['plain'])
|
||||
else:
|
||||
formdef.fields.append(fields.PageField(id=str(field_id),
|
||||
type='page',
|
||||
label=fix_encoding(field_node.find('label').attrib['plain'])))
|
||||
except AttributeError:
|
||||
pass
|
||||
process_children(field_node)
|
||||
if node is root and len([x for x in children_nodes[children_nodes.index(field_node)+1:] if x.tag == 'fieldset']) == 0:
|
||||
# no more fieldsets, create a new page to end the form
|
||||
field_id += 1
|
||||
formdef.fields.append(fields.PageField(id=str(field_id),
|
||||
type='page',
|
||||
label='Informations sur vos données personnelles'))
|
||||
continue
|
||||
|
||||
if field_node.tag != 'field':
|
||||
|
@ -127,7 +147,7 @@ process_children(root)
|
|||
for line in csv.reader(file(os.path.join(os.path.dirname(sys.argv[1]), 'formulaires_prod_reprise_données.csv')),
|
||||
delimiter=','):
|
||||
if line[0] + '.xml' == os.path.basename(sys.argv[1]):
|
||||
formdef.fields.insert(0,
|
||||
formdef.fields.insert(1,
|
||||
fields.CommentField(id=str(field_id+2), type='comment',
|
||||
label='<p>Origine: <a href="%s">%s</a></p>' % (line[7], line[7])))
|
||||
formdef.workflow_options = {'email': line[8]}
|
||||
|
|
Loading…
Reference in New Issue