[FIX] website_sale_aplicoop: Remove redundant string= attributes and fix OCA linting warnings

- Remove redundant string= from 17 field definitions where name matches string value (W8113)
- Convert @staticmethod to instance methods in selection methods for proper self.env._() access
- Fix W8161 (prefer-env-translation) by using self.env._() instead of standalone _()
- Fix W8301/W8115 (translation-not-lazy) by proper placement of % interpolation outside self.env._()
- Remove unused imports of odoo._ from group_order.py and sale_order_extension.py
- All OCA linting warnings in website_sale_aplicoop main models are now resolved

Changes:
- website_sale_aplicoop/models/group_order.py: 21 field definitions cleaned
- website_sale_aplicoop/models/sale_order_extension.py: 5 field definitions cleaned + @staticmethod conversion
- Consistent with OCA standards for addon submission
This commit is contained in:
snt 2026-02-18 17:54:43 +01:00
parent 5c89795e30
commit 6fbc7b9456
73 changed files with 5386 additions and 4354 deletions

View file

@ -13,11 +13,13 @@ Coverage:
- Extreme dates (year 1900, year 2099)
"""
from datetime import datetime, timedelta, date
from datetime import date
from datetime import timedelta
from dateutil.relativedelta import relativedelta
from odoo.tests.common import TransactionCase
from odoo.exceptions import ValidationError
from odoo.tests.common import TransactionCase
class TestLeapYearHandling(TransactionCase):
@ -25,10 +27,12 @@ class TestLeapYearHandling(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_order_spans_leap_day(self):
"""Test order that includes Feb 29 (leap year)."""
@ -36,16 +40,18 @@ class TestLeapYearHandling(TransactionCase):
start = date(2024, 2, 25)
end = date(2024, 3, 3) # Spans Feb 29
order = self.env['group.order'].create({
'name': 'Leap Year Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '2', # Wednesday (Feb 28 or 29 depending on week)
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Leap Year Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "2", # Wednesday (Feb 28 or 29 depending on week)
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Should correctly calculate pickup date
@ -57,16 +63,18 @@ class TestLeapYearHandling(TransactionCase):
start = date(2024, 2, 26) # Monday
end = date(2024, 3, 3)
order = self.env['group.order'].create({
'name': 'Feb 29 Pickup',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '3', # Thursday = Feb 29
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Feb 29 Pickup",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "3", # Thursday = Feb 29
"cutoff_day": "0",
}
)
self.assertEqual(order.pickup_date, date(2024, 2, 29))
@ -76,16 +84,18 @@ class TestLeapYearHandling(TransactionCase):
start = date(2023, 2, 25)
end = date(2023, 3, 3)
order = self.env['group.order'].create({
'name': 'Non-Leap Year Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '2',
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Non-Leap Year Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "2",
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Pickup should be Feb 28 (last day of Feb)
@ -97,26 +107,30 @@ class TestLongDurationOrders(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_order_spans_entire_year(self):
"""Test order running for 365 days."""
start = date(2024, 1, 1)
end = date(2024, 12, 31)
order = self.env['group.order'].create({
'name': 'Year-Long Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '3', # Same day each week
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Year-Long Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "3", # Same day each week
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Should handle 52+ weeks correctly
@ -128,16 +142,18 @@ class TestLongDurationOrders(TransactionCase):
start = date(2024, 1, 1)
end = date(2026, 12, 31) # 3 years
order = self.env['group.order'].create({
'name': 'Multi-Year Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'monthly',
'pickup_day': '15',
'cutoff_day': '10',
})
order = self.env["group.order"].create(
{
"name": "Multi-Year Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "monthly",
"pickup_day": "15",
"cutoff_day": "10",
}
)
self.assertTrue(order.exists())
days_diff = (end - start).days
@ -147,16 +163,18 @@ class TestLongDurationOrders(TransactionCase):
"""Test order with start_date == end_date (single day)."""
same_day = date(2024, 2, 15)
order = self.env['group.order'].create({
'name': 'One-Day Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'once',
'start_date': same_day,
'end_date': same_day,
'period': 'once',
'pickup_day': '0',
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "One-Day Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "once",
"start_date": same_day,
"end_date": same_day,
"period": "once",
"pickup_day": "0",
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
@ -166,10 +184,12 @@ class TestPickupDayBoundary(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_pickup_day_same_as_start_date(self):
"""Test when pickup_day equals start date (today)."""
@ -177,16 +197,18 @@ class TestPickupDayBoundary(TransactionCase):
start = today
end = today + timedelta(days=7)
order = self.env['group.order'].create({
'name': 'Today Pickup',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': str(start.weekday()), # Same as start
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Today Pickup",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": str(start.weekday()), # Same as start
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Pickup should be today
@ -198,16 +220,18 @@ class TestPickupDayBoundary(TransactionCase):
start = date(2024, 1, 24)
end = date(2024, 2, 1)
order = self.env['group.order'].create({
'name': 'Month-End Pickup',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'once',
'pickup_day': '2', # Wednesday = Jan 31
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Month-End Pickup",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "once",
"pickup_day": "2", # Wednesday = Jan 31
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
@ -217,16 +241,18 @@ class TestPickupDayBoundary(TransactionCase):
start = date(2024, 1, 28)
end = date(2024, 2, 5)
order = self.env['group.order'].create({
'name': 'Month Boundary Pickup',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '4', # Friday (Feb 2)
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Month Boundary Pickup",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "4", # Friday (Feb 2)
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Pickup should be in Feb
@ -238,16 +264,18 @@ class TestPickupDayBoundary(TransactionCase):
end = date(2024, 1, 8)
for day_num in range(7):
order = self.env['group.order'].create({
'name': f'Pickup Day {day_num}',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': str(day_num),
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": f"Pickup Day {day_num}",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": str(day_num),
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Each should have valid pickup_date
@ -259,10 +287,12 @@ class TestFutureStartDateOrders(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_order_starts_tomorrow(self):
"""Test order starting tomorrow."""
@ -270,16 +300,18 @@ class TestFutureStartDateOrders(TransactionCase):
start = today + timedelta(days=1)
end = start + timedelta(days=7)
order = self.env['group.order'].create({
'name': 'Future Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '3',
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Future Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "3",
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
self.assertGreater(order.start_date, today)
@ -290,16 +322,18 @@ class TestFutureStartDateOrders(TransactionCase):
start = today + relativedelta(months=6)
end = start + timedelta(days=30)
order = self.env['group.order'].create({
'name': 'Far Future Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'monthly',
'pickup_day': '15',
'cutoff_day': '10',
})
order = self.env["group.order"].create(
{
"name": "Far Future Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "monthly",
"pickup_day": "15",
"cutoff_day": "10",
}
)
self.assertTrue(order.exists())
@ -309,26 +343,30 @@ class TestExtremeDate(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_order_year_2000(self):
"""Test order in year 2000 (Y2K edge case)."""
start = date(2000, 1, 1)
end = date(2000, 12, 31)
order = self.env['group.order'].create({
'name': 'Y2K Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '3',
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Y2K Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "3",
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
@ -337,16 +375,18 @@ class TestExtremeDate(TransactionCase):
start = date(2099, 1, 1)
end = date(2099, 12, 31)
order = self.env['group.order'].create({
'name': 'Far Future Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '3',
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Far Future Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "3",
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
@ -355,16 +395,18 @@ class TestExtremeDate(TransactionCase):
start = date(1999, 12, 26)
end = date(2000, 1, 2)
order = self.env['group.order'].create({
'name': 'Century Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '6', # Saturday
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Century Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "6", # Saturday
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# Should handle date arithmetic correctly across years
@ -377,25 +419,29 @@ class TestOrderWithoutEndDate(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_permanent_order_with_null_end_date(self):
"""Test order with end_date = NULL (ongoing order)."""
start = date.today()
order = self.env['group.order'].create({
'name': 'Permanent Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': False, # No end date
'period': 'weekly',
'pickup_day': '3',
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Permanent Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": False, # No end date
"period": "weekly",
"pickup_day": "3",
"cutoff_day": "0",
}
)
# If supported, should handle gracefully
# Otherwise, may be optional validation
@ -406,10 +452,12 @@ class TestPickupCalculationAccuracy(TransactionCase):
def setUp(self):
super().setUp()
self.group = self.env['res.partner'].create({
'name': 'Test Group',
'is_company': True,
})
self.group = self.env["res.partner"].create(
{
"name": "Test Group",
"is_company": True,
}
)
def test_pickup_date_calculation_multiple_weeks(self):
"""Test pickup_date calculation over multiple weeks."""
@ -417,16 +465,18 @@ class TestPickupCalculationAccuracy(TransactionCase):
start = date(2024, 1, 1)
end = date(2024, 1, 22)
order = self.env['group.order'].create({
'name': 'Multi-Week Pickup',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'weekly',
'pickup_day': '3', # Thursday
'cutoff_day': '0',
})
order = self.env["group.order"].create(
{
"name": "Multi-Week Pickup",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "weekly",
"pickup_day": "3", # Thursday
"cutoff_day": "0",
}
)
self.assertTrue(order.exists())
# First pickup should be first Thursday on or after start
@ -438,16 +488,18 @@ class TestPickupCalculationAccuracy(TransactionCase):
start = date(2024, 2, 1)
end = date(2024, 3, 31)
order = self.env['group.order'].create({
'name': 'Monthly Order',
'group_ids': [(6, 0, [self.group.id])],
'type': 'regular',
'start_date': start,
'end_date': end,
'period': 'monthly',
'pickup_day': '15',
'cutoff_day': '10',
})
order = self.env["group.order"].create(
{
"name": "Monthly Order",
"group_ids": [(6, 0, [self.group.id])],
"type": "regular",
"start_date": start,
"end_date": end,
"period": "monthly",
"pickup_day": "15",
"cutoff_day": "10",
}
)
self.assertTrue(order.exists())
# First pickup should be Feb 15