[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:
parent
5c89795e30
commit
6fbc7b9456
73 changed files with 5386 additions and 4354 deletions
|
|
@ -4,7 +4,6 @@
|
|||
import logging
|
||||
from datetime import timedelta
|
||||
|
||||
from odoo import _
|
||||
from odoo import api
|
||||
from odoo import fields
|
||||
from odoo import models
|
||||
|
|
@ -19,52 +18,47 @@ class GroupOrder(models.Model):
|
|||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
_order = "start_date desc"
|
||||
|
||||
@staticmethod
|
||||
def _get_order_type_selection(records):
|
||||
def _get_order_type_selection(self):
|
||||
"""Return order type selection options with translations."""
|
||||
return [
|
||||
("regular", _("Regular Order")),
|
||||
("special", _("Special Order")),
|
||||
("promotional", _("Promotional Order")),
|
||||
("regular", self.env._("Regular Order")),
|
||||
("special", self.env._("Special Order")),
|
||||
("promotional", self.env._("Promotional Order")),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def _get_period_selection(records):
|
||||
def _get_period_selection(self):
|
||||
"""Return period selection options with translations."""
|
||||
return [
|
||||
("once", _("One-time")),
|
||||
("weekly", _("Weekly")),
|
||||
("biweekly", _("Biweekly")),
|
||||
("monthly", _("Monthly")),
|
||||
("once", self.env._("One-time")),
|
||||
("weekly", self.env._("Weekly")),
|
||||
("biweekly", self.env._("Biweekly")),
|
||||
("monthly", self.env._("Monthly")),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def _get_day_selection(records):
|
||||
def _get_day_selection(self):
|
||||
"""Return day of week selection options with translations."""
|
||||
return [
|
||||
("0", _("Monday")),
|
||||
("1", _("Tuesday")),
|
||||
("2", _("Wednesday")),
|
||||
("3", _("Thursday")),
|
||||
("4", _("Friday")),
|
||||
("5", _("Saturday")),
|
||||
("6", _("Sunday")),
|
||||
("0", self.env._("Monday")),
|
||||
("1", self.env._("Tuesday")),
|
||||
("2", self.env._("Wednesday")),
|
||||
("3", self.env._("Thursday")),
|
||||
("4", self.env._("Friday")),
|
||||
("5", self.env._("Saturday")),
|
||||
("6", self.env._("Sunday")),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def _get_state_selection(records):
|
||||
def _get_state_selection(self):
|
||||
"""Return state selection options with translations."""
|
||||
return [
|
||||
("draft", _("Draft")),
|
||||
("open", _("Open")),
|
||||
("closed", _("Closed")),
|
||||
("cancelled", _("Cancelled")),
|
||||
("draft", self.env._("Draft")),
|
||||
("open", self.env._("Open")),
|
||||
("closed", self.env._("Closed")),
|
||||
("cancelled", self.env._("Cancelled")),
|
||||
]
|
||||
|
||||
# === Multicompañía ===
|
||||
company_id = fields.Many2one(
|
||||
"res.company",
|
||||
string="Company",
|
||||
required=True,
|
||||
default=lambda self: self.env.company,
|
||||
tracking=True,
|
||||
|
|
@ -73,7 +67,6 @@ class GroupOrder(models.Model):
|
|||
|
||||
# === Campos básicos ===
|
||||
name = fields.Char(
|
||||
string="Name",
|
||||
required=True,
|
||||
tracking=True,
|
||||
translate=True,
|
||||
|
|
@ -84,7 +77,6 @@ class GroupOrder(models.Model):
|
|||
"group_order_group_rel",
|
||||
"order_id",
|
||||
"group_id",
|
||||
string="Consumer Groups",
|
||||
required=True,
|
||||
domain=[("is_group", "=", True)],
|
||||
tracking=True,
|
||||
|
|
@ -92,7 +84,6 @@ class GroupOrder(models.Model):
|
|||
)
|
||||
type = fields.Selection(
|
||||
selection=_get_order_type_selection,
|
||||
string="Order Type",
|
||||
required=True,
|
||||
default="regular",
|
||||
tracking=True,
|
||||
|
|
@ -101,13 +92,11 @@ class GroupOrder(models.Model):
|
|||
|
||||
# === Fechas ===
|
||||
start_date = fields.Date(
|
||||
string="Start Date",
|
||||
required=False,
|
||||
tracking=True,
|
||||
help="Day when the consumer group order opens for purchases",
|
||||
)
|
||||
end_date = fields.Date(
|
||||
string="End Date",
|
||||
required=False,
|
||||
tracking=True,
|
||||
help="If empty, the consumer group order is permanent",
|
||||
|
|
@ -116,7 +105,6 @@ class GroupOrder(models.Model):
|
|||
# === Período y días ===
|
||||
period = fields.Selection(
|
||||
selection=_get_period_selection,
|
||||
string="Recurrence Period",
|
||||
required=True,
|
||||
default="weekly",
|
||||
tracking=True,
|
||||
|
|
@ -124,14 +112,12 @@ class GroupOrder(models.Model):
|
|||
)
|
||||
pickup_day = fields.Selection(
|
||||
selection=_get_day_selection,
|
||||
string="Pickup Day",
|
||||
required=False,
|
||||
tracking=True,
|
||||
help="Day of the week when members pick up their orders",
|
||||
)
|
||||
cutoff_day = fields.Selection(
|
||||
selection=_get_day_selection,
|
||||
string="Cutoff Day",
|
||||
required=False,
|
||||
tracking=True,
|
||||
help="Day when purchases stop and the consumer group order is locked for this week.",
|
||||
|
|
@ -139,20 +125,17 @@ class GroupOrder(models.Model):
|
|||
|
||||
# === Home delivery ===
|
||||
home_delivery = fields.Boolean(
|
||||
string="Home Delivery",
|
||||
default=False,
|
||||
tracking=True,
|
||||
help="Whether this consumer group order includes home delivery service",
|
||||
)
|
||||
delivery_product_id = fields.Many2one(
|
||||
"product.product",
|
||||
string="Delivery Product",
|
||||
domain=[("type", "=", "service")],
|
||||
tracking=True,
|
||||
help="Product to use for home delivery (service type)",
|
||||
)
|
||||
delivery_date = fields.Date(
|
||||
string="Delivery Date",
|
||||
compute="_compute_delivery_date",
|
||||
store=True,
|
||||
readonly=True,
|
||||
|
|
@ -161,14 +144,12 @@ class GroupOrder(models.Model):
|
|||
|
||||
# === Computed date fields ===
|
||||
pickup_date = fields.Date(
|
||||
string="Pickup Date",
|
||||
compute="_compute_pickup_date",
|
||||
store=True,
|
||||
readonly=True,
|
||||
help="Calculated next occurrence of pickup day",
|
||||
)
|
||||
cutoff_date = fields.Date(
|
||||
string="Cutoff Date",
|
||||
compute="_compute_cutoff_date",
|
||||
store=True,
|
||||
readonly=True,
|
||||
|
|
@ -181,7 +162,6 @@ class GroupOrder(models.Model):
|
|||
"group_order_supplier_rel",
|
||||
"order_id",
|
||||
"supplier_id",
|
||||
string="Suppliers",
|
||||
domain=[("supplier_rank", ">", 0)],
|
||||
tracking=True,
|
||||
help="Products from these suppliers will be available.",
|
||||
|
|
@ -191,7 +171,6 @@ class GroupOrder(models.Model):
|
|||
"group_order_product_rel",
|
||||
"order_id",
|
||||
"product_id",
|
||||
string="Products",
|
||||
tracking=True,
|
||||
help="Directly assigned products.",
|
||||
)
|
||||
|
|
@ -200,7 +179,6 @@ class GroupOrder(models.Model):
|
|||
"group_order_category_rel",
|
||||
"order_id",
|
||||
"category_id",
|
||||
string="Categories",
|
||||
tracking=True,
|
||||
help="Products in these categories will be available",
|
||||
)
|
||||
|
|
@ -208,29 +186,24 @@ class GroupOrder(models.Model):
|
|||
# === Estado ===
|
||||
state = fields.Selection(
|
||||
selection=_get_state_selection,
|
||||
string="State",
|
||||
default="draft",
|
||||
tracking=True,
|
||||
)
|
||||
|
||||
# === Descripción e imagen ===
|
||||
description = fields.Text(
|
||||
string="Description",
|
||||
translate=True,
|
||||
help="Free text description for this consumer group order",
|
||||
)
|
||||
delivery_notice = fields.Text(
|
||||
string="Delivery Notice",
|
||||
translate=True,
|
||||
help="Notice about home delivery displayed to users (shown when home delivery is enabled)",
|
||||
)
|
||||
image = fields.Binary(
|
||||
string="Image",
|
||||
help="Image displayed alongside the consumer group order name",
|
||||
attachment=True,
|
||||
)
|
||||
display_image = fields.Binary(
|
||||
string="Display Image",
|
||||
compute="_compute_display_image",
|
||||
store=True,
|
||||
help="Image to display: uses consumer group order image if set, otherwise group image",
|
||||
|
|
@ -249,7 +222,6 @@ class GroupOrder(models.Model):
|
|||
record.display_image = False
|
||||
|
||||
available_products_count = fields.Integer(
|
||||
string="Available Products Count",
|
||||
compute="_compute_available_products_count",
|
||||
store=False,
|
||||
help="Total count of available products from all sources",
|
||||
|
|
@ -270,13 +242,14 @@ class GroupOrder(models.Model):
|
|||
if group.company_id and group.company_id != record.company_id:
|
||||
raise ValidationError(
|
||||
self.env._(
|
||||
"Group {group} belongs to company {group_company}, "
|
||||
"not to {record_company}."
|
||||
).format(
|
||||
group=group.name,
|
||||
group_company=group.company_id.name,
|
||||
record_company=record.company_id.name,
|
||||
"Group %(group)s belongs to company %(group_company)s, "
|
||||
"not to %(record_company)s."
|
||||
)
|
||||
% {
|
||||
"group": group.name,
|
||||
"group_company": group.company_id.name,
|
||||
"record_company": record.company_id.name,
|
||||
}
|
||||
)
|
||||
|
||||
@api.constrains("start_date", "end_date")
|
||||
|
|
@ -569,11 +542,12 @@ class GroupOrder(models.Model):
|
|||
pickup_name = dict(self._get_day_selection())[str(pickup)]
|
||||
cutoff_name = dict(self._get_day_selection())[str(cutoff)]
|
||||
raise ValidationError(
|
||||
_(
|
||||
"For weekly orders, pickup day ({pickup}) must be after or equal to "
|
||||
"cutoff day ({cutoff}) in the same week. Current configuration would "
|
||||
self.env._(
|
||||
"For weekly orders, pickup day (%(pickup)s) must be after or equal to "
|
||||
"cutoff day (%(cutoff)s) in the same week. Current configuration would "
|
||||
"put pickup before cutoff, which is illogical."
|
||||
).format(pickup=pickup_name, cutoff=cutoff_name)
|
||||
)
|
||||
% {"pickup": pickup_name, "cutoff": cutoff_name}
|
||||
)
|
||||
|
||||
# === Onchange Methods ===
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue