recordtransfer.caais - Convert to CAAIS Metadata

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

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

recordtransfer.caais.get_setting_name(field_name)

Generates a setting name in the django.conf.settings object that may contain a default value for some field.

Parameters:

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

Returns:

A setting name for the default value, in the form CAAIS_DEFAULT_FIELD_NAME

Return type:

(str)

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)

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)

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)

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.

Default values can be set by creating settings in the module set by DJANGO_SETTINGS_MODULE named CAAIS_DEFAULT_FIELD_NAME, where FIELD_NAME is the uppercase-d field name of the model and the form field.

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 = '')

Return form data if it exists, or the setting in the django.conf.settings object if it exists, or the default value, in that order of priority.

Parameters:
  • form_data (dict) – The cleaned data from the transfer 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 returned.

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 django.conf.settings object, 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 django.conf.settings, the default value is returned.

Parameters:
  • form_data (dict) – The cleaned data from the transfer 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 django.conf.settings

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