C)

Client-Aktionen

In dieser Anleitung haben wir ein einfaches HomePage-Widget verwendet, das der Web-Client automatisch startet, wenn wir den richtigen Menüpunkt auswählen. Aber woher weiß Odoo Web, dass es dieses Widget starten soll? Weil das Widget als eine Client-Aktion registriert ist.

Eine Client-Aktion ist (wie der Name schon sagt) ein Aktionstyp, der fast vollständig im Client definiert wird, in Javascript für Odoo Web. Der Server sendet einfach ein Aktions-Tag (einen beliebigen Namen) und fügt optional ein paar Parameter hinzu, aber darüber hinaus wird alles vom benutzerdefinierten Client-Code gehandhabt.

instance.web.client_actions ist eine Registry(), in der der Action Manager nach Client-Action-Handlern sucht, wenn er einen ausführen muss. Der erste Parameter von add() ist der Name (Tag) der Client-Aktion und der zweite Parameter ist der Pfad zum Widget aus dem Odoo Web-Client-Stamm. 

Wenn eine Client-Aktion ausgeführt werden muss, sucht der Aktionsmanager sein Tag in der Registrierung, läuft den angegebenen Pfad ab und zeigt das gefundene Widget am Ende an. 

Ein Client Action Handler kann auch eine reguläre Funktion sein, in diesem Fall wird er aufgerufen und sein Ergebnis (falls vorhanden) als nächste auszuführende Aktion interpretiert. 

Compound

ContextIm vorherigen Abschnitt wurde ein Kontextargument verwendet, das im Methodenaufruf nicht erläutert wurde:

Der Kontext ist wie ein "magisches" Argument, das der Web-Client beim Aufruf einer Methode immer an den Server weitergibt. Der Kontext ist ein Wörterbuch, das mehrere Schlüssel enthält. Einer der wichtigsten Schlüssel ist die Sprache des Benutzers, die vom Server verwendet wird, um alle Nachrichten der Anwendung zu übersetzen. Ein weiterer Schlüssel ist die Zeitzone des Benutzers, die verwendet wird, um Datum und Uhrzeit korrekt zu berechnen, wenn Odoo von Personen in verschiedenen Ländern verwendet wird.Das Argument ist in allen Methoden notwendig, da sonst schlimme Dinge passieren könnten (z.B. dass die Anwendung nicht korrekt übersetzt wird). Deshalb sollten Sie, wenn Sie die Methode eines Modells aufrufen, dieses Argument immer angeben. Die Lösung, um das zu erreichen, ist die Verwendung von odoo.web.CompoundContext().CompoundContext() ist eine Klasse, die verwendet wird, um den Kontext des Benutzers (mit Sprache, Zeitzone, etc...) an den Server zu übergeben sowie neue Schlüssel zum Kontext hinzuzufügen (einige Methoden der Modelle verwenden beliebige Schlüssel, die dem Kontext hinzugefügt werden). Er wird erstellt, indem seinem Konstruktor eine beliebige Anzahl von Dictionaries oder anderen CompoundContext()-Instanzen übergeben wird. Sie können sehen, dass das Wörterbuch im Argument context einige Schlüssel enthält, die sich auf die Konfiguration des aktuellen Benutzers in Odoo beziehen, sowie den Schlüssel new_key, der beim Instanzieren von CompoundContext() hinzugefügt wurde.