Skip to content

Commit 881d2ab

Browse files
committed
[MIG] delivery_roulier: Migration to 17.0
1 parent 4d2effc commit 881d2ab

8 files changed

+29
-39
lines changed

delivery_roulier/__manifest__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
44
{
55
"name": "Delivery Carrier Roulier",
6-
"version": "16.0.1.0.0",
6+
"version": "17.0.1.0.0",
77
"author": "Akretion,Odoo Community Association (OCA)",
88
"summary": "Integration of multiple carriers",
99
"maintainers": ["florian-dacosta"],

delivery_roulier/decorator.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def get_delivery_type(cls, *args, **kwargs):
3434
return cls[0].carrier_id.delivery_type
3535

3636
delivery_type = get_delivery_type(cls, *args, **kwargs)
37-
fun = "_{}{}".format(delivery_type, fun_name)
37+
fun = f"_{delivery_type}{fun_name}"
3838
if not hasattr(cls, fun):
3939
fun = "_roulier%s" % (fun_name)
4040
return getattr(cls, fun)(*args, **kwargs)

delivery_roulier/models/delivery_carrier.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
22

3-
import logging
3+
from roulier import roulier
44

55
from odoo import models
66

7-
_logger = logging.getLogger(__name__)
8-
try:
9-
from roulier import roulier
10-
except ImportError:
11-
_logger.debug("Cannot `import roulier`.")
12-
137

148
class DeliveryCarrier(models.Model):
159
_inherit = "delivery.carrier"

delivery_roulier/models/stock_picking.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def _roulier_generate_labels(self):
8484
label_info = []
8585
for picking in self:
8686
move_line_no_pack = picking.move_line_ids.filtered(
87-
lambda ml: ml.qty_done > 0.0 and not ml.result_package_id
87+
lambda ml: ml.quantity > 0.0 and not ml.result_package_id
8888
)
8989
if move_line_no_pack:
9090
raise UserError(

delivery_roulier/models/stock_quant_package.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -112,24 +112,22 @@ def _roulier_parse_response(self, picking, response):
112112
# find for which package the label is. tracking number will be updated on
113113
# this pack later on (in base_delivery_carrier_label)
114114
package_id = False
115+
ref = parcel.get("reference")
115116
if len(self) == 1:
116117
package_id = self.id
117118
else:
118-
pack = self.filtered(lambda p: p.name == parcel.get("reference"))
119+
pack = self.filtered(lambda p, ref=ref: p.name == ref)
119120
if len(pack) == 1:
120121
package_id = pack.id
121-
122+
name_prefix = ref or tracking_number or label.get("name")
123+
name_suffix = label.get("type", "").lower()
122124
parcels_data.append(
123125
{
124126
"tracking_number": tracking_number,
125127
"parcel_tracking_uri": parcel.get("tracking", {}).get("url", False),
126128
"package_id": package_id,
127129
"file": label.get("data"),
128-
"name": "%s.%s"
129-
% (
130-
parcel.get("reference") or tracking_number or label.get("name"),
131-
label.get("type", "").lower(),
132-
),
130+
"name": f"{name_prefix}.{name_suffix}",
133131
"file_type": label.get("type"),
134132
}
135133
)
@@ -287,8 +285,7 @@ def _roulier_prepare_attachments(self, picking, response):
287285
"res_model": "stock.picking",
288286
"datas": attachment["data"],
289287
"type": "binary",
290-
"name": "%s-%s.%s"
291-
% (self.name, attachment["name"], attachment["type"]),
288+
"name": f"{self.name}-{attachment['name']}.{attachment['type']}",
292289
}
293290
for attachment in attachments
294291
]

delivery_roulier/tests/test_delivery_roulier.py

+15-20
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class DeliveryRoulierCase(TransactionCase):
2727
@classmethod
2828
def setUpClass(cls):
2929
super().setUpClass()
30+
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
3031
cls.loader = FakeModelLoader(cls.env, cls.__module__)
3132
cls.loader.backup_registry()
3233

@@ -35,32 +36,29 @@ def setUpClass(cls):
3536

3637
cls.loader.update_registry((FakeDeliveryCarrier,))
3738
cls.real_get_carriers_action_available = roulier.get_carriers_action_available
38-
39-
def setUp(self):
40-
super().setUp()
41-
delivery_product = self.env["product.product"].create(
39+
delivery_product = cls.env["product.product"].create(
4240
{"name": "test shipping product", "type": "service"}
4341
)
44-
self.account = self.env["carrier.account"].create(
42+
cls.account = cls.env["carrier.account"].create(
4543
{
4644
"name": "Test Carrier Account",
4745
"delivery_type": "test",
4846
"account": "test",
4947
"password": "test",
5048
}
5149
)
52-
self.test_carrier = self.env["delivery.carrier"].create(
50+
cls.test_carrier = cls.env["delivery.carrier"].create(
5351
{
5452
"name": "Test Carrier",
5553
"delivery_type": "test",
5654
"product_id": delivery_product.id,
57-
"carrier_account_id": self.account.id,
55+
"carrier_account_id": cls.account.id,
5856
}
5957
)
60-
partner = self.env["res.partner"].create(
58+
partner = cls.env["res.partner"].create(
6159
{
6260
"name": "Carrier label test customer",
63-
"country_id": self.env.ref("base.fr").id,
61+
"country_id": cls.env.ref("base.fr").id,
6462
"street": "test street",
6563
"street2": "test street2",
6664
"city": "test city",
@@ -69,30 +67,27 @@ def setUp(self):
6967
"zip": "00000",
7068
}
7169
)
72-
product = self.env["product.product"].create(
70+
product = cls.env["product.product"].create(
7371
{"name": "Carrier test product", "type": "product", "weight": 1.2}
7472
)
75-
self.order = self.env["sale.order"].create(
73+
cls.order = cls.env["sale.order"].create(
7674
{
77-
"carrier_id": self.test_carrier.id,
75+
"carrier_id": cls.test_carrier.id,
7876
"partner_id": partner.id,
7977
"order_line": [
8078
(0, 0, {"product_id": product.id, "product_uom_qty": 1})
8179
],
8280
}
8381
)
84-
self.env["stock.quant"].with_context(inventory_mode=True).create(
82+
cls.env["stock.quant"].with_context(inventory_mode=True).create(
8583
{
8684
"product_id": product.id,
87-
"location_id": self.order.warehouse_id.lot_stock_id.id,
85+
"location_id": cls.order.warehouse_id.lot_stock_id.id,
8886
"inventory_quantity": 1,
8987
}
90-
)._apply_inventory()
91-
self.order.action_confirm()
92-
self.picking = self.order.picking_ids
93-
self.env["stock.immediate.transfer"].create(
94-
{"pick_ids": [(6, 0, self.picking.ids)]}
95-
).process()
88+
).action_apply_inventory()
89+
cls.order.action_confirm()
90+
cls.picking = cls.order.picking_ids
9691

9792
@classmethod
9893
def tearDownClass(cls):

requirements.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# generated from manifests external_dependencies
2+
roulier

test-requirements.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# delivery_roulier
2+
odoo_test_helper

0 commit comments

Comments
 (0)