# Enums (Wertelisten)

Der DLS kann für mehrere Sprachen konfiguriert werden. Damit in Verzeichnungseinheiten Werte auch übersetzt dargestellt werden, müssen die Daten mehrsprachig gespeichert werden.

Damit die Übersetzungen nicht pro Verzeichnungseinheit und Feld mehrsprachig gespeichert und indexiert werden müssen, können Wertelisten vordefiniert werden, welche dann im Datensatz der Verzeichnungseinheit mittels eines identifiers referenziert werden.

Dieses Konzept funktioniert grundsätzlich sowohl für Standardfelder des Produktes wie auch für benutzerdefinierte Felder ("custom fields").

Mit Wertelisten können grundsätzlich Werte übersetzt werden, die auf einer Werteliste basieren, die mehrere Objekte teilen. Übersetzungen für Freitextfelder wie Titel oder Beschreibung werden mit diesem Konzept nicht abgedeckt.

# Schema EnumEntry

# id

  • Type: BigAutoField
  • Label: ID
  • Required: False
  • Systemfield: Ja

Die id wird verwendet, um intern den Datensatz eindeutig zu adressieren. Wenn ein Datensatz gelöscht und neu erstellt wird, ändert sich diese ID. Daher sollte für die eindeutige Identifizierung das Feld identifier verwendet werden, welches auch beim Neuerstellen des Datensatzes den gleichen Wert behält. Dies ist ein Systemfeld, in welches nicht geschrieben werden darf.

# created

  • Type: CreationDateTimeField
  • Label: erstellt
  • Required: False
  • Systemfield: Ja

Dieses Feld speichert den Zeitpunkt (Datum/Zeit), zu welchem der Datensatz initial erstellt wurde. Dies bezieht sich auf den Zeitpunkt der Erstellung im DLS und nicht im anliefernden System. Dies ist ein Systemfeld, in welches nicht geschrieben werden darf.

# modified

  • Type: ModificationDateTimeField
  • Label: geändert
  • Required: False
  • Systemfield: Ja

Dieses Feld speichert den Zeitpunkt (Datum/Zeit), zu welchem der Datensatz im DLS das letzte Mal geschrieben wurde, z.B. über die ETL Pipeline. Dies ist ein Systemfeld, in welches nicht geschrieben werden darf.

# source

  • Type: TextField
  • Label: Source
  • Required: False
  • Default: ""

# enum

  • Type: TextField
  • Label: Enum Identifier
  • Required: True

String, welcher die Werteliste (enum) eindeutig identifiziert. Alle EnumEntry Objekte, die den gleichen enum Wert teilen, gehören zu der gleichen Werteliste.

# identifier

  • Type: TextField
  • Label: Identifier Enum Eintrag
  • Required: True

String, welcher einen Wert in einer Werteliste identifiziert. Ein EnumEntry Objekt wird identifiziert indem enum und identifier zusammen eindeutig ist.

# order

  • Type: IntegerField
  • Label: Sortierung
  • Required: False

Zahl, die die Sortierreihenfolge innerhalb eines Enums bestimmt. Die Verwendung ist optional. Wenn sie innerhalb eines Enums nicht verwendet wird, wird das Label für die Sortierung verwendet.

# label_de

  • Type: TranslationTextField
  • Label: Label [de]
  • Required: False

Das Label des EnumEntry wird für die Darstellung im User-Interface verwendet. Damit der DLS für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.

# label_en

  • Type: TranslationTextField
  • Label: Label [en]
  • Required: False

Das Label des EnumEntry wird für die Darstellung im User-Interface verwendet. Damit der DLS für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.

# label_fr

  • Type: TranslationTextField
  • Label: Label [fr]
  • Required: False

Das Label des EnumEntry wird für die Darstellung im User-Interface verwendet. Damit der DLS für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.

# label_it

  • Type: TranslationTextField
  • Label: Label [it]
  • Required: False

Das Label des EnumEntry wird für die Darstellung im User-Interface verwendet. Damit der DLS für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.

# label_rm

  • Type: TranslationTextField
  • Label: Label [rm]
  • Required: False

Das Label des EnumEntry wird für die Darstellung im User-Interface verwendet. Damit der DLS für mehrere Sprachen verwendet werden kann, ist dieses Feld übersetzt und existiert für die vom DLS unterstützten Sprachen. Wenn das Label in der ausgewählten Sprache nicht existiert, wird automatisch das Label einer verfügbaren Sprache als Fallback verwendet.

# data

  • Type: JSONField
  • Label: Data
  • Required: False

Im data kann eine beliebige JSON-Kompatible Datenstruktur gespeichert werden. Es kann verwendet werden, um zusätzliche Informationen für Enum Einträge zu speichern.

# Importieren von Enums über ETL Pipeline

Die Werte werden üblicherweise im Quellsystem definiert, dort wo die Daten erfasst sind. Daher ist der Standardweg für das Erfassen von Enums in DLS, dass sie über eine ETL Pipeline importiert werden. Je nach Quellsystem muss eine ETL Pipeline konfiguriert werden, welche die Werte importiert. Dabei können die Werte auch partiell importiert werden, also z.B. nur für spezifische Felder.

Für das Erstellen der EnumEntry Objekte in der Pipeline wird die CreateEnumEntries Section verwendet.

In der Publish Section wird das Model mit dem Key enumentry adressiert.

Beispiel-Pipeline für das Importieren von EnumEntry Objekten:

[
  {
    "section": "RawSource",
    "options": {
      "data": [
        {
          "enum": "archival_type",
          "identifier": "pic",
          "label_de": "Bild",
          "label_en": "Picture",
          "label_fr": "Image"
        },
        {
          "enum": "archival_type",
          "identifier": "mov",
          "label_de": "Film",
          "label_en": "Movie",
          "label_fr": "Film"
        }
      ]
    }
  },
  {
    "section": "CreateEnumEntries",
    "options": {
      "prune_enum": true
    }
  },
  {
    "section": "Publish",
    "options": {
      "model": "enumentry"
    }
  }
]

# Verwenden von Wertelisten

Damit eine Werteliste mit einem Feld, z.B. einem Customfield verwendet werden kann, wird das Feld enum in der Werteliste auf den Namen des Customfields gesetzt.

In den Datensätzen wird dann im Feld der Werte des identifier des EnumEntry verwendet, so dass der Lookup im User-Interface funktioniert.