def template_params(field=None, form=None): all_languages = supported_languages() fields = field or form for sfield in fields: # remove the wrapper for this completely customized # template-based widget if 'widget' in dir(sfield.widget): sfield.widget = sfield.widget.widget lingfields = {'name': {}, 'description': {}} try: name_description = fields['name_fi'].description default_description = fields['default_period'].description except: try: name_description = fields.name.description default_description = fields.default_period.description except: name_description = '' default_description = '' if field: fid = field.id fid_prefix = fid + '-' for base_key in lingfields.keys(): for lang in all_languages: key = '{base_key}_{lid}'.format(base_key=base_key, lid=lang['lid']) data = field.data.get(key) if data == None: data = '' lingfields[base_key][lang['lid']] = data default_period = field.data['default_period'] closed_completely = field.data['closed_completely'] period_start = field.start(class_="period-start", title="esim. 2011-12-23") period_end = field.end(id= fid_prefix + 'end', class_="period-end", title="esim. 2011-12-23") else: fid = 'period' fid_prefix = '' for base_key in lingfields.keys(): for lang in all_languages: key = '{base_key}_{lid}'.format(base_key = base_key, lid = lang['lid']) data = '' if hasattr(form, key): field = getattr(form, key) if hasattr(field, 'data'): data = field.data if data == None: data = '' lingfields[base_key][lang['lid']] = data default_period = form.default_period.data if 'default_period' in form else None closed_completely = form.closed_completely.data period_start = form.start(class_="period-start", title="esim. 2011-12-23") period_end = form.end(class_="period-end", title="esim. 2011-12-23") template_params = { 'id': fid, 'id_prefix' : fid_prefix, 'title' : lingfields['name']['fi'], 'period_name' : lingfields['name'], 'default_period': default_period, 'period_closed_completely' : closed_completely, 'period_start' : period_start, 'period_end' : period_end, 'period_description': lingfields['description'], 'period_name_description' : name_description, 'period_default_description': default_description } languages = [lang['lid'] for lang in all_languages] template_params['languages'] = all_languages template_params['days'] = PeriodWidget.days template_params['lingfields'] = {} template_params['timefields'] = {} for day in PeriodWidget.days: for language in languages: template_params['lingfields'][day] = ( template_params['lingfields'].get(day, [])) template_params['lingfields'][day].append( getattr(fields, '{0}_description_{1}'.format(day, language))) template_params['timefields'][day] = { 'start' : getattr(fields, '{0}_start'.format(day, language)), 'end' : getattr(fields, '{0}_end'.format(day, language)) } return template_params