v4.1.0: DMS email documents, category-specific Nachweis linking, version system
- Save cover email body as DMS document with new 'email' context type - Show email body separately from attachments in email detail view - Add per-category DMS document assignment in quarterly confirmation (Studiennachweis, Einkommenssituation, Vermögenssituation) - Add VERSION file and context processor for automatic version display - Add MCP server, agent system, import/export, and new migrations - Update compose files and production environment template Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -332,11 +332,58 @@ def poll_emails(self, search_all_recent_days=0):
|
||||
if doc:
|
||||
dms_dokumente.append(doc)
|
||||
|
||||
# Cover-Email als eigenes DMS-Dokument speichern
|
||||
email_body_doc = None
|
||||
if email_text.strip():
|
||||
email_filename = f"Email_{eingangsdatum.strftime('%Y%m%d_%H%M')}_{betreff[:50]}.txt"
|
||||
# Bereinige Dateinamen
|
||||
email_filename = re.sub(r'[^\w\s\-._]', '', email_filename)
|
||||
anhang_count = len(dms_dokumente)
|
||||
anhang_hinweis = (
|
||||
f"\n\n--- Anhänge: {anhang_count} ---\n"
|
||||
+ "\n".join(f" • {d.dateiname_original or d.titel}" for d in dms_dokumente)
|
||||
if dms_dokumente else ""
|
||||
)
|
||||
email_body_content = (
|
||||
f"Von: {absender_name} <{absender_email_addr}>\n"
|
||||
f"Datum: {eingangsdatum.strftime('%d.%m.%Y %H:%M')}\n"
|
||||
f"Betreff: {betreff}\n"
|
||||
f"{'=' * 60}\n\n"
|
||||
f"{email_text}"
|
||||
f"{anhang_hinweis}"
|
||||
)
|
||||
email_body_doc = _save_to_dms(
|
||||
content=email_body_content.encode("utf-8"),
|
||||
filename=email_filename,
|
||||
destinataer=destinataer,
|
||||
betreff=betreff,
|
||||
kontext="email",
|
||||
)
|
||||
if email_body_doc:
|
||||
# Beschreibung mit Anhang-Verweis ergaenzen
|
||||
if dms_dokumente:
|
||||
email_body_doc.beschreibung = (
|
||||
f"E-Mail-Nachricht mit {anhang_count} Anhang/Anhängen.\n"
|
||||
f"Absender: {absender_name} <{absender_email_addr}>"
|
||||
)
|
||||
else:
|
||||
email_body_doc.beschreibung = (
|
||||
f"E-Mail-Nachricht (ohne Anhänge).\n"
|
||||
f"Absender: {absender_name} <{absender_email_addr}>"
|
||||
)
|
||||
email_body_doc.save(update_fields=["beschreibung"])
|
||||
|
||||
# Alle DMS-Dokumente (Email-Body + Anhaenge) verknuepfen
|
||||
alle_dms_dokumente = []
|
||||
if email_body_doc:
|
||||
alle_dms_dokumente.append(email_body_doc)
|
||||
alle_dms_dokumente.extend(dms_dokumente)
|
||||
|
||||
if dms_dokumente:
|
||||
eingang.status = "verarbeitet" if destinataer else status
|
||||
eingang.save()
|
||||
if dms_dokumente:
|
||||
eingang.dokument_dateien.set(dms_dokumente)
|
||||
if alle_dms_dokumente:
|
||||
eingang.dokument_dateien.set(alle_dms_dokumente)
|
||||
|
||||
# Als gelesen markieren
|
||||
mail.store(msg_id, "+FLAGS", "\\Seen")
|
||||
|
||||
Reference in New Issue
Block a user