Merge lp:~camptocamp/openerp-connector/7.0-delay-return-uuid-lep into lp:~openerp-connector-core-editors/openerp-connector/7.0

Proposed by Leonardo Pistone
Status: Merged
Approved by: Guewen Baconnier @ Camptocamp
Approved revision: 604
Merged at revision: 606
Proposed branch: lp:~camptocamp/openerp-connector/7.0-delay-return-uuid-lep
Merge into: lp:~openerp-connector-core-editors/openerp-connector/7.0
Diff against target: 60 lines (+20/-5)
2 files modified
connector/queue/job.py (+14/-4)
connector/tests/test_job.py (+6/-1)
To merge this branch: bzr merge lp:~camptocamp/openerp-connector/7.0-delay-return-uuid-lep
Reviewer Review Type Date Requested Status
Guewen Baconnier @ Camptocamp code review Approve
Review via email: mp+201448@code.launchpad.net

Commit message

[imp] when delaying function and creating a job, return the job uuid.
This should not break anything because before everything returned None.

Description of the change

The delay() function returns None.

This changes it so that it returns the new job UUID.

I changed an existing unit test to cover that.

Thanks!

To post a comment you must log in.
Revision history for this message
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote :

Nice! Thanks

review: Approve (code review)
Revision history for this message
Leonardo Pistone (lepistone) wrote :

Guewen,

FYI, I gave a quick look to what celery does in that case, and they return an AsynchResult instance you can use to ask things including the uuid.

just the uuid should do for now, still.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'connector/queue/job.py'
--- connector/queue/job.py 2013-11-18 14:28:23 +0000
+++ connector/queue/job.py 2014-01-13 16:10:56 +0000
@@ -103,13 +103,20 @@
103103
104 def enqueue(self, func, model_name=None, args=None, kwargs=None,104 def enqueue(self, func, model_name=None, args=None, kwargs=None,
105 priority=None, eta=None, max_retries=None, description=None):105 priority=None, eta=None, max_retries=None, description=None):
106 """Create a Job and enqueue it in the queue. Return the job uuid.
107
108 This expects the arguments specific to the job to be already extracted
109 from the ones to pass to the job function.
110
111 """
106 job = Job(func=func, model_name=model_name, args=args, kwargs=kwargs,112 job = Job(func=func, model_name=model_name, args=args, kwargs=kwargs,
107 priority=priority, eta=eta, max_retries=max_retries, description=description)113 priority=priority, eta=eta, max_retries=max_retries, description=description)
108 job.user_id = self.session.uid114 job.user_id = self.session.uid
109 self.store(job)115 self.store(job)
116 return job.uuid
110117
111 def enqueue_resolve_args(self, func, *args, **kwargs):118 def enqueue_resolve_args(self, func, *args, **kwargs):
112 """Create a Job and enqueue it in the queue"""119 """Create a Job and enqueue it in the queue. Return the job uuid."""
113 priority = kwargs.pop('priority', None)120 priority = kwargs.pop('priority', None)
114 eta = kwargs.pop('eta', None)121 eta = kwargs.pop('eta', None)
115 model_name = kwargs.pop('model_name', None)122 model_name = kwargs.pop('model_name', None)
@@ -638,8 +645,11 @@
638645
639 """646 """
640 def delay(session, model_name, *args, **kwargs):647 def delay(session, model_name, *args, **kwargs):
641 OpenERPJobStorage(session).enqueue_resolve_args(func,648 """Enqueue the function. Return the uuid of the created job."""
642 model_name=model_name,649 return OpenERPJobStorage(session).enqueue_resolve_args(
643 *args, **kwargs)650 func,
651 model_name=model_name,
652 *args,
653 **kwargs)
644 func.delay = delay654 func.delay = delay
645 return func655 return func
646656
=== modified file 'connector/tests/test_job.py'
--- connector/tests/test_job.py 2013-11-16 14:04:11 +0000
+++ connector/tests/test_job.py 2014-01-13 16:10:56 +0000
@@ -164,9 +164,14 @@
164 def test_job_delay(self):164 def test_job_delay(self):
165 self.cr.execute('delete from queue_job')165 self.cr.execute('delete from queue_job')
166 deco_task = job(task_a)166 deco_task = job(task_a)
167 task_a.delay(self.session, 'res.users')167 job_uuid = task_a.delay(self.session, 'res.users')
168 stored = self.queue_job.search(self.cr, self.uid, [])168 stored = self.queue_job.search(self.cr, self.uid, [])
169 self.assertEqual(len(stored), 1)169 self.assertEqual(len(stored), 1)
170 stored_brw = self.queue_job.browse(self.cr, self.uid, stored)
171 self.assertEqual(
172 stored_brw[0].uuid,
173 job_uuid,
174 'Incorrect returned Job UUID')
170175
171 def test_job_delay_args(self):176 def test_job_delay_args(self):
172 self.cr.execute('delete from queue_job')177 self.cr.execute('delete from queue_job')