Beispiele für die neuen storage path templates ab Version 2.13

Hier ein Beispiel wie man einen Pfad in Abhängigkeit eines Tags erstellt.

{% if "2" in tag_name_list %}
mitzwei
{% else %}
ohnezwei
{% endif %}
/{{ title }}

Hat das Dokument das Tag 2 und den Titel test_mit_tag, dann ergibt sich als Pfad

mitzwei/test_mit_tag

ist das Tag nicht vorhanden und der titel lautet test, dann lautet der Pfad

ohnezwei/test

Kleiner Tipp nebenbei: Man sollte seine Tags und benutzerdefinierten Felder ohne Blanks erstellen. Da beissen sich dann die templates von Jinja mit dem Framewaork Django mit dem PLNGX erstellt wurde. Dann muss man über die document Instanz gehen, und da heissen die knoten dann leider manchmal anders als die geschweiften Klammern Variablen. So wird aus {{ asn ]] dann document.archive_serial_number. Unschön, aber läßt sich leider nicht ändern. Und ausgerechnet das ist auch noch schlecht dokumentioert.

3 „Gefällt mir“

Vielen Dank für dein Beispiel und Erklärung. Kann ich auch ein Benutzerdefiniertes Feld befüllen vom Datentyp Auswählen und hättest du wenn ja dazu auch ein beispiel

Beispiel mit der Auswertung eines benutzerdefinierten Feldes und dessen Inhalt.

{% if "Kontonummer" in custom_fields %}
  kontoauszuege/{{ custom_fields.Kontonummer.value }}
{% else %}
  rechnungen/{{ title }}
{% endif %}

Ich habe ein Feld angelegt namens Kontonummer, Auswahl und mit den Werten 123 und 456.

Hat das Dokument das benutzerdefinierte Feld Kontonummer zugewiesen bekommen und dort die Auswahl 456 so ergibt sich der Pfad

kontoauszuege/456

Ist das Feld Kontonummer nicht zugewiesen dann ergibt sich

rechnungen/test_tag

sofern das Dokument den Titel test_tag hat.

Nein. Das hier bezieht sich nur auf den storage path und wie dieser dynamisch aus den Metadaten generiert werden kann. Man kann damit nicht andere Meta Daten zB den Titel in Abhängigkeit eines Tags oder benutzerdefinierten Feldes ändern.

Es geht also

Metadaten => storage path

aber nicht

Metadaten => Titel.

Nur der storage path hat die Jinja templates. Andere Metadaten (noch) nicht.

vielen Dank für deine Antworten und Beispiele hast mir schon ein Stück weitergeholfen.

In deinem Beispiel Kontonummer hast du zwar das custom_fields abgefragt aber wo ist die Abfrage für den Inhalt 456 ? Oder habe ich einen Gedankenfehler .

Das ist keine Abfrage. Wenn das Feld Kontonummer hinzugefügt ist lese ich den Wert des Feldes - hier 456 - aus und benutze diesen Wert dann im storage path.

Wenn es mit Abfrage sein soll, kann man auch solchen Schabernack treiben:

{% if "Kontonummer" in custom_fields %}
{% if custom_fields.Kontonummer.value == "456" %}
  aetschibaetsch/789
{% else %}
  kontoauszuege/{{ custom_fields.Kontonummer.value }}
{% endif %}
{% else %}
  rechnungen/{{ title }}
{% endif %}

Vielen Dank für dieses letzte Beispiel. Meine letzte Frage dazu. Wie geht es wenn man Dokumententyp=A und Kontonummer=456 dann … sonst …
Wo genau kann man so etwas nachlesen. (Bedingungen if else)

Dafür gibts die Paperless Dokumentation und die Dokumentation der Jinja Templates.

Dokumententyp=A und Kontonummer=456

Das ist so keine semantisch korrekte Abfrage, denn du hast drei Bedingungen, nicht zwei, deshalb wird es etwas komplexer

Dokumententyp=A und Kontonummer ist zugewiesen und Kontonummer=456

Alles ist zugewiesen. Könntest du mir bitte so ein Beispiel zeigen. Ich fange an dieser Stelle bei Null an. Habe vor vielen vielen vielen Jahre mit dbase angefangen zu Programmieren. Dann habe ich in Elooffice meine eigenen Scripte geschrieben. Aber hier sehe ich den Wald vor Bäumen nicht.
Würdest mir hier sehr weiterhelfen.

Vielen Dank @huebi für die Information mit dem Beispiel. Darauf lässt sich gut aufbauen :slightly_smiling_face:

Die anhängende Diskussion zeigt die Wichtigkeit dieses Features.

Gibt es eine Liste der in PLNGX nutzbaren Variablen?

Viele Grüße!

Wenn ich einen Link auf die Dokumentation setze, dann erwarte ich, dass man sich das mal anschaut und nicht reflexartig eine Frage postet.

In der Dokumentation gibt es eine Liste mit allen Variablen. Das umzusetzen war nun nicht sonderlich schwer. Und als Porgrammierer vertraut man nie auf Aussagen der Benutzer wie „alles ist zugewiesen“.

{% if document_type == 'A' and "Kontonummer" in custom_fields and custom_fields.Kontonummer.value == "456" %}
kontoauszuege/{{ document_type }}-{{ custom_fields.Kontonummer.value }}
{% else %}
  anderedokumente/{{ document_type }}-{{ title }}
{% endif %}

@huebi Cool !!! Vielen lieben Dank nocheinmal für deine Hilfe.

Ich nehme an, du beziehst dich auf die * Placeholders*.
Wahrscheinlich bin ich zu wenig Programmierer um das Tiefere wie
{{ custom_fields.Kontonummer.value }} zu verstehen bzw. mir selbständig herzuleiten.
Da muss ich noch weiter dran arbeiten.

Viele Grüße!

Schabernack

Wenn der Titel eines Dokumentes test_mit_bdf lautet, dann macht

{{ title|reverse() }}

daraus fdb_tim_tset :rofl:

Rechnen geht übrigens auch:

{{ created_year }} => 2024 //war jetzt aber klar
{{ created_year * 5 }} => 20242024202420242024 //Alle Variablen sind strings
{{ created_year|int() * 5 + 3.14 }} => 10123.14 // jetzt aber
{{ (created_year|int() * 5 + 3.14)|replace(".","_Dezimalpunkt_") }} => 10123_Dezimalpunkt_14 //wer den Punkt nicht mag :)

Das ist jetzt tatsächlich eine komplette Umsetzung der Jinja Templates. Da kann man nun ziemlich verrückte Sachen machen.

Das sieht schon richtig mächtig aus! - Wenn man programmieren kann :face_with_hand_over_mouth:

Was muss ich denn machen, damit die Daten auch verarbeitet werden, wie sie in Speicherpfade angegeben sind?

{% if "test_1" in tag_name_list %}
Test_1
{% else %}
KeinTest
{% endif %}
/{{ title }}

In der Vorschau sieht es aus, wie gewünscht.
Vorschau: Test_1/20231001--Zeitschrift-bdream

Im Filesystem leider nicht.
/home/bdream/paperless/documents/originals/0000001.pdf

Viele Grüße!

Erste Vermutung: du hast den Speicherpfad dem Dokument gar nicht zugewiesen.