Issue 10322

Title
Not possible to redifine product field
Priority
bug
Status
unread
Nosy list
ced
Assigned to
Keywords

Created on 2021-04-20.23:39:17 by ced, last changed 7 months ago by ced.

Messages

Author: [hidden] (ced) Tryton committer Tryton translator
Date: 2021-04-20.23:39:17

The idea of the Product.__setup__ is to create a function field for template field only if the field is not already defined on product.
The problem is the Model.__setup__ makes a copy of the initial field from the first class in __mro__.
So if a module define a field in Template (and so a Function field is added to Product), a sub-module can not redefine this field because it is always replaced by the first one. At least when trytond is updating database otherwise the __setup__ is called only once and so there is no time where __setup__ is called between the first and second module.

A temporary solution is to add such code at the end of __setup__ of the redefining field module:

@classmethod
def __setup__(cls):
        super().__setup__()
        field = getattr(cls, 'myfield')
        if isinstance(field, TemplateFunction):
            setattr(cls, 'myfield', field._field)
History
Date User Action Args
2021-04-20 23:39:17cedcreate

Showing 10 items. Show all history (warning: this could be VERY long)