# overridden inherited fields to bypass access rights, in case you have
# access to the user but not its corresponding partner
- name = openerp.fields.Char(related='partner_id.name')
- email = openerp.fields.Char(related='partner_id.email')
+ name = openerp.fields.Char(related='partner_id.name', inherited=True)
+ email = openerp.fields.Char(related='partner_id.email', inherited=True)
def on_change_login(self, cr, uid, ids, login, context=None):
if login and tools.single_email_re.match(login):
_free_attrs = None # list of semantic-free attribute names
automatic = False # whether the field is automatically created ("magic" field)
- _origin = None # the column or field interfaced by self, if any
+ inherited = False # whether the field is inherited (_inherits)
+ column = None # the column interfaced by the field
name = None # name of the field
type = None # type of the field (string)
def to_column(self):
""" return a low-level field object corresponding to `self` """
assert self.store
- if self._origin:
- assert isinstance(self._origin, fields._column)
+ if self.column:
# some columns are registry-dependent, like float fields (digits);
# duplicate them to avoid sharing between registries
- return copy(self._origin)
+ return copy(self.column)
_logger.debug("Create fields._column for Field %s", self)
args = {}
# inheritance between different models)
cls._fields = {}
for attr, field in getmembers(cls, Field.__instancecheck__):
- if not field._origin:
+ if not field.inherited:
cls._add_field(attr, field.copy())
# introduce magic fields
for attr, field in cls.pool[parent_model]._fields.iteritems():
if attr not in cls._fields:
cls._add_field(attr, field.copy(
+ inherited=True,
related=(parent_field, attr),
related_sudo=False,
- _origin=field,
))
cls._inherits_reload_src()
def to_field_args(self):
""" return a dictionary with all the arguments to pass to the field """
items = [
- ('_origin', self), # field interfaces self
+ ('column', self), # field interfaces self
('copy', self.copy),
('index', self.select),
('manual', self.manual),