## -*- coding: utf-8 -*- <% len_attr = len(attributes) switch = len_attr / 2 if not switch * 2 == len_attr: switch = switch + 1 counter = 1 lc1 = [] lc2 = [] for a in sorted(attributes.keys(), key=lambda attr: attributes[attr]['weight']): if counter <= switch: lc1.append(a) else: lc2.append(a) counter = counter + 1 %> <%def name="form_col(l)"> % for a in l: <% attr = attributes[a] %>
<% if modify: required = '' else: required = ' required ' if not values is None and a in values: if type(values[a]) is list: raw_value = values[a][0] else: raw_value = values[a] if raw_value is None: raw_value = '' value = ' value="'+ raw_value + '"' value2 = '' else: raw_value = '' value = '' value2 = '' if 'default' in attr and value == '': value = ' value="'+ attr['default'] + '"' %> ${attr['display_name']} % if modify and a == keyattr: ${raw_value} % elif attr['type'] == 'string': % elif attr['type'] == 'email': % elif attr['type'] == 'int': % elif attr['type'] == 'fix': ${attr['value']} % elif attr['type'] == 'stringlist': % elif attr['type'] == 'password': Retype ${attr['display_name']} % elif attr['type'] == 'textfield': % endif
% endfor
${form_col(lc1)}
${form_col(lc2)}
% if autofill: <% from sets import Set attr_set = Set([]) attr_events = {} functions = {} for attrid in attributes: attr = attributes[attrid] field = 'attr.' + attrid attr_set.add(field) if 'autofill' in attr: function = attr['autofill']['function'] tuple = (field, function) if not tuple in functions: functions[tuple] = [] for arg in attr['autofill']['args']: if arg[0] == '$': field_arg = 'attr.' + arg[1:] attr_set.add(field_arg) functions[tuple].append("fields['" + field_arg + "'].value") if not field_arg in attr_events: attr_events[field_arg] = [] attr_events[field_arg].append(tuple) else: value = arg functions[tuple].append("'" + value + "'") %> % endif