Skip to content

Commit 9c70e72

Browse files
various clean ups - tests passing
1 parent 9e9ad38 commit 9c70e72

File tree

9 files changed

+38
-39
lines changed

9 files changed

+38
-39
lines changed

queue_job/controllers/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ def _create_graph_test_jobs(
280280
priority=priority,
281281
max_retries=max_retries,
282282
channel=channel,
283-
description="%s #%d" % (description, current_count),
283+
description=f"{description} #{current_count}",
284284
)._test_job(failure_rate=failure_rate)
285285
)
286286

queue_job/job.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ def perform(self):
505505
# traceback and message:
506506
# http://blog.ianbicking.org/2007/09/12/re-raising-exceptions/
507507
new_exc = FailedJobError(
508-
"Max. retries (%d) reached: %s" % (self.max_retries, value or type_)
508+
f"Max. retries ({self.max_retries}) reached: {value or type_}"
509509
)
510510
raise new_exc from err
511511
raise
@@ -813,7 +813,7 @@ def set_failed(self, **kw):
813813
setattr(self, k, v)
814814

815815
def __repr__(self):
816-
return "<Job %s, priority:%d>" % (self.uuid, self.priority)
816+
return f"<Job {self.uuid}, priority:{self.priority}>"
817817

818818
def _get_retry_seconds(self, seconds=None):
819819
retry_pattern = self.job_config.retry_pattern
@@ -856,8 +856,7 @@ def related_action(self):
856856
funcname = record._default_related_action
857857
if not isinstance(funcname, str):
858858
raise ValueError(
859-
"related_action must be the name of the "
860-
"method on queue.job as string"
859+
"related_action must be the name of the method on queue.job as string"
861860
)
862861
action = getattr(record, funcname)
863862
action_kwargs = self.job_config.related_action_kwargs

queue_job/jobrunner/channels.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -455,12 +455,9 @@ def get_subchannel_by_name(self, subchannel_name):
455455

456456
def __str__(self):
457457
capacity = "∞" if self.capacity is None else str(self.capacity)
458-
return "%s(C:%s,Q:%d,R:%d,F:%d)" % (
459-
self.fullname,
460-
capacity,
461-
len(self._queue),
462-
len(self._running),
463-
len(self._failed),
458+
return (
459+
f"{self.fullname}(C:{capacity},"
460+
f"Q:{self._queue},R:{self._running},F:{self._failed})"
464461
)
465462

466463
def remove(self, job):
@@ -894,8 +891,7 @@ def parse_simple_config(cls, config_string):
894891
)
895892
if k in config:
896893
raise ValueError(
897-
f"Invalid channel config {config_string}: "
898-
f"duplicate key {k}"
894+
f"Invalid channel config {config_string}: duplicate key {k}"
899895
)
900896
config[k] = v
901897
else:

queue_job/models/base.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -260,11 +260,15 @@ def _job_prepare_context_before_enqueue(self):
260260
if key in self._job_prepare_context_before_enqueue_keys()
261261
}
262262

263+
# Odoo have deprecated _patch_method and api.propagate in v16
263264
@classmethod
264265
def _patch_method(cls, name, method):
265266
origin = getattr(cls, name)
266267
method.origin = origin
267-
# propagate decorators from origin to method, and apply api decorator
268-
wrapped = api.propagate(origin, method)
269-
wrapped.origin = origin
270-
setattr(cls, name, wrapped)
268+
269+
# propagate appeared to only deal with the returns decorator
270+
# which is now, also, deprecated
271+
# wrapped = api.propagate(origin, method)
272+
# wrapped.origin = origin
273+
# setattr(cls, name, wrapped)
274+
setattr(cls, name, method)

queue_job/models/queue_job.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,20 +140,18 @@ def init(self):
140140

141141
@api.depends("dependencies")
142142
def _compute_dependency_graph(self):
143-
jobs_groups = self.env["queue.job"].read_group(
143+
jobs_groups = self.env["queue.job"]._read_group(
144144
[
145145
(
146146
"graph_uuid",
147147
"in",
148148
[uuid for uuid in self.mapped("graph_uuid") if uuid],
149149
)
150150
],
151-
["graph_uuid", "ids:array_agg(id)"],
152151
["graph_uuid"],
152+
["id:array_agg"],
153153
)
154-
ids_per_graph_uuid = {
155-
group["graph_uuid"]: group["ids"] for group in jobs_groups
156-
}
154+
ids_per_graph_uuid = {group[0]: group[1] for group in jobs_groups}
157155
for record in self:
158156
if not record.graph_uuid:
159157
record.dependency_graph = {}
@@ -211,7 +209,7 @@ def _dependency_graph_vis_node(self):
211209
}
212210

