Sagen wir, ich Server Aktion A auf dem stock.inventory
Modell aufgebaut. Diese Aktion protokolliert einfach einen Wert und ruft dann die Serveraktion B (mit der Datenbank-ID 366) auf. Der Python-Code in der Aktion ist einfach:Odoo automatisierte Server Aktion auszulösen einen anderen Server Aktion
log('running server action a')
value = {
"type": "ir.actions.server",
"id": 366,
}
Dann in Server Action-B, die auf das product.product
Modell ist, ist der Python-Code einfach:
log('running server aciton b')
Nun, wenn ich Server Aktion hinzufügen A in das Menü "Mehr" und manuell auslösen es aus dem Browser auf einem stock.inventory
Objekt, beide Aktionen erfolgreich ausgeführt. Mit anderen Worten, ich sehe in den Protokollen sowohl die Ausführung der Serveraktion a als auch die Ausführung der Serveraktion b.
Jetzt schaffe ich eine automatisierte Aktion Server Aktion A auf Update auslösen oder eines stock.inventory
Objekt erstellen. Nachdem ich das gemacht habe und ein stock.inventory
Objekt über die UI aktualisiert oder erstellt habe, sehe ich nur 'running server action' in den Protokollen. Mit anderen Worten, Serveraktion B wird nie ausgelöst, wie wenn ich das gleiche Experiment manuell aus dem "Mehr" -Menü ausgeführt hätte.
Also, meine Frage ist, ob es möglich ist, eine zweite Server Aktion vom ersten Server Aktion auszulösen, wenn die erste Aktion Server durch eine automatisierte Aktion ausgelöst wird.
Wie rufen Sie die Aktion? Ich denke, aus dem Kontext einer automatisierten Aktion müssen Sie die Methode aufrufen, keine Aktion zurückgeben. Die Semantik für diese Art von Problemen kann bizarr erscheinen. Ich rief eine Serveraktion auf, die eine Fensteraktion zurückgab und nichts funktionierte, bis ich den Aktionswert der zurückgegebenen Fensteraktion zugewiesen hatte. Unter normalen Umständen hätte ich jedoch einfach die Fensteraktion zurückgegeben und erwartet, dass sie die Ansicht lädt. –
Ich bin mir nicht sicher, aber ich frage mich, ob Aktionen, die von Funktionen zurückgegeben werden, anders behandelt werden, wenn sie von einem Browser aufgerufen werden, als von Code. Es ist möglich, dass Sie möglicherweise die andere Methode direkt aufrufen müssen, anstatt eine Aktion zurückzugeben, die die Methode tatsächlich nur aufruft. –
@PhillipStack Ich denke, du hast Recht. Es scheint, als wenn Sie eine Aktion "zurückgeben", das ist etwas, das der Browser versteht. Es kann den Server aufrufen und die zurückgegebene Aktion ausführen. Ich würde gerne die Methode aufrufen, wie Sie es vorschlagen, aber leider mache ich das alles auf einer Version von Odoo Online, dh ich habe keinen Zugriff auf den Quellcode. Ich füge diese Aktionen über die Benutzeroberfläche hinzu und finde keine Möglichkeit, eine Aktion von einer anderen Serverseite aus zu starten. – flyingL123