def _clone_form_items(self, old_form, new_form, clone_all_revisions): old_sections = RegistrationFormSection.find( RegistrationFormSection.registration_form_id == old_form.id) items_attrs = get_simple_column_attrs(RegistrationFormSection) for old_section in old_sections: new_section = RegistrationFormSection( **{attr: getattr(old_section, attr) for attr in items_attrs}) for old_item in old_section.children: new_item = RegistrationFormItem( parent=new_section, registration_form=new_form, **{attr: getattr(old_item, attr) for attr in items_attrs}) if new_item.is_field: if clone_all_revisions: self._clone_all_field_versions(old_item, new_item) else: field_data = RegistrationFormFieldData( field=new_item, versioned_data=old_item.versioned_data) new_item.current_data = field_data self._field_data_map[ old_item.current_data] = field_data new_section.children.append(new_item) new_form.form_items.append(new_section) db.session.flush()
def _clone_form_items(self, old_form, new_form, clone_all_revisions): old_sections = RegistrationFormSection.find(RegistrationFormSection.registration_form_id == old_form.id) items_attrs = get_simple_column_attrs(RegistrationFormSection) for old_section in old_sections: new_section = RegistrationFormSection(**{attr: getattr(old_section, attr) for attr in items_attrs}) for old_item in old_section.children: new_item = RegistrationFormItem(parent=new_section, registration_form=new_form, **{attr: getattr(old_item, attr) for attr in items_attrs}) if new_item.is_field: if clone_all_revisions: self._clone_all_field_versions(old_item, new_item) else: field_data = RegistrationFormFieldData(field=new_item, versioned_data=old_item.versioned_data) new_item.current_data = field_data self._field_data_map[old_item.current_data] = field_data new_section.children.append(new_item) new_form.form_items.append(new_section) db.session.flush()
def _get_sorted_regform_items(regform, item_ids): """Return the form items ordered by their position in the registration form.""" return (RegistrationFormItem.find( ~RegistrationFormItem.is_deleted, RegistrationFormItem.id.in_(item_ids)).with_parent(regform).join( RegistrationFormItem.parent, aliased=True).filter( ~RegistrationFormItem.is_deleted) # parent deleted .order_by(RegistrationFormItem.position) # parent position .reset_joinpoint().order_by( RegistrationFormItem.position) # item position .all())
def _get_sorted_regform_items(regform, item_ids): """Return the form items ordered by their position in the registration form.""" return ( RegistrationFormItem.find(~RegistrationFormItem.is_deleted, RegistrationFormItem.id.in_(item_ids)) .with_parent(regform) .join(RegistrationFormItem.parent, aliased=True) .filter(~RegistrationFormItem.is_deleted) # parent deleted .order_by(RegistrationFormItem.position) # parent position .reset_joinpoint() .order_by(RegistrationFormItem.position) # item position .all() )
def _get_basic_columns(form, ids): """ Retrieve information needed for the header of "basic" columns (personal + special). Returns a list of ``{'id': ..., 'caption': ...}`` dictionaries. """ result = [] for item_id in PERSONAL_COLUMNS: if item_id in ids: field = RegistrationFormItem.find_one(registration_form=form, personal_data_type=PersonalDataType[item_id]) result.append({"id": field.id, "caption": field.title}) for item_id in SPECIAL_COLUMNS: if item_id in ids: result.append({"id": item_id, "caption": SPECIAL_COLUMN_LABELS[item_id]["title"]}) return result
def _get_static_columns(self, ids): """ Retrieve information needed for the header of the static columns (including static and personal items). :return: a list of {'id': ..., 'caption': ...} dicts """ result = [] for item_id in ids: if item_id in self.personal_items: field = RegistrationFormItem.find_one( registration_form=self.regform, personal_data_type=PersonalDataType[item_id] ) result.append({"id": field.id, "caption": field.title}) elif item_id in self.static_items: result.append({"id": item_id, "caption": self.static_items[item_id]["title"]}) return result
def _get_static_columns(self, ids): """ Retrieve information needed for the header of the static columns (including static and personal items). :return: a list of {'id': ..., 'caption': ...} dicts """ result = [] for item_id in ids: if item_id in self.personal_items: field = RegistrationFormItem.find_one( registration_form=self.regform, personal_data_type=PersonalDataType[item_id]) result.append({'id': field.id, 'caption': field.title}) elif item_id in self.static_items: result.append({ 'id': item_id, 'caption': self.static_items[item_id]['title'] }) return result
def _get_basic_columns(form, ids): """ Retrieve information needed for the header of "basic" columns (personal + special). Returns a list of ``{'id': ..., 'caption': ...}`` dictionaries. """ result = [] for item_id in PERSONAL_COLUMNS: if item_id in ids: field = RegistrationFormItem.find_one( registration_form=form, personal_data_type=PersonalDataType[item_id]) result.append({'id': field.id, 'caption': field.title}) for item_id in SPECIAL_COLUMNS: if item_id in ids: result.append({ 'id': item_id, 'caption': SPECIAL_COLUMN_LABELS[item_id]['title'] }) return result