Tower: upload cetmix_tower_server_queue1 16.0.2.0.0 (via marketplace)
This commit is contained in:
86
addons/cetmix_tower_server_queue1/models/cx_tower_server.py
Normal file
86
addons/cetmix_tower_server_queue1/models/cx_tower_server.py
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Copyright (C) 2022 Cetmix OÜ
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class CxTowerServer(models.Model):
|
||||||
|
_inherit = "cx.tower.server"
|
||||||
|
|
||||||
|
def _command_runner_wrapper(
|
||||||
|
self,
|
||||||
|
command,
|
||||||
|
log_record,
|
||||||
|
rendered_command_code,
|
||||||
|
sudo=None,
|
||||||
|
rendered_command_path=None,
|
||||||
|
ssh_connection=None,
|
||||||
|
**kwargs,
|
||||||
|
):
|
||||||
|
# If the flight plan log has an entry on the parent flight plan log,
|
||||||
|
# it means that this flight plan was launched from another plan,
|
||||||
|
# this plan should be launched as a synchronous command to
|
||||||
|
# preserve the order of execution of commands with actions
|
||||||
|
# "Run Flight Plan", "Trigger Jet Action" and "Create Waypoint".
|
||||||
|
# Use runner only if command log record is provided.
|
||||||
|
if (
|
||||||
|
log_record
|
||||||
|
and not log_record.plan_log_id.parent_flight_plan_log_id
|
||||||
|
and command.action
|
||||||
|
not in [
|
||||||
|
"jet_action",
|
||||||
|
"create_waypoint",
|
||||||
|
]
|
||||||
|
):
|
||||||
|
job = self.with_delay()._queue_command_runner_wrapper(
|
||||||
|
command=command,
|
||||||
|
log_record=log_record,
|
||||||
|
rendered_command_code=rendered_command_code,
|
||||||
|
sudo=sudo,
|
||||||
|
rendered_command_path=rendered_command_path,
|
||||||
|
ssh_connection=ssh_connection,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
log_record.sudo().queue_job_id = job.db_record().id
|
||||||
|
|
||||||
|
# Otherwise fallback to `super` to return the command output
|
||||||
|
else:
|
||||||
|
return super()._command_runner_wrapper(
|
||||||
|
command=command,
|
||||||
|
log_record=log_record,
|
||||||
|
rendered_command_code=rendered_command_code,
|
||||||
|
sudo=sudo,
|
||||||
|
rendered_command_path=rendered_command_path,
|
||||||
|
ssh_connection=ssh_connection,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
def _queue_command_runner_wrapper(
|
||||||
|
self,
|
||||||
|
command,
|
||||||
|
log_record,
|
||||||
|
rendered_command_code,
|
||||||
|
sudo=None,
|
||||||
|
rendered_command_path=None,
|
||||||
|
ssh_connection=None,
|
||||||
|
**kwargs,
|
||||||
|
):
|
||||||
|
# avoid executing command if plan was stopped
|
||||||
|
log_record.invalidate_recordset(["plan_log_id"])
|
||||||
|
plan_log_id = log_record.plan_log_id
|
||||||
|
if plan_log_id:
|
||||||
|
plan_log_id.invalidate_recordset(["is_stopped"])
|
||||||
|
|
||||||
|
# If plan was stopped, stop the command
|
||||||
|
if plan_log_id.is_stopped:
|
||||||
|
log_record.stop()
|
||||||
|
return
|
||||||
|
|
||||||
|
return self._command_runner(
|
||||||
|
command=command,
|
||||||
|
log_record=log_record,
|
||||||
|
rendered_command_code=rendered_command_code,
|
||||||
|
sudo=sudo,
|
||||||
|
rendered_command_path=rendered_command_path,
|
||||||
|
ssh_connection=ssh_connection,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user