diff --git a/data/oomusic_converter_data.xml b/data/oomusic_converter_data.xml index 5a29a23..90265c6 100644 --- a/data/oomusic_converter_data.xml +++ b/data/oomusic_converter_data.xml @@ -1,7 +1,7 @@ - + oomusic.convert @@ -14,5 +14,19 @@ code model.cron_convert() + + + + oomusic.convert.toggle + + + 1 + days + -1 + + + code + model.cron_toggle() + diff --git a/data/oomusic_folder_data.xml b/data/oomusic_folder_data.xml index 4b5bbdc..f5861e7 100644 --- a/data/oomusic_folder_data.xml +++ b/data/oomusic_folder_data.xml @@ -36,8 +36,8 @@ oomusic.unlock.folder - 10 - minutes + 3 + hours -1 diff --git a/models/oomusic_converter.py b/models/oomusic_converter.py index 8f6104d..2e69c50 100644 --- a/models/oomusic_converter.py +++ b/models/oomusic_converter.py @@ -184,6 +184,11 @@ def action_run(self): {"state": "waiting"} ) + # Activate the cron if necessary + cron = self.env.ref("oomusic.oomusic_convert", raise_if_not_found=False) + if cron and not cron.active: + cron.try_write({"active": True}) + def action_draft(self): self.write({"state": "draft"}) self.env["oomusic.converter.line"].search([("converter_id", "in", self.ids)]).write( @@ -210,6 +215,15 @@ def action_convert(self): def cron_convert(self): self.search([("state", "=", "running")]).action_convert() + def cron_toggle(self): + # Deactivate the cron automatically if there is no job running. This prevents unnecessary + # cache clearing. + if not self.sudo().search([("state", "=", "running")]): + cron = self.env.ref("oomusic.oomusic_convert", raise_if_not_found=False) + if cron and cron.active: + cron.try_write({"active": False}) + return + class MusicConverterLine(models.Model): _name = "oomusic.converter.line"