delete()
Löscht ein bestehendes ECM-Objekt.
Das Objekt wird standardmäßig in den Papierkorb verschoben — mit hard_delete=True wird es dauerhaft entfernt.
Das zu löschende Objekt kann entweder über eine Modell-Instanz oder direkt über object_id und object_type angegeben werden.
1. Signatur
-
Sync
-
Async
ecm.dms.delete(
model: ECMFolderModel | ECMRegisterModel | ECMDocumentModel | int,
object_type: int | str | None = None,
*,
hard_delete: bool = False,
delete_cascading: bool = False,
) -> None
await ecm.dms.delete(
model: ECMFolderModel | ECMRegisterModel | ECMDocumentModel | int,
object_type: int | str | None = None,
*,
hard_delete: bool = False,
delete_cascading: bool = False,
) -> None
2. Parameter
| Parameter | Standard | Beschreibung |
|---|---|---|
|
— |
Das zu löschende Objekt — entweder eine Modell-Instanz mit gesetzter |
|
|
Nur erforderlich, wenn |
|
|
Bei |
|
|
Bei |
3. Ausnahmen
ValueError-
modelist einint, aberobject_typewurde nicht angegeben. ValueError-
modelist eine Modell-Instanz mitid = None.
4. Beispiele
4.1. Objekt nach Abfrage löschen
Der häufigste Anwendungsfall: Objekt zuerst laden, dann löschen.
-
Sync
-
Async
folder = ecm.dms.get(InvoiceFolder, 12345)
ecm.dms.delete(folder)
folder = await ecm.dms.get(InvoiceFolder, 12345)
await ecm.dms.delete(folder)
4.2. Löschen per object_id und internem Namen
Ist die ID bekannt, muss das Objekt nicht vollständig geladen werden.
Der interne Name des Objekttyps wird als object_type übergeben:
-
Sync
-
Async
ecm.dms.delete(12345, "InvoiceFolder")
await ecm.dms.delete(12345, "InvoiceFolder")
4.3. Löschen per object_id und numerischer Typ-ID
Alternativ kann die numerische Typ-ID verwendet werden, falls der interne Name nicht bekannt ist:
-
Sync
-
Async
# Typ-ID z.B. aus get_object_type_by_id() ermitteln
type_id = ecm.dms.get_object_type_by_id(12345)
ecm.dms.delete(12345, type_id)
type_id = await ecm.dms.get_object_type_by_id(12345)
await ecm.dms.delete(12345, type_id)
4.4. Dauerhaft löschen (ohne Papierkorb)
Mit hard_delete=True wird das Objekt endgültig entfernt und kann nicht wiederhergestellt werden:
-
Sync
-
Async
ecm.dms.delete(12345, "InvoiceFolder", hard_delete=True)
await ecm.dms.delete(12345, "InvoiceFolder", hard_delete=True)
4.5. Ordner mit gesamter Unterstruktur löschen
Mit delete_cascading=True werden alle untergeordneten Register und Dokumente mitgelöscht:
-
Sync
-
Async
ecm.dms.delete(42, "InvoiceFolder", delete_cascading=True)
await ecm.dms.delete(42, "InvoiceFolder", delete_cascading=True)
4.6. Alle Treffer einer Abfrage löschen
Objekte stapelweise löschen: in jeder Iteration wird eine begrenzte Anzahl abgerufen und gelöscht,
bis keine Treffer mehr zurückkommen. So wird der Speicher nicht unnötig belastet und das
seitenbasierte Paging von stream() umgangen.
-
Sync
-
Async
while True:
batch = (
ecm.dms.select(InvoiceFolder)
.where(InvoiceFolder.Year == 2020)
.limit(100)
.execute()
)
if not batch:
break
for folder in batch:
ecm.dms.delete(folder, hard_delete=True, delete_cascading=True)
while True:
batch = await (
ecm.dms.select(InvoiceFolder)
.where(InvoiceFolder.Year == 2020)
.limit(100)
.execute()
)
if not batch:
break
for folder in batch:
await ecm.dms.delete(folder, hard_delete=True, delete_cascading=True)