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"