digest()

Gibt den Digest eines Dokumentobjekts über std.GetDocumentDigest zurück.

Standardmäßig (calculate=False) wird der in der Datenbank gespeicherte Digest zurückgegeben. Bei calculate=True berechnet der Server einen frischen Digest aus den tatsächlichen Dokumentdateien und gibt sowohl den gespeicherten als auch den berechneten Digest zurück, was eine Integritätsprüfung ermöglicht.

1. Signatur

  • Sync

  • Async

ecm.dms.digest(
    model: ECMDocumentModel | int,
    object_type_id: int | None = None,
    *,
    calculate: bool = False,
) -> ECMDocumentDigest
await ecm.dms.digest(
    model: ECMDocumentModel | int,
    object_type_id: int | None = None,
    *,
    calculate: bool = False,
) -> ECMDocumentDigest

2. Parameter

Parameter Typ Standard Beschreibung

model

ECMDocumentModel | int

Entweder eine ECMDocumentModel-Instanz (deren id wird verwendet) oder eine numerische Dokument-Objekt-ID.

object_type_id

int | None

None

Die numerische Objekttyp-ID. Wenn None, wird der Typ automatisch über get_object_type_by_id() ermittelt. Durch Angabe wird ein zusätzlicher Server-Roundtrip vermieden.

calculate

bool

False

Bei True berechnet der Server den Digest aus den tatsächlichen Dokumentdateien und gibt zusätzlich local_digest zurück. Bei False wird nur der gespeicherte Datenbankdigest zurückgegeben.

3. Rückgabewert

Eine ECMDocumentDigest-Instanz.

3.1. Felder von ECMDocumentDigest

Feld Typ Beschreibung

table_digest

str

Der in der Datenbank gespeicherte Digest-Wert. Immer vorhanden.

local_digest

str | None

Der frisch berechnete Digest aus den tatsächlichen Dateien. Nur gesetzt bei calculate=True, sonst None.

4. Ausnahmen

Ausnahme Bedingung

ValueError

model ist eine ECMDocumentModel-Instanz mit id gleich None.

ECMNotFoundException

object_type_id ist None und kein Objekt mit der angegebenen ID existiert auf dem Server.

5. Beispiele

5.1. Gespeicherten Digest lesen

  • Sync

  • Async

doc = ecm.dms.select(RechnungsDokument).where(RechnungsDokument.Titel == "Rechnung").execute()[0]
result = ecm.dms.digest(doc)
print(result.table_digest)
doc = (await ecm.dms.select(RechnungsDokument).where(RechnungsDokument.Titel == "Rechnung").execute())[0]
result = await ecm.dms.digest(doc)
print(result.table_digest)

5.2. Integrität prüfen: gespeicherten mit berechnetem Digest vergleichen

  • Sync

  • Async

result = ecm.dms.digest(doc, calculate=True)
if result.table_digest == result.local_digest:
    print("Integrität OK")
else:
    print(f"Abweichung! gespeichert={result.table_digest} berechnet={result.local_digest}")
result = await ecm.dms.digest(doc, calculate=True)
if result.table_digest == result.local_digest:
    print("Integrität OK")
else:
    print(f"Abweichung! gespeichert={result.table_digest} berechnet={result.local_digest}")

5.3. Mit numerischer Objekt-ID verwenden

  • Sync

  • Async

# object_type_id angeben, um einen zusätzlichen Server-Roundtrip zu vermeiden
result = ecm.dms.digest(12345, object_type_id=327685)
print(result.table_digest)
result = await ecm.dms.digest(12345, object_type_id=327685)
print(result.table_digest)

6. Siehe auch