generated from dopt-python/py311
further prototyping, added first DB interactions
This commit is contained in:
0
src/wce_crm/backend/__init__.py
Normal file
0
src/wce_crm/backend/__init__.py
Normal file
78
src/wce_crm/backend/initial_recording.py
Normal file
78
src/wce_crm/backend/initial_recording.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TypedDict, cast
|
||||
|
||||
import polars as pl
|
||||
|
||||
from wce_crm import db
|
||||
|
||||
|
||||
class CompanyInfo(TypedDict):
|
||||
ma_id: str
|
||||
wce_id: str
|
||||
ma_unternehmensname: str
|
||||
ma_branche: str
|
||||
ma_strasse: str
|
||||
ma_hausnummer: str
|
||||
ma_plz: str
|
||||
ma_ort: str
|
||||
ma_plz_postfach: str
|
||||
ma_postfach: str
|
||||
ma_website: str
|
||||
ma_mail: str
|
||||
ma_telefonnummer: str
|
||||
ma_faxnummer: str
|
||||
ma_ersteintrag_datum: str
|
||||
ma_aktualisierung_datum: str
|
||||
ma_aktualisierung_nutzer: str
|
||||
ma_sollprozess: str
|
||||
ma_auslaendische_mitarbeiter: str
|
||||
ma_quelle_information: str
|
||||
ma_bemerkung: str
|
||||
ma_kontakt: str
|
||||
ma_schlagworte: str
|
||||
ma_archiviert: str
|
||||
|
||||
|
||||
def _transform_for_gui_output(
|
||||
data: pl.DataFrame,
|
||||
) -> pl.DataFrame:
|
||||
q = (
|
||||
data.lazy()
|
||||
.with_columns(
|
||||
pl.col(pl.Datetime).dt.to_string("%d.%m.%Y"),
|
||||
pl.col(pl.Date).dt.to_string("%d.%m.%Y"),
|
||||
pl.when(pl.col(pl.Boolean))
|
||||
.then(pl.lit("Ja"))
|
||||
.otherwise(pl.lit("Nein"))
|
||||
.name.keep(),
|
||||
)
|
||||
.with_columns(pl.all().cast(pl.String))
|
||||
)
|
||||
|
||||
return q.collect()
|
||||
|
||||
|
||||
def comp_search_choice_mapping() -> dict[str, int]:
|
||||
# TODO no reload functionality
|
||||
q = db.df_crm_master.lazy()
|
||||
counter = pl.int_range(0, pl.len()).over(pl.col.ma_unternehmensname)
|
||||
q = q.with_columns(
|
||||
ma_unternehmensname_dedupl=pl.when(counter == 0)
|
||||
.then(pl.col.ma_unternehmensname)
|
||||
.otherwise(pl.format("{} ({})", pl.col.ma_unternehmensname, counter))
|
||||
)
|
||||
df = q.collect()
|
||||
|
||||
return dict(zip(df["ma_unternehmensname_dedupl"], df["ma_id"]))
|
||||
|
||||
|
||||
def comp_search_get_info(
|
||||
ma_id: int,
|
||||
) -> CompanyInfo:
|
||||
df = db.df_crm_master.filter(pl.col.ma_id == ma_id)
|
||||
if df.height > 1 or df.height == 0:
|
||||
raise ValueError(f"Größe des zurückgelieferten Datenpakets ungültig: {df.height}")
|
||||
|
||||
df = _transform_for_gui_output(df)
|
||||
return cast(CompanyInfo, df.row(0, named=True))
|
||||
Reference in New Issue
Block a user