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