213211
def _compute_graph_jobs_count(self):
214-
jobs_groups = self.env["queue.job"].read_group(
212+
jobs_groups = self.env["queue.job"]._read_group(
215213
[
216214
(
217215
"graph_uuid",
@@ -351,7 +349,7 @@ def _subscribe_users_domain(self):
351349
if not group:
352350
return None
353351
companies = self.mapped("company_id")
354-
domain = [("groups_id", "=", group.id)]
352+
domain = [("group_ids", "=", group.id)]
355353
if companies:
356354
domain.append(("company_id", "in", companies.ids))
357355
return domain

queue_job/tests/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def assert_enqueued_job(self, method, args=None, kwargs=None, properties=None):
211211

212212
if expected_call not in actual_calls:
213213
raise AssertionError(
214-
"Job {} was not enqueued.\n" "Actual enqueued jobs:\n{}".format(
214+
"Job {} was not enqueued.\nActual enqueued jobs:\n{}".format(
215215
self._format_job_call(expected_call),
216216
"\n".join(
217217
f" * {self._format_job_call(call)}" for call in actual_calls

queue_job/tests/test_json_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def test_decoder_recordset_list(self):
100100

101101
def test_decoder_recordset_list_without_user(self):
102102
value_json = (
103-
'["a", 1, {"_type": "odoo_recordset",' '"model": "res.users", "ids": [1]}]'
103+
'["a", 1, {"_type": "odoo_recordset","model": "res.users", "ids": [1]}]'
104104
)
105105
expected = ["a", 1, self.env.ref("base.user_root")]
106106
value = json.loads(value_json, cls=JobDecoder, env=self.env)
@@ -132,7 +132,7 @@ def test_encoder_date(self):
132132
self.assertEqual(json.loads(value_json), expected)
133133

134134
def test_decoder_date(self):
135-
value_json = '["a", 1, {"_type": "date_isoformat",' '"value": "2017-04-19"}]'
135+
value_json = '["a", 1, {"_type": "date_isoformat","value": "2017-04-19"}]'
136136
expected = ["a", 1, date(2017, 4, 19)]
137137
value = json.loads(value_json, cls=JobDecoder, env=self.env)
138138
self.assertEqual(value, expected)

test_queue_job/tests/test_autovacuum.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ def test_old_jobs_are_deleted_by_cron_job(self):
1919
)
2020
stored = self._create_job()
2121
stored.write({"date_done": date_done})
22-
self.cron_job.method_direct_trigger()
22+
with self.enter_registry_test_mode():
23+
self.cron_job.method_direct_trigger()
2324
self.assertFalse(stored.exists())
2425

2526
def test_autovacuum(self):

test_queue_job/tests/test_job.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from unittest import mock
77

88
import odoo.tests.common as common
9+
from odoo import Command
910

1011
from odoo.addons.queue_job import identity_exact
1112
from odoo.addons.queue_job.delay import DelayableGraph
@@ -208,7 +209,7 @@ def test_company_complex(self):
208209
company1 = self.env.ref("base.main_company")
209210
company2 = company1.create({"name": "Queue job company"})
210211
companies = company1 | company2
211-
self.env.user.write({"company_ids": [(6, False, companies.ids)]})
212+
self.env.user.write({"company_ids": [Command.set(companies.ids)]})
212213
# Ensure the main company still the first
213214
self.assertEqual(self.env.user.company_id, company1)
214215
eta = datetime.now() + timedelta(hours=5)
@@ -604,17 +605,17 @@ def test_follower_when_write_fail(self):
604605
vals = {
605606
"name": "xx",
606607
"login": "xx",
607-
"groups_id": [(6, 0, [group.id])],
608+
"group_ids": [Command.set(group.ids)],
608609
"active": False,
609610
}
610611
inactiveusr = self.user.create(vals)
611612
inactiveusr.partner_id.active = True
612-
self.assertFalse(inactiveusr in group.users)
613+
self.assertFalse(inactiveusr in group.user_ids)
613614
stored = self._create_job()
614615
stored.write({"state": "failed"})
615616
followers = stored.message_follower_ids.mapped("partner_id")
616617
self.assertFalse(inactiveusr.partner_id in followers)
617-
self.assertFalse({u.partner_id for u in group.users} - set(followers))
618+
self.assertFalse({u.partner_id for u in group.user_ids} - set(followers))
618619

619620
def test_wizard_requeue(self):
620621
stored = self._create_job()
@@ -663,10 +664,10 @@ def setUp(self):
663664
self.simple_user = User.create(
664665
{
665666
"partner_id": self.partner_user.id,
666-
"company_ids": [(4, main_company.id)],
667+
"company_ids": [Command.link(main_company.id)],
667668
"login": "simple_user",
668669
"name": "simple user",
669-
"groups_id": [],
670+
"group_ids": [],
670671
}
671672
)
672673

@@ -684,10 +685,10 @@ def setUp(self):
684685
{
685686
"partner_id": self.other_partner_a.id,
686687
"company_id": self.other_company_a.id,
687-
"company_ids": [(4, self.other_company_a.id)],
688+
"company_ids": [Command.link(self.other_company_a.id)],
688689
"login": "my_login a",
689690
"name": "my user A",
690-
"groups_id": [(4, grp_queue_job_manager)],
691+
"group_ids": [Command.link(grp_queue_job_manager)],
691692
}
692693
)
693694
self.other_partner_b = Partner.create(
@@ -704,10 +705,10 @@ def setUp(self):
704705
{
705706
"partner_id": self.other_partner_b.id,
706707
"company_id": self.other_company_b.id,
707-
"company_ids": [(4, self.other_company_b.id)],
708+
"company_ids": [Command.link(self.other_company_b.id)],
708709
"login": "my_login_b",
709710
"name": "my user B",
710-
"groups_id": [(4, grp_queue_job_manager)],
711+
"group_ids": [Command.link(grp_queue_job_manager)],
711712
}
712713
)
713714

@@ -761,7 +762,7 @@ def test_job_subscription(self):
761762
stored._message_post_on_failure()
762763
users = (
763764
User.search(
764-
[("groups_id", "=", self.ref("queue_job.group_queue_job_manager"))]
765+
[("group_ids", "=", self.ref("queue_job.group_queue_job_manager"))]
765766
)
766767
+ stored.user_id
767768
)

0 commit comments

Comments
 (0)