generated from dopt-python/py311
Dev #7
@@ -0,0 +1,73 @@
|
||||
"""adding consulting sessions
|
||||
|
||||
Revision ID: 2afa4e506448
|
||||
Revises: 1a8e957522a4
|
||||
Create Date: 2026-07-09 14:21:24.586706
|
||||
|
||||
"""
|
||||
|
||||
from typing import Sequence, Union
|
||||
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
import wce_crm.db
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "2afa4e506448"
|
||||
down_revision: Union[str, Sequence[str], None] = "1a8e957522a4"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table(
|
||||
"beratung_vorgang",
|
||||
sa.Column("vorgang_id", sa.Integer(), autoincrement=True, nullable=False),
|
||||
sa.Column("un_id", sa.Integer(), nullable=True),
|
||||
sa.Column("pers_id", sa.Integer(), nullable=True),
|
||||
sa.Column("titel", sa.Text(), nullable=False),
|
||||
sa.Column("beratungs_typ", sa.String(length=20), nullable=False),
|
||||
sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False),
|
||||
sa.Column("aktualisiert", wce_crm.db.UTCDateTime(), nullable=True),
|
||||
sa.ForeignKeyConstraint(
|
||||
["pers_id"],
|
||||
["grunderfassung_personen.pers_id"],
|
||||
),
|
||||
sa.ForeignKeyConstraint(
|
||||
["un_id"],
|
||||
["grunderfassung_unternehmen.un_id"],
|
||||
),
|
||||
sa.PrimaryKeyConstraint("vorgang_id"),
|
||||
)
|
||||
op.create_table(
|
||||
"beratung_einzelberatung",
|
||||
sa.Column("beratung_id", sa.Integer(), autoincrement=True, nullable=False),
|
||||
sa.Column("vorgang_id", sa.Integer(), nullable=False),
|
||||
sa.Column("nutzer_id", sa.Integer(), nullable=False),
|
||||
sa.Column("nutzer_name", sa.String(length=20), nullable=False),
|
||||
sa.Column("zeitstempel", wce_crm.db.UTCDateTime(), nullable=False),
|
||||
sa.Column("ansprechpartner", sa.Text(), nullable=False),
|
||||
sa.Column("kommunikationsweg", sa.Text(), nullable=False),
|
||||
sa.Column("thema_crm_matrix", sa.Text(), nullable=True),
|
||||
sa.Column("anmerkungen", sa.Text(), nullable=True),
|
||||
sa.Column("rueckmeldung", sa.Text(), nullable=True),
|
||||
sa.Column("erstellt", wce_crm.db.UTCDateTime(), nullable=False),
|
||||
sa.Column("aktualisiert", wce_crm.db.UTCDateTime(), nullable=True),
|
||||
sa.ForeignKeyConstraint(
|
||||
["vorgang_id"],
|
||||
["beratung_vorgang.vorgang_id"],
|
||||
),
|
||||
sa.PrimaryKeyConstraint("beratung_id"),
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table("beratung_einzelberatung")
|
||||
op.drop_table("beratung_vorgang")
|
||||
# ### end Alembic commands ###
|
||||
@@ -85,7 +85,7 @@ Beratung_Vorgang | Beratung kann an Unternehmen allein (pauschal), Person allein
|
||||
pers_id int nullable -> Grunderfassung_Personen(pers_id) | sowohl Pauschal- als auch Individualberatung bei Personenbindung möglich
|
||||
titel text
|
||||
beratung_typ berat_typ(pauschal, individual)
|
||||
erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable
|
||||
erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)`
|
||||
aktualisiert "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable {on_update: `datetime.datetime.now(datetime.UTC)`}
|
||||
temporaer bool | Gibt an, ob der Vorgang losgelöst von der Grunderfassung gestartet wurde (Daten müssen nachträglich zugeordnet werden); theoretisch auch erfüllt, wenn `un_id` und `pers_id` beide NULL sind
|
||||
|
||||
@@ -93,12 +93,14 @@ Beratung_Vorgang | Beratung kann an Unternehmen allein (pauschal), Person allein
|
||||
Beratung_Einzelberatung | Änderungen müssen über einen DB-Trigger an Elterntabelle zurückgeschrieben werden
|
||||
beratung_id int pk {autoIncrement}
|
||||
vorgang_id int -> Beratung_Vorgang(vorgang_id) | Jede Beratung muss zu einem Beratungsvorgang gehören.
|
||||
erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger
|
||||
erstellt "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger
|
||||
aktualisiert "timestamp with time zone"=`datetime.datetime.now(datetime.UTC)` nullable {on_update: `datetime.datetime.now(datetime.UTC)`} | gekoppelt mit Elterntabelle 'Beratung_Vorgang' über Trigger
|
||||
nutzer_id int | externe Nutzerverwaltung
|
||||
nutzer_name text | externe Nuttzerverwaltung
|
||||
ansprechpartner text nullable
|
||||
thema text nullable | Verlinkung ins CRM, genaue Gestaltung noch unklar
|
||||
nutzer_name text | externe Nutzerverwaltung
|
||||
zeitstempel "timestamp with time zone" | Nutzereingabe
|
||||
ansprechpartner text
|
||||
kommunikationsweg text
|
||||
thema_crm_matrix text nullable | Verlinkung ins CRM, genaue Gestaltung noch unklar
|
||||
anmerkungen text nullable
|
||||
rueckmeldung txt nullable
|
||||
|
||||
|
||||
@@ -178,6 +178,7 @@ class FlatBaseModel(BaseModel):
|
||||
return dict(items)
|
||||
|
||||
|
||||
# ** InitRec
|
||||
class Grunderfassung_Unternehmen(FlatBaseModel):
|
||||
# default in SQLAlchemy with lambda and timezone-aware datetime
|
||||
Metadaten_erstellung: AwareDatetime | None = None
|
||||
@@ -342,3 +343,35 @@ class Grunderfassung_Sprachen(BaseModel):
|
||||
SP_nachweis: str | None
|
||||
SP_art_nachweis: str | None = None
|
||||
SP_datum_nachweis: datetime.date | None = None
|
||||
|
||||
|
||||
# ** Consulting
|
||||
class Beratungsgespraech(BaseModel):
|
||||
model_config = ConfigDict(str_strip_whitespace=True)
|
||||
|
||||
un_id: int | None
|
||||
pers_id: int | None
|
||||
titel: str
|
||||
beratungs_typ: str
|
||||
|
||||
# default in SQLAlchemy with lambda and timezone-aware datetime
|
||||
erstellt: AwareDatetime | None = None
|
||||
aktualisiert: AwareDatetime | None = None # see above
|
||||
|
||||
|
||||
class Beratungsgespraech_Vorgang(BaseModel):
|
||||
model_config = ConfigDict(str_strip_whitespace=True)
|
||||
|
||||
vorgang_id: int
|
||||
nutzer_id: int
|
||||
nutzer_name: str
|
||||
zeitstempel: AwareDatetime
|
||||
ansprechpartner: str
|
||||
kommunikationsweg: str
|
||||
thema_crm_matrix: str | None
|
||||
anmerkungen: str | None
|
||||
rueckmeldung: str | None
|
||||
|
||||
# default in SQLAlchemy with lambda and timezone-aware datetime
|
||||
erstellt: AwareDatetime | None = None
|
||||
aktualisiert: AwareDatetime | None = None # see above
|
||||
|
||||
@@ -374,3 +374,71 @@ zuordnung_personen_unternehmen: sql.Table = Table(
|
||||
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
beratung_vorgang: sql.Table = Table(
|
||||
"beratung_vorgang",
|
||||
MD_MAIN,
|
||||
Column(
|
||||
"vorgang_id",
|
||||
sql.Integer,
|
||||
primary_key=True,
|
||||
autoincrement=True,
|
||||
),
|
||||
Column("un_id", sql.ForeignKey("grunderfassung_unternehmen.un_id"), nullable=True),
|
||||
Column("pers_id", sql.ForeignKey("grunderfassung_personen.pers_id"), nullable=True),
|
||||
Column("titel", sql.Text, nullable=False),
|
||||
Column("beratungs_typ", sql.String(20), nullable=False),
|
||||
Column(
|
||||
"erstellt",
|
||||
UTCDateTime,
|
||||
nullable=False,
|
||||
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||
),
|
||||
Column(
|
||||
"aktualisiert",
|
||||
UTCDateTime,
|
||||
nullable=True,
|
||||
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
beratung_einzelberatung: sql.Table = Table(
|
||||
"beratung_einzelberatung",
|
||||
MD_MAIN,
|
||||
Column(
|
||||
"beratung_id",
|
||||
sql.Integer,
|
||||
primary_key=True,
|
||||
autoincrement=True,
|
||||
),
|
||||
Column("vorgang_id", sql.ForeignKey("beratung_vorgang.vorgang_id"), nullable=False),
|
||||
Column("nutzer_id", sql.Integer, nullable=False),
|
||||
Column("nutzer_name", sql.String(20), nullable=False),
|
||||
Column(
|
||||
"zeitstempel",
|
||||
UTCDateTime,
|
||||
nullable=False,
|
||||
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||
),
|
||||
Column("ansprechpartner", sql.Text, nullable=False),
|
||||
Column("kommunikationsweg", sql.Text, nullable=False),
|
||||
Column("thema_crm_matrix", sql.Text, nullable=True),
|
||||
Column("anmerkungen", sql.Text, nullable=True),
|
||||
Column("rueckmeldung", sql.Text, nullable=True),
|
||||
Column(
|
||||
"erstellt",
|
||||
UTCDateTime,
|
||||
nullable=False,
|
||||
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||
),
|
||||
Column(
|
||||
"aktualisiert",
|
||||
UTCDateTime,
|
||||
nullable=True,
|
||||
default=lambda: datetime.datetime.now(datetime.UTC),
|
||||
onupdate=lambda: datetime.datetime.now(datetime.UTC),
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user