diff --git a/msp/tools.py b/msp/tools.py index 4be0d90..52b3948 100644 --- a/msp/tools.py +++ b/msp/tools.py @@ -544,7 +544,18 @@ def link_ERPNext_OTRS_Ticket(OTRSConnect_Ticket): frappe.msgprint("Kundennummerzuweisung nicht eindeutig möglich für: " + str(OTRSConnect_Ticket.customer_id) + "
" + str(OTRSConnect_Ticket.title) + "
" + str(OTRSConnect_Ticket.id)) @frappe.whitelist() +def _otrs_articles_vorhanden(): + """OTRSConnect wurde am 26.08.2026 aus der Bench entfernt; auf Sites ohne diese + App existiert der DocType nicht mehr. Ohne diese Pruefung wirft jeder Zugriff einen + DoesNotExistError, den Frappe 16.31 fuer Benutzer ohne DocType-Leserecht in einen + irrefuehrenden PermissionError umwandelt - und der before_save-Hook am Service Report + laesst dann kein Speichern mehr zu.""" + return bool(frappe.db.exists("DocType", "OTRSConnect Article")) + + def save_backlinks(doc, method): + if not _otrs_articles_vorhanden(): + return service_report = doc if hasattr(service_report, 'work'): @@ -577,6 +588,9 @@ def handle_backlinks(doc, method): clear_backlinks(doc) def clear_backlinks(doc): + if not _otrs_articles_vorhanden(): + return + if hasattr(doc, 'work'): for item in doc.work: if hasattr(item, 'otrs_article'):