feat(crm): Aufgabenbeschreibung des Projekts prominent zugänglich machen

- Projektmaske: Zweck-Feld als Textarea (längere Eingaben), Label
  in "Aufgabenbeschreibung" umbenannt
- Tages-Workflow-Maske: Aufgabenbeschreibung als Tooltip auf dem
  Projekt-Label/-Namen der Kopfzeile, plus Icon-Button, der ein Modal
  mit Aufgabenbeschreibung, Verantwortlichem und Startdatum öffnet
- Server: Kontaktadresse.to_dict() liefert zusätzlich projekt_zweck

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
gg committed 2026-09-27 16:12:00 +02:00
1 parent 6e3cc7375d
commit a23884bf02
5 files changed
+81 -10

No files matched your search

+5 -4
View File
@@ -263,13 +263,14 @@ class Kontaktadresse(dbapp.Model):
def to_dict(self):
"""
Liefert die Kontaktdaten als Dictionary. Die Tabellenspalten werden
über columns2dict serialisiert; projekt_name und kunden_name werden
zusätzlich aus der Projekt- bzw. Kunde-Relationship eingefügt.
is_erledigt wird dynamisch aus den Gesprächsnotizen des Kontakts
berechnet.
über columns2dict serialisiert; projekt_name, projekt_zweck und
kunden_name werden zusätzlich aus der Projekt- bzw. Kunde-Relationship
eingefügt. is_erledigt wird dynamisch aus den Gesprächsnotizen des
Kontakts berechnet.
"""
result = columns2dict(self)
result['projekt_name'] = self.projekt.projektname if self.projekt else None
result['projekt_zweck'] = self.projekt.zweck if self.projekt else None
result['kunden_name'] = self.projekt.kunde.name if self.projekt and self.projekt.kunde else None
result['is_erledigt'] = self.is_erledigt()
return result