generated from dopt-python/py311
prepare dialog for linking open consulting processes
This commit is contained in:
+101
-89
@@ -24,6 +24,8 @@ from wce_crm.types import (
|
||||
ConsultingType,
|
||||
ContactPersonInfo,
|
||||
InitRecType,
|
||||
LinkingConsultationsEntryCompany,
|
||||
LinkingConsultationsEntryPerson,
|
||||
MainPageEntry,
|
||||
)
|
||||
|
||||
@@ -315,71 +317,6 @@ def initrec_person_from_db(
|
||||
)
|
||||
|
||||
|
||||
# def initrec_person_to_db(
|
||||
# auto_form_data: Initrec,
|
||||
# ) -> Initrec_FromDb:
|
||||
# logger.debug("[AutoForm -- backend] Call database saving routine...")
|
||||
|
||||
# dump_data = copy.deepcopy(auto_form_data.form_data)
|
||||
# dump_data["geloescht"] = auto_form_data.geloescht
|
||||
|
||||
# return_from_db: Initrec_FromDb
|
||||
|
||||
# with db.ENGINE.begin() as conn:
|
||||
# if auto_form_data.rec_id is None:
|
||||
# # insert new "Vorgang"
|
||||
# logger.debug("[AutoForm -- backend] Insert...")
|
||||
|
||||
# stmt = db.grunderfassung_personen.insert().returning(
|
||||
# db.grunderfassung_personen.c.pers_id,
|
||||
# db.grunderfassung_personen.c.Metadaten_aktualisierung,
|
||||
# db.grunderfassung_personen.c.geloescht,
|
||||
# )
|
||||
# ret = conn.execute(stmt, dump_data)
|
||||
# if ret.rowcount == 0:
|
||||
# raise IOError("Entry was not inserted correctly")
|
||||
|
||||
# from_db = ret.mappings().fetchall()
|
||||
# assert len(from_db) == 1, "expected excactly one returned row"
|
||||
# data_from_db = from_db[0]
|
||||
# return_from_db = Initrec_FromDb(
|
||||
# rec_id=data_from_db["un_id"],
|
||||
# geloescht=data_from_db["geloescht"],
|
||||
# Metadaten_aktualisierung=data_from_db["Metadaten_aktualisierung"],
|
||||
# )
|
||||
|
||||
# logger.debug("[AutoForm -- backend] Inserted InitRec successfully")
|
||||
|
||||
# else:
|
||||
# logger.debug("[AutoForm -- backend] Update...")
|
||||
# stmt = (
|
||||
# db.beratung_vorgang.update()
|
||||
# .where(db.grunderfassung_personen.c.pers_id == auto_form_data.rec_id)
|
||||
# .returning(
|
||||
# db.grunderfassung_personen.c.Metadaten_aktualisierung,
|
||||
# db.grunderfassung_personen.c.geloescht,
|
||||
# )
|
||||
# )
|
||||
# ret = conn.execute(stmt, dump_data)
|
||||
|
||||
# from_db = ret.mappings().fetchall()
|
||||
# assert len(from_db) == 1, "expected excatly one returned row"
|
||||
# data_from_db = from_db[0]
|
||||
|
||||
# return_from_db = Initrec_FromDb(
|
||||
# rec_id=auto_form_data.rec_id,
|
||||
# geloescht=data_from_db["geloescht"],
|
||||
# Metadaten_aktualisierung=data_from_db["Metadaten_aktualisierung"],
|
||||
# )
|
||||
|
||||
# logger.debug(
|
||||
# "[AutoForm -- backend] Updated InitRec with ID %d successfully",
|
||||
# auto_form_data.rec_id,
|
||||
# )
|
||||
|
||||
# return return_from_db
|
||||
|
||||
|
||||
def initrec_company_get_initial_recording(
|
||||
id_: RecId,
|
||||
) -> dict[str, Any]:
|
||||
@@ -580,30 +517,6 @@ def page_consulting_delete(
|
||||
db.beratung_einzelberatung.c.geloescht.is_(None),
|
||||
)
|
||||
conn.execute(stmt, dump_data)
|
||||
return
|
||||
|
||||
stmt = db.beratung_einzelberatung.select().where(
|
||||
db.beratung_einzelberatung.c.vorgang_id == cons_id,
|
||||
db.beratung_einzelberatung.c.geloescht.is_(None),
|
||||
)
|
||||
ret = conn.execute(stmt)
|
||||
cons_sessions = ret.mappings().all()
|
||||
# empty results possible
|
||||
if not cons_sessions:
|
||||
logger.debug("[Consulting Page] No sessions, return directly...")
|
||||
return
|
||||
|
||||
rows_for_db_update: list[dict[str, Any]] = []
|
||||
for row_data in cons_sessions:
|
||||
row_data_dump = copy.deepcopy(dump_data)
|
||||
row_data_dump["b_beratung_id"] = row_data["beratung_id"]
|
||||
rows_for_db_update.append(row_data_dump)
|
||||
|
||||
if rows_for_db_update:
|
||||
stmt = db.beratung_einzelberatung.update().where(
|
||||
db.beratung_einzelberatung.c.beratung_id == sql.bindparam("b_beratung_id")
|
||||
)
|
||||
conn.execute(stmt, rows_for_db_update)
|
||||
|
||||
|
||||
@wrap_result(11)
|
||||
@@ -682,6 +595,105 @@ def page_consulting_from_db(
|
||||
|
||||
|
||||
# // consulting page interaction
|
||||
def page_consulting_linking_companies(
|
||||
un_id: RecId | None,
|
||||
) -> list[LinkingConsultationsEntryCompany]:
|
||||
with db.ENGINE.connect() as conn:
|
||||
q_relevant_companies = sql.select(
|
||||
db.grunderfassung_unternehmen.c.un_id,
|
||||
db.grunderfassung_unternehmen.c.Partnersuche__un_suche,
|
||||
).where(
|
||||
db.grunderfassung_unternehmen.c.geloescht.is_(None),
|
||||
db.grunderfassung_unternehmen.c.Partnersuche__un_suche.is_not(None),
|
||||
)
|
||||
if un_id is not None:
|
||||
q_relevant_companies = q_relevant_companies.where(
|
||||
db.grunderfassung_unternehmen.c.un_id == un_id
|
||||
)
|
||||
|
||||
q_relevant_companies = q_relevant_companies.subquery("relevant_companies")
|
||||
|
||||
stmt = sql.select(
|
||||
q_relevant_companies.c.un_id,
|
||||
db.ext_crm_master_attach.c.ma_unternehmensname,
|
||||
).select_from(
|
||||
q_relevant_companies.join(
|
||||
db.ext_crm_master_attach,
|
||||
q_relevant_companies.c.Partnersuche__un_suche
|
||||
== db.ext_crm_master_attach.c.ma_id,
|
||||
)
|
||||
)
|
||||
|
||||
ret = conn.execute(stmt)
|
||||
company_names = ret.mappings().all()
|
||||
if not company_names:
|
||||
raise ValueError(f"No companies found for 'un_id': {un_id}")
|
||||
|
||||
logger.debug("[Page Consulting -- Linking] Retrieved company names:\n%s", company_names)
|
||||
|
||||
linking_entries: list[LinkingConsultationsEntryCompany] = []
|
||||
for entry in company_names:
|
||||
linking_entries.append(
|
||||
LinkingConsultationsEntryCompany(
|
||||
un_id=entry["un_id"],
|
||||
display_name=entry["ma_unternehmensname"],
|
||||
)
|
||||
)
|
||||
|
||||
return linking_entries
|
||||
|
||||
|
||||
def page_consulting_linking_persons(
|
||||
un_id: RecId | None,
|
||||
) -> list[LinkingConsultationsEntryPerson]:
|
||||
with db.ENGINE.connect() as conn:
|
||||
# if un_id None: list all persons
|
||||
# else: list just the persons associated with the company
|
||||
|
||||
person_select = sql.select(
|
||||
db.grunderfassung_personen.c.pers_id,
|
||||
db.grunderfassung_personen.c.Stammdaten__name,
|
||||
db.grunderfassung_personen.c.Stammdaten__vorname,
|
||||
db.grunderfassung_personen.c.Stammdaten__ort,
|
||||
)
|
||||
|
||||
if un_id is not None:
|
||||
person_select = person_select.select_from(
|
||||
db.grunderfassung_personen.join(
|
||||
db.zuordnung_personen_unternehmen,
|
||||
db.grunderfassung_personen.c.pers_id
|
||||
== db.zuordnung_personen_unternehmen.c.pers_id,
|
||||
)
|
||||
).where(db.zuordnung_personen_unternehmen.c.un_id == un_id)
|
||||
|
||||
ret = conn.execute(person_select)
|
||||
person_names = ret.mappings().all()
|
||||
if not person_names:
|
||||
logger.warning(f"No persons found for 'un_id': {un_id}")
|
||||
return []
|
||||
|
||||
logger.debug("[Page Consulting -- Linking] Retrieved person names:\n%s", person_names)
|
||||
|
||||
linking_entries: list[LinkingConsultationsEntryPerson] = []
|
||||
for entry in person_names:
|
||||
first_name = entry["Stammdaten__vorname"]
|
||||
last_name = entry["Stammdaten__name"]
|
||||
location_city = entry["Stammdaten__ort"]
|
||||
|
||||
display_name = f"{first_name} {last_name}"
|
||||
if location_city:
|
||||
display_name += f" (Ort: {location_city})"
|
||||
|
||||
linking_entries.append(
|
||||
LinkingConsultationsEntryPerson(
|
||||
pers_id=entry["pers_id"],
|
||||
display_name=display_name,
|
||||
)
|
||||
)
|
||||
|
||||
return linking_entries
|
||||
|
||||
|
||||
def companyprofile_page_get_consultations(
|
||||
un_id: RecId,
|
||||
) -> CompanyProfileConsultations:
|
||||
|
||||
Reference in New Issue
Block a user