def add_custom_fields_for_meeting(meeting, form_class=ParticipantDummyForm): """Adds participants fields as CustomFields to meeting.""" form = form_class() for i, field in enumerate(form): query = ( CustomField.query .filter_by(slug=field.name, meeting=meeting) .filter_by(custom_field_type=form.CUSTOM_FIELD_TYPE) ) if query.scalar(): continue custom_field = CustomField() custom_field.meeting = meeting custom_field.slug = field.name custom_field.label = Translation(english=unicode(field.label.text)) custom_field.required = field.flags.required custom_field.field_type = _CUSTOM_FIELD_MAPPER[field.type] custom_field.is_primary = True custom_field.custom_field_type = form.CUSTOM_FIELD_TYPE custom_field.max_length = _extract_max_length_from_field(field) if field.name in form.meta.visible_on_registration_form: custom_field.visible_on_registration_form = True else: custom_field.visible_on_registration_form = False if field.name in form.meta.protected_fields: custom_field.is_protected = True else: custom_field.is_protected = False custom_field.sort = i + 1 db.session.add(custom_field) if custom_field.field_type in (CustomField.SELECT, CustomField.LANGUAGE): _add_choice_values_for_custom_field(custom_field, field.choices) db.session.commit()