update_and_get()
Kombiniert update() und get() in einem einzigen Aufruf: Aktualisiert ein bestehendes Objekt und gibt sofort die vollständige, vom Server befüllte Modell-Instanz zurück.
ECM-Modell-Referenz — vollständige Beschreibung aller system-Eigenschaften der zurückgegebenen Instanz und der Änderungsverfolgung.
get() wird immer ausgeführt — auch wenn update() keine Änderungen erkannt hat und der Server-Aufruf übersprungen wurde.
1. Signatur
-
Sync
-
Async
ecm.dms.update_and_get(
model: T,
files: list[JobRequestFile] | None = None,
replace_files: bool = True,
force: bool = False,
*,
check_mandatory: bool = True,
rights: bool = False,
base_params: bool = False,
file_properties: bool = False,
variants: bool = False,
use_result_list: bool = False,
fields: list[str | ECMField] | None = None,
) -> T
await ecm.dms.update_and_get(
model: T,
files: list[JobRequestFile] | None = None,
replace_files: bool = True,
force: bool = False,
*,
check_mandatory: bool = True,
rights: bool = False,
base_params: bool = False,
file_properties: bool = False,
variants: bool = False,
use_result_list: bool = False,
fields: list[str | ECMField] | None = None,
) -> T
2. Parameter
2.1. Update-Parameter
| Name | Typ | Beschreibung |
|---|---|---|
|
|
Die zu aktualisierende Modell-Instanz. Muss vom Server geladen worden sein, damit |
|
|
Optionale Dateiliste für das Dokument. Nur für |
|
|
Wenn |
|
|
Wenn |
|
|
Wenn |
2.2. Get-Parameter
Die folgenden Parameter werden unverändert an get() weitergeleitet. Detailbeschreibung und Verhalten siehe dort.
| Name | Typ | Kurzübersicht |
|---|---|---|
|
|
Zugriffsrechte mit abrufen ( |
|
|
Verwaltungsparameter mit abrufen ( |
|
|
Datei-Metadaten mit abrufen ( |
|
|
W-Modul-Versionsverzweigungen mit abrufen ( |
|
|
Abrufmodus umschalten (ermöglicht |
|
|
Zurückgegebene Felder einschränken. Nur bei |
3. Rückgabewert
Eine typisierte Modell-Instanz mit allen vom Server befüllten Feldern (ID, Systemfelder, Indexfelder).
4. Ausnahmen
ValueError-
model.system.idistNoneodercheck_mandatory=Trueund ein Pflichtfeld ist nicht gesetzt. TypeError-
fileswurde für ein Ordner- oder Register-Modell übergeben.
5. Beispiele
5.1. Einfaches Feldupdate
-
Sync
-
Async
folder = ecm.dms.get(InvoiceFolder, 12345)
folder.Title = "Rechnung 2024 (aktualisiert)"
folder = ecm.dms.update_and_get(folder)
print(folder.system.id, folder.Title)
folder = await ecm.dms.get(InvoiceFolder, 12345)
folder.Title = "Rechnung 2024 (aktualisiert)"
folder = await ecm.dms.update_and_get(folder)
print(folder.system.id, folder.Title)
5.2. Dokument mit Datei ersetzen
-
Sync
-
Async
from ecmind_blue_client.rpc import JobRequestFileFromPath
doc = ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Rechnung Nr. 42 (korrigiert)"
doc = ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/rechnung_v2.pdf")],
)
print(doc.system.file_properties.extension) # erfordert file_properties=True
from ecmind_blue_client.rpc import JobRequestFileFromPath
doc = await ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Rechnung Nr. 42 (korrigiert)"
doc = await ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/rechnung_v2.pdf")],
)
5.3. Mit Metadaten aus get()
Die rights-, base_params- und file_properties-Parameter verhalten sich identisch zu get():
-
Sync
-
Async
doc = ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Rechnung Nr. 42 (korrigiert)"
doc = ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/rechnung_v2.pdf")],
rights=True,
base_params=True,
file_properties=True,
)
print(doc.system.rights.edit_metadata)
print(doc.system.base_params.creator)
print(doc.system.file_properties.extension)
doc = await ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Rechnung Nr. 42 (korrigiert)"
doc = await ecm.dms.update_and_get(
doc,
files=[JobRequestFileFromPath("/tmp/rechnung_v2.pdf")],
rights=True,
base_params=True,
file_properties=True,
)
print(doc.system.rights.edit_metadata)
print(doc.system.base_params.creator)
print(doc.system.file_properties.extension)
5.4. Ablageort aus dem Ergebnis lesen (use_result_list)
folder_id und register_id im Ergebnis sind nur mit use_result_list=True verfügbar — siehe Abrufmodi in get():
-
Sync
-
Async
doc = ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Rechnung Nr. 42 (aktualisiert)"
doc = ecm.dms.update_and_get(doc, use_result_list=True)
print(doc.system.folder_id)
print(doc.system.register_id)
doc = await ecm.dms.get(InvoiceDocument, 42)
doc.Title = "Rechnung Nr. 42 (aktualisiert)"
doc = await ecm.dms.update_and_get(doc, use_result_list=True)
print(doc.system.folder_id)
print(doc.system.register_id)
6. Siehe auch
-
update() — aktualisiert ein Objekt, ohne es zurückzugeben
-
insert_and_get() — entsprechendes Muster für das Anlegen neuer Objekte
-
get() — lädt ein einzelnes Objekt vom Server