recordtransfer.caais - Convert submission form to CAAIS models

Converts the submission form to a caais.models.Metadata object.

To set default values, refer to Data Formatting and Defaults.

recordtransfer.caais.get_setting_key(field_name: str) SiteSettingKey | None

Generate a SiteSettingKey enum member for a field name, if it exists.

Parameters:

field_name (str) – The name of the field on the model or the form

Returns:

A SiteSettingKey enum member if it exists, None otherwise

Return type:

Optional[SiteSettingKey]

recordtransfer.caais.map_form_to_metadata(form_data: dict) Metadata

Convert cleaned form data to a caais.models.Metadata object. Form fields are expected to exactly match field names in CAAIS models.

Related CAAIS defaults:

Parameters:

form_data (dict) – Cleaned form data from form

Returns:

The metadata created from the form data

Return type:

(Metadata)

recordtransfer.caais.add_identifiers(form_data: dict, metadata: Metadata) None

Populate metadata with caais.models.Identifier objects.

No related CAAIS defaults.

Parameters:
  • form_data (dict) – The form data dictionary

  • metadata (Metadata) – The top-level metadata object to link any new objects to

recordtransfer.caais.add_source_of_materials(form_data: dict, metadata: Metadata) None

Populate metadata with SourceOfMaterial objects.

Related CAAIS defaults:

Parameters:
  • form_data (dict) – The form data dictionary

  • metadata (Metadata) – The top-level metadata object to link any new objects to

recordtransfer.caais.add_rights(form_data: dict, metadata: Metadata) None

Populate metadata with Rights objects.

No related CAAIS defaults.

Parameters:
  • form_data (dict) – The form data dictionary

  • metadata (Metadata) – The top-level metadata object to link any new objects to

recordtransfer.caais.add_submission_event(metadata: Metadata) None

Populate metadata with a new Submission-type Event object.

Related CAAIS defaults:

Parameters:

metadata (Metadata) – The top-level metadata object to link any new objects to

recordtransfer.caais.add_date_of_creation(metadata: Metadata) None

Populate metadata with a new Creation-type DateOfCreationOrRevision object.

Related CAAIS defaults:

Parameters:

metadata (Metadata) – The top-level metadata object to link any new objects to

Add up to one related model to the metadata object by mapping the model’s fields to the form’s fields. For every field on the model that is not named “metadata” or “id,” a field with the same name is searched in the form. If that field exists in both the form and the model, then the data from the form is passed to the model when it is created.

If the model has relational fields that are not to a metadata object or to an AbstractTerm, then a ValueError is thrown.

Parameters:
  • form_data (dict) – The cleaned form data dictionary

  • metadata (Metadata) – The top-level metadata object to link any new objects to

  • CaaisModel (Model) – A model from caais.models

recordtransfer.caais.str_or_default(form_data: dict, field_name: str, default: str = '') str

Return form data if it exists, or the setting from SiteSetting if it exists, or the default value, in that order of priority.

Parameters:
  • form_data (dict) – The cleaned data from the submission form

  • field_name (str) – The name of the field in the form data

  • default (str) – The default value to return if the data does not exist in the form or is empty, and if the setting also does not exist or is empty.

Returns:

The data from the form, or the value from the setting, or the default value, in order of priority.

Return type:

str

recordtransfer.caais.term_or_default(form_data: dict, field_name: str, TermClass: Type[AbstractTerm], default: AbstractTerm | None = None) AbstractTerm | None

If the name of a term can be found in the form data or in the SiteSetting model, return an instance of the term for the given TermClass with that name. If the term did not exist, it is created.

If no name can be found in the form data or in SiteSetting, the default value is returned.

Parameters:
  • form_data (dict) – The cleaned data from the submission form

  • field_name (str) – The name of the key in the form data

  • TermClass (Type[AbstractTerm]) – The type of term to return if the name exists in the form or in the settings

  • default (Optional[AbstractTerm]) – A term (or None) to return if there is no form data or there is no default set in SiteSetting

Returns:

A term instance, if the name of the term could be found, or the default if not

Return type:

(Optional[AbstractTerm])

recordtransfer.caais.coalesce_other_term_field(form_data: dict, field_name: str, TermClass: Type[AbstractTerm], notes: list | None = None) AbstractTerm | None

Attempt to coalesce an other_<TERM FIELD> field into a term, if a term does not already exist.

There are two cases:

  • term is the Other Term, and other_term is filled

  • term is not the Other Term