Test if field_names is None instead of empty in ModelStorage hooks
Closes #14382
This commit is contained in:
@@ -1585,7 +1585,7 @@ class Invoice(
|
||||
|
||||
def compute_fields(self, field_names=None):
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if (not field_names or 'number' in field_names):
|
||||
if (field_names is None or 'number' in field_names):
|
||||
values['number_alnum'] = (
|
||||
re.sub(r'[\W_]', '', self.number)
|
||||
if self.number is not None else None)
|
||||
|
||||
@@ -675,7 +675,7 @@ class Payment(Workflow, ModelSQL, ModelView, ChatMixin):
|
||||
Line = pool.get('account.move.line')
|
||||
super().on_modification(mode, payments, field_names=field_names)
|
||||
if mode in {'create', 'write'}:
|
||||
if not field_names or 'line' in field_names:
|
||||
if field_names is None or 'line' in field_names:
|
||||
if lines := Line.browse({p.line for p in payments if p.line}):
|
||||
Line.set_payment_amount(lines)
|
||||
|
||||
|
||||
@@ -186,12 +186,12 @@ class Move(metaclass=PoolMeta):
|
||||
cls = self.__class__
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if (self.state not in {'done', 'cancelled'}
|
||||
and (not field_names
|
||||
and (field_names is None
|
||||
or (cls.intrastat_type.on_change_with & field_names))):
|
||||
intrastat_type = self.on_change_with_intrastat_type()
|
||||
if getattr(self, 'intrastat_type', None) != intrastat_type:
|
||||
values['intrastat_type'] = intrastat_type
|
||||
if (not field_names
|
||||
if (field_names is None
|
||||
or (cls.intrastat_value.on_change_with & field_names)):
|
||||
intrastat_value = self.on_change_with_intrastat_value()
|
||||
if getattr(self, 'intrastat_value', None) != intrastat_value:
|
||||
|
||||
@@ -89,7 +89,7 @@ class Line(ModelSQL, ModelView):
|
||||
def compute_fields(self, field_names=None):
|
||||
cls = self.__class__
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if (not field_names
|
||||
if (field_names is None
|
||||
or (cls.date.on_change_with & field_names)):
|
||||
date = self.on_change_with_date()
|
||||
if getattr(self, 'date', None) != date:
|
||||
|
||||
@@ -277,7 +277,7 @@ class AccountNumber(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView):
|
||||
|
||||
def compute_fields(self, field_names=None):
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if ((not field_names or {'type', 'number'} & field_names)
|
||||
if ((field_names is None or {'type', 'number'} & field_names)
|
||||
and getattr(self, 'type', None) == 'iban'):
|
||||
number = getattr(self, 'number', None)
|
||||
if number:
|
||||
|
||||
@@ -126,7 +126,7 @@ class Company(ModelSQL, ModelView):
|
||||
Rule = pool.get('ir.rule')
|
||||
super().on_modification(mode, companies, field_names=field_names)
|
||||
if mode == 'write':
|
||||
if not field_names or 'logo' in field_names:
|
||||
if field_names is None or 'logo' in field_names:
|
||||
cls._logo_clear_cache(companies)
|
||||
Rule._domain_get_cache.clear()
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ class ContactMechanism(
|
||||
|
||||
def compute_fields(self, field_names=None):
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if not field_names or {'value', 'type'} & field_names:
|
||||
if field_names is None or {'value', 'type'} & field_names:
|
||||
if getattr(self, 'value', None) and getattr(self, 'type', None):
|
||||
value = self.format_value(value=self.value, type_=self.type)
|
||||
if self.value != value:
|
||||
|
||||
@@ -300,7 +300,7 @@ class Party(
|
||||
|
||||
def compute_fields(self, field_names=None):
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if (not field_names or 'code' in field_names):
|
||||
if (field_names is None or 'code' in field_names):
|
||||
values['code_alnum'] = (
|
||||
re.sub(r'[\W_]', '', self.code)
|
||||
if self.code is not None else None)
|
||||
|
||||
@@ -554,9 +554,9 @@ class Work(tree(parent='successors'), metaclass=PoolMeta):
|
||||
super().on_modification(mode, works, field_names=field_names)
|
||||
if mode in {'create', 'write'}:
|
||||
for work in works:
|
||||
if not field_names or 'effort' in field_names:
|
||||
if field_names is None or 'effort' in field_names:
|
||||
work.reset_leveling()
|
||||
if not field_names or field_names & {
|
||||
if field_names is None or field_names & {
|
||||
'constraint_start_time', 'constraint_finish_time',
|
||||
'effort'}:
|
||||
work.compute_dates()
|
||||
@@ -590,7 +590,7 @@ class PredecessorSuccessor(ModelSQL):
|
||||
def on_modification(cls, mode, records, field_names=None):
|
||||
super().on_modification(mode, records, field_names=field_names)
|
||||
if mode == 'create':
|
||||
if not field_names or field_names & {
|
||||
if field_names is None or field_names & {
|
||||
'predecessor', 'successor', 'parent'}:
|
||||
for record in records:
|
||||
record.predecessor.reset_leveling()
|
||||
|
||||
@@ -997,7 +997,7 @@ class Move(Workflow, ModelSQL, ModelView):
|
||||
def compute_fields(self, field_names=None):
|
||||
cls = self.__class__
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if (not field_names
|
||||
if (field_names is None
|
||||
or (cls.internal_quantity.on_change_with & field_names)):
|
||||
internal_quantity = self.on_change_with_internal_quantity()
|
||||
if getattr(self, 'internal_quantity', None) != internal_quantity:
|
||||
|
||||
@@ -165,7 +165,7 @@ class ShipmentMixin:
|
||||
Move = pool.get('stock.move')
|
||||
super().on_modification(mode, shipments, field_names=field_names)
|
||||
if (mode in {'create', 'write'}
|
||||
and (not field_names or 'planned_date' in field_names)):
|
||||
and (field_names is None or 'planned_date' in field_names)):
|
||||
cls._set_move_planned_date(shipments)
|
||||
elif mode == 'delete':
|
||||
if hasattr(cls, 'moves'):
|
||||
|
||||
@@ -127,11 +127,13 @@ class Move(metaclass=PoolMeta):
|
||||
cls = self.__class__
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if getattr(self, 'state', None) not in {'done', 'cancelled'}:
|
||||
if not field_names or cls.from_place.on_change_with & field_names:
|
||||
if (field_names is None
|
||||
or cls.from_place.on_change_with & field_names):
|
||||
from_place = self.on_change_with_from_place()
|
||||
if getattr(self, 'from_place', None) != from_place:
|
||||
values['from_place'] = from_place
|
||||
if not field_names or cls.to_place.on_change_with & field_names:
|
||||
if (field_names is None
|
||||
or cls.to_place.on_change_with & field_names):
|
||||
to_place = self.on_change_with_to_place()
|
||||
if getattr(self, 'to_place', None) != to_place:
|
||||
values['to_place'] = to_place
|
||||
|
||||
@@ -136,12 +136,12 @@ class Move(metaclass=PoolMeta):
|
||||
def compute_fields(self, field_names=None):
|
||||
cls = self.__class__
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if (not field_names
|
||||
if (field_names is None
|
||||
or (cls.internal_weight.on_change_with & field_names)):
|
||||
internal_weight = self.on_change_with_internal_weight()
|
||||
if self.internal_weight != internal_weight:
|
||||
values['internal_weight'] = internal_weight
|
||||
if (not field_names
|
||||
if (field_names is None
|
||||
or (cls.internal_volume.on_change_with & field_names)):
|
||||
internal_volume = self.on_change_with_internal_volume()
|
||||
if getattr(self, 'internal_volume', None) != internal_volume:
|
||||
|
||||
@@ -566,7 +566,7 @@ class EmailTemplate(ModelSQL, ModelView):
|
||||
@classmethod
|
||||
def on_modification(cls, mode, records, field_names=None):
|
||||
super().on_modification(mode, records, field_names=field_names)
|
||||
if not field_names or {'name', 'model'} & set(field_names):
|
||||
if field_names is None or {'name', 'model'} & set(field_names):
|
||||
ModelView._view_toolbar_get_cache.clear()
|
||||
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ class ModelStorageComputeFields(ModelSQL):
|
||||
|
||||
def compute_fields(self, field_names=None):
|
||||
values = super().compute_fields(field_names=field_names)
|
||||
if not field_names or 'value' in field_names:
|
||||
if field_names is None or 'value' in field_names:
|
||||
values['computed_value'] = self.value + 1
|
||||
return values
|
||||
|
||||
|
||||
Reference in New Issue
Block a user