Skip to content

Sektionsspezifische Anmeldeangaben: Datenmodell #2322

@sync-by-unito

Description

@sync-by-unito

Ist-Situation

Der Benutzer hat bei einem Event die Möglichkeit, unter „Anmeldeangaben“ eigenständig Informationen zu definieren, die im Anmeldeformular als Fragen angezeigt werden. Dafür stehen verschiedene Konfigurationsoptionen zur Verfügung, zum Beispiel: zulässige Antwortwerte, Aktivierung einer Mehrfachauswahl, Sichtbarkeit der Frage, Kennzeichnung als optional oder verpflichtend sowie – mit HIT-1493 – künftig auch die Einstufung, ob es sich um sensible Daten handelt oder nicht.

Soll-Situation

Künftig können Ebenen in einer Einstellungstabelle (vgl. HIT-1508) Anmeldeangaben für alle ihre Events mehrsprachig und mit denselben Konfigurationsmöglichkeiten wie bisher definieren (vgl. oben). Dieses Feature wird im Core für alle Ebenen umgesetzt. Die bisherigen Globalen Fragen werden damit abgelöst.

Datenmodell

Dazu führen wir ein neues Model Event::QuestionTemplate mit folgenden Spalten ein:

  • group_id: integer, not null
  • question_id: integer, not null
  • event_type: string, nullable
  • default: boolean, not null, default false
  • inherit: boolean, not null, default false

Das bestehende Model Event::Question wird wie folgt angepasst:

  • Neues Feld derived: boolean, not null, default false
  • Neues Feld required: boolean, not null, default false
  • disclosure wird nach required migriert und danach gelöscht
  • derived_from_question_id wird gelöscht
  • event_type wird gelöscht

Datenmigration

  • Fragen, welche bisher eine derived_from_question_id hatten, werden auf derived = true gesetzt.
  • Fragen, welche an einem Event hängen und Disclosure = hidden haben, werden gelöscht.
  • Das required Attribut wird aufgrund des Wertes von disclosure gesetzt.
  • Für bestehende globale Fragen wird je ein Eintrag in der QuestionTemplate Tabelle erstellt:
    • Als Gruppe wird die Root Gruppe eingetragen
    • event_type wird übernommen
    • inherit wird auf true gesetzt
    • default auf true, wenn die disclosure nicht hidden war.

Anpassungen an der bestehenden Funktionalität

  • Die Associations derived_from_question und derived_questions werden entfernt. Abhängiger Code wird entsprechend angepasst.
  • Beim Erstellen eines Anlasses werden die Fragen aufgrund der definierten Vorlagen initialisiert. Dabei werden nur Vorlagen mit default = true übernommen. Anlasstyp und Vererbungen von übergeordneten Ebenen werden berücksichtigt. Das Feld derived wird für diese Fragen auf true gesetzt.
  • Beim Bearbeiten eines Anlasses werden die Vorlagen nicht mehr übernommen (init_questions in EventsController#edit wird entfernt)
  • Die bestehenden Produktions Seeds für globale Fragen müssen entsprechend zu QuestionTemplates angepasst werden

h3.

Nachfolgetickets:

┆Issue is synchronized with this Jira Story by Unito

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions