From d9fbdb126100a3332b5fe98e8b9a5506b2114b14 Mon Sep 17 00:00:00 2001 From: Leon Haffmans Date: Wed, 19 Aug 2026 16:48:13 +0000 Subject: [PATCH] refactor(enum): model titel as free text and remove ENUM Titel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In der Praxis kommt eine Vielzahl von Titeln vor, die sich nicht abschließend als Enum definieren lässt. `titel` wird daher auf `BO Geschaeftspartner` und `BO Person` zu einem nullable String. Closes #1085 --- src/bo4e/__init__.py | 2 -- src/bo4e/bo/geschaeftspartner.py | 5 ++--- src/bo4e/bo/person.py | 5 ++--- src/bo4e/enum/titel.py | 16 ---------------- tests/test_adresse.py | 3 +-- tests/test_geschaeftspartner.py | 5 ++--- tests/test_person.py | 4 ++-- tests/test_vertrag.py | 3 +-- tests/test_zusatz_attribut.py | 4 ++-- 9 files changed, 12 insertions(+), 35 deletions(-) delete mode 100644 src/bo4e/enum/titel.py diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py index cfd217cc1..de6dc0a49 100644 --- a/src/bo4e/__init__.py +++ b/src/bo4e/__init__.py @@ -163,7 +163,6 @@ "TechnischeRessourceNutzung", "TechnischeRessourceVerbrauchsart", "Themengebiet", - "Titel", "Umschaltzeit", "Unterschrift", "Verbrauchsart", @@ -385,7 +384,6 @@ from .enum.technischeressourcenutzung import TechnischeRessourceNutzung from .enum.technischeressourceverbrauchsart import TechnischeRessourceVerbrauchsart from .enum.themengebiet import Themengebiet -from .enum.titel import Titel from .enum.verbrauchsart import Verbrauchsart from .enum.vertragsart import Vertragsart from .enum.vertragsform import Vertragsform diff --git a/src/bo4e/bo/geschaeftspartner.py b/src/bo4e/bo/geschaeftspartner.py index da720e4be..1e661ab84 100644 --- a/src/bo4e/bo/geschaeftspartner.py +++ b/src/bo4e/bo/geschaeftspartner.py @@ -17,7 +17,6 @@ from ..enum.anrede import Anrede from ..enum.geschaeftspartnerrolle import Geschaeftspartnerrolle from ..enum.organisationstyp import Organisationstyp - from ..enum.titel import Titel from .person import Person @@ -46,8 +45,8 @@ class Geschaeftspartner(Geschaeftsobjekt): Im Falle einer nicht standardisierten Anrede kann hier eine frei definierbare Anrede vorgegeben werden. Beispiel: "Vereinsgemeinschaft", "Pfarrer", "Hochwürdigster Herr Abt". """ - titel: Optional["Titel"] = None - """Möglicher Titel der Person""" + titel: str | None = None + """Möglicher Titel der Person, z.B. "Dr." oder "Prof. Dr.".""" vorname: str | None = None """Vorname der Person""" nachname: str | None = None diff --git a/src/bo4e/bo/person.py b/src/bo4e/bo/person.py index 22d1ea1e1..64584bea7 100644 --- a/src/bo4e/bo/person.py +++ b/src/bo4e/bo/person.py @@ -16,7 +16,6 @@ from ..com.kontaktweg import Kontaktweg from ..com.zustaendigkeit import Zustaendigkeit from ..enum.anrede import Anrede - from ..enum.titel import Titel # pylint: disable=too-many-instance-attributes, too-few-public-methods, disable=duplicate-code @@ -44,8 +43,8 @@ class Person(Geschaeftsobjekt): Im Falle einer nicht standardisierten Anrede kann hier eine frei definierbare Anrede vorgegeben werden. Beispiel: "Vereinsgemeinschaft", "Pfarrer", "Hochwürdigster Herr Abt". """ - titel: Optional["Titel"] = None - """Möglicher Titel der Person""" + titel: str | None = None + """Möglicher Titel der Person, z.B. "Dr." oder "Prof. Dr.".""" vorname: str | None = None """Vorname der Person""" nachname: str | None = None diff --git a/src/bo4e/enum/titel.py b/src/bo4e/enum/titel.py deleted file mode 100644 index c04d14614..000000000 --- a/src/bo4e/enum/titel.py +++ /dev/null @@ -1,16 +0,0 @@ -# pylint:disable=missing-module-docstring - -from bo4e.enum.strenum import StrEnum - - -class Titel(StrEnum): - """ - Übersicht möglicher Titel, z.B. eines Geschäftspartners. - """ - - DR = "DR" - """Doktor*In""" - PROF = "PROF" - """Professor*In""" - PROF_DR = "PROF_DR" - """Professor*In Dr.""" diff --git a/tests/test_adresse.py b/tests/test_adresse.py index 403bf3829..896bc7917 100644 --- a/tests/test_adresse.py +++ b/tests/test_adresse.py @@ -11,7 +11,6 @@ Organisationstyp, Person, Sparte, - Titel, Unterschrift, Vertrag, Vertragsart, @@ -38,7 +37,7 @@ class TestVertrag: ansprechpartner=[Person(), Person()], anrede=Anrede.EHELEUTE, individuelle_anrede="Künstler", - titel=Titel.PROF_DR, + titel="Prof. Dr.", vorname="Hans", nachname="Müller-Schmidt", organisationstyp=Organisationstyp.PRIVATPERSON, diff --git a/tests/test_geschaeftspartner.py b/tests/test_geschaeftspartner.py index 1e6c9c3e7..dbed7f179 100644 --- a/tests/test_geschaeftspartner.py +++ b/tests/test_geschaeftspartner.py @@ -9,7 +9,6 @@ Landescode, Organisationstyp, Person, - Titel, ) from tests.serialization_helper import assert_serialization_roundtrip @@ -23,7 +22,7 @@ class TestGeschaeftspartner: ansprechpartner=[Person(), Person()], anrede=Anrede.EHELEUTE, individuelle_anrede="Künstler", - titel=Titel.PROF_DR, + titel="Prof. Dr.", vorname="Hans", nachname="Müller-Schmidt", organisationstyp=Organisationstyp.UNTERNEHMEN, @@ -43,7 +42,7 @@ class TestGeschaeftspartner: ansprechpartner=[Person(), Person()], anrede=Anrede.EHELEUTE, individuelle_anrede="Künstler", - titel=Titel.PROF_DR, + titel="Prof. Dr.", vorname="Hans", nachname="Müller-Schmidt", organisationstyp=Organisationstyp.UNTERNEHMEN, diff --git a/tests/test_person.py b/tests/test_person.py index 278b08035..050200906 100644 --- a/tests/test_person.py +++ b/tests/test_person.py @@ -1,6 +1,6 @@ import pytest -from bo4e import Adresse, Anrede, Kontaktweg, Person, Titel, Zustaendigkeit +from bo4e import Adresse, Anrede, Kontaktweg, Person, Zustaendigkeit from tests.serialization_helper import assert_serialization_roundtrip @@ -12,7 +12,7 @@ class TestPerson: Person( anrede=Anrede.EHELEUTE, individuelle_anrede="Künstler", - titel=Titel.PROF_DR, + titel="Prof. Dr.", vorname="Hans", nachname="Müller-Schmidt", kontaktwege=[Kontaktweg(), Kontaktweg()], diff --git a/tests/test_vertrag.py b/tests/test_vertrag.py index 0954ae591..de902febd 100644 --- a/tests/test_vertrag.py +++ b/tests/test_vertrag.py @@ -10,7 +10,6 @@ Organisationstyp, Person, Sparte, - Titel, Unterschrift, Vertrag, Vertragsart, @@ -37,7 +36,7 @@ class TestVertrag: ansprechpartner=[Person(), Person()], anrede=Anrede.EHELEUTE, individuelle_anrede="Künstler", - titel=Titel.PROF_DR, + titel="Prof. Dr.", vorname="Hans", nachname="Müller-Schmidt", organisationstyp=Organisationstyp.PRIVATPERSON, diff --git a/tests/test_zusatz_attribut.py b/tests/test_zusatz_attribut.py index 095821278..12799e280 100644 --- a/tests/test_zusatz_attribut.py +++ b/tests/test_zusatz_attribut.py @@ -2,7 +2,7 @@ import pytest -from bo4e import Anrede, Organisationstyp, Titel +from bo4e import Anrede, Organisationstyp from bo4e.bo.geschaeftspartner import Geschaeftspartner from bo4e.bo.person import Person from bo4e.com.adresse import Adresse @@ -25,7 +25,7 @@ class TestZusatzAttribut: ansprechpartner=[Person(), Person()], anrede=Anrede.EHELEUTE, individuelle_anrede="Künstler", - titel=Titel.PROF_DR, + titel="Prof. Dr.", vorname="Hans", nachname="Müller-Schmidt", organisationstyp=Organisationstyp.PRIVATPERSON,