" % self.uuid
@@ -191,18 +196,36 @@ def __eq__(self, other):
def __hash__(self):
return id(self)
+ def set_no_eta(self):
+ self._sorting_key = JobSortingKey(None, *self._sorting_key[1:])
+
+ @property
+ def seq(self):
+ return self._sorting_key.seq
+
+ @property
+ def date_created(self):
+ return self._sorting_key.date_created
+
+ @property
+ def priority(self):
+ return self._sorting_key.priority
+
+ @property
+ def eta(self):
+ return self._sorting_key.eta
+
def sorting_key(self):
- return self.eta, self.priority, self.date_created, self.seq
+ # DEPRECATED
+ return self._sorting_key
def sorting_key_ignoring_eta(self):
- return self.priority, self.date_created, self.seq
+ return self._sorting_key[1:]
def __lt__(self, other):
- if self.eta and not other.eta:
- return True
- elif not self.eta and other.eta:
- return False
- return self.sorting_key() < other.sorting_key()
+ # Do not compare job where ETA is set with job where it is not
+ # If one job 'eta' is set, and the other is None, it raises TypeError
+ return self._sorting_key < other._sorting_key
class ChannelQueue:
@@ -312,7 +335,7 @@ def remove(self, job):
def pop(self, now):
while self._eta_queue and self._eta_queue[0].eta <= now:
eta_job = self._eta_queue.pop()
- eta_job.eta = None
+ eta_job.set_no_eta()
self._queue.add(eta_job)
if self.sequential and self._eta_queue and self._queue:
eta_job = self._eta_queue[0]
diff --git a/queue_job/static/description/index.html b/queue_job/static/description/index.html
index c0bc6ee76d..c53bb505a6 100644
--- a/queue_job/static/description/index.html
+++ b/queue_job/static/description/index.html
@@ -372,7 +372,7 @@ Job Queue
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:9f7dad42fbcb042d09ea5124a82257167c8d6bf4ebc51f97999e9031e8c7eb23
+!! source digest: sha256:d7d006c41953034faf1dfee702a1887c0908c92b5744d6d3e48dfe52a7f2461b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

This addon adds an integrated Job Queue to Odoo.