def lino_resolve_type(self): """ Called on every virtual field when all models are loaded. """ f = self.return_type if isinstance(f, six.string_types): f = self.return_type = resolve_field(f) if isinstance(f, FakeField): sortable_by = f.sortable_by self.sortable_by = sortable_by if sortable_by and isinstance(sortable_by, list): sortable_by = sortable_by[0] self.column = sortable_by if isinstance(f, models.ForeignKey): f.remote_field.model = resolve_model(f.remote_field.model) set_default_verbose_name(f) for k in VFIELD_ATTRIBS: setattr(self, k, getattr(f, k, None)) # if self.name == 'detail_pointer': # logger.info('20170905 resolve_type 1 %s on %s', # self.name, self.verbose_name) #~ removed 20120919 self.return_type.editable = self.editable # if self.name == 'detail_pointer': # logger.info('20170905 resolve_type done %s %s', # self.name, self.verbose_name) from lino.core import store store.get_atomizer(self.model, self, self.name)
def lino_resolve_type(self): """ Called on every virtual field when all models are loaded. """ f = self.return_type if isinstance(f, str): try: f = self.return_type = resolve_field(f) except Exception as e: raise Exception( "Invalid return type spec {} for {} : {}".format(f, self, e)) if isinstance(f, FakeField): sortable_by = f.sortable_by self.sortable_by = sortable_by if sortable_by and isinstance(sortable_by, list): sortable_by = sortable_by[0] self.column = sortable_by if isinstance(f, models.ForeignKey): f.remote_field.model = resolve_model(f.remote_field.model) set_default_verbose_name(f) self.get_lookup = f.remote_field.get_lookup # 20200425 self.get_path_info = f.remote_field.get_path_info # 20200425 self.remote_field = f.remote_field for k in VFIELD_ATTRIBS: setattr(self, k, getattr(f, k, None)) # copy help_text if it hasn't been set by help_texts_extractor if f.help_text and not self.help_text: self.help_text = f.help_text # if self.name == 'detail_pointer': # logger.info('20170905 resolve_type 1 %s on %s', # self.name, self.verbose_name) #~ removed 20120919 self.return_type.editable = self.editable # if self.name == 'detail_pointer': # logger.info('20170905 resolve_type done %s %s', # self.name, self.verbose_name) from lino.core import store store.get_atomizer(self.model, self, self.name)
def lino_resolve_type(self): """Called on virtual fields that are defined on an Actor """ #~ logger.info("20120903 lino_resolve_type %s.%s", actor_or_model, name) #~ if self.name is not None: #~ if self.name != name: #~ raise Exception("Tried to re-use %s.%s" % (actor_or_model,name)) #~ self.name = name if isinstance(self.return_type, six.string_types): self.return_type = resolve_field(self.return_type) f = self.return_type #~ self.return_type.name = self.name if isinstance(f, models.ForeignKey): f.remote_field.model = resolve_model(f.remote_field.model) if f.verbose_name is None: #~ if f.name is None: f.verbose_name = f.remote_field.model._meta.verbose_name #~ from lino.core.kernel import set_default_verbose_name #~ set_default_verbose_name(self.return_type) if isinstance(f, FakeField): self.sortable_by = f.sortable_by # if self.name == 'detail_pointer': # logger.info('20170905 resolve_type 1 %s on %s', # self.name, self.verbose_name) #~ removed 20120919 self.return_type.editable = self.editable for k in VFIELD_ATTRIBS: setattr(self, k, getattr(self.return_type, k, None)) # if self.name == 'detail_pointer': # logger.info('20170905 resolve_type done %s %s', # self.name, self.verbose_name) from lino.core import store #~ self._lino_atomizer = store.create_field(self,self.name) store.get_atomizer(self.model, self, self.name)
def lino_resolve_type(self): """Called on virtual fields that are defined on an Actor """ # ~ logger.info("20120903 lino_resolve_type %s.%s", actor_or_model, name) # ~ if self.name is not None: # ~ if self.name != name: # ~ raise Exception("Tried to re-use %s.%s" % (actor_or_model,name)) # ~ self.name = name if isinstance(self.return_type, basestring): self.return_type = resolve_field(self.return_type) # ~ self.return_type.name = self.name if isinstance(self.return_type, models.ForeignKey): f = self.return_type if AFTER18: f.rel.model = resolve_model(f.rel.model) else: f.rel.to = resolve_model(f.rel.to) if f.verbose_name is None: # ~ if f.name is None: f.verbose_name = f.rel.model._meta.verbose_name # ~ from lino.core.kernel import set_default_verbose_name # ~ set_default_verbose_name(self.return_type) # ~ removed 20120919 self.return_type.editable = self.editable for k in """to_python choices save_form_data value_to_string verbose_name max_length rel max_digits decimal_places help_text blank""".split(): setattr(self, k, getattr(self.return_type, k, None)) # ~ logger.info('20120831 VirtualField %s on %s',name,actor_or_model) from lino.core import store # ~ self._lino_atomizer = store.create_field(self,self.name) store.get_atomizer(self.model, self, self.name)
def lino_resolve_type(self): """Called on virtual fields that are defined on an Actor """ #~ logger.info("20120903 lino_resolve_type %s.%s", actor_or_model, name) #~ if self.name is not None: #~ if self.name != name: #~ raise Exception("Tried to re-use %s.%s" % (actor_or_model,name)) #~ self.name = name if isinstance(self.return_type, six.string_types): self.return_type = resolve_field(self.return_type) #~ self.return_type.name = self.name if isinstance(self.return_type, models.ForeignKey): f = self.return_type if AFTER18: f.rel.model = resolve_model(f.rel.model) else: f.rel.to = resolve_model(f.rel.to) if f.verbose_name is None: #~ if f.name is None: f.verbose_name = f.rel.model._meta.verbose_name #~ from lino.core.kernel import set_default_verbose_name #~ set_default_verbose_name(self.return_type) #~ removed 20120919 self.return_type.editable = self.editable for k in ('''to_python choices save_form_data value_to_string verbose_name max_length rel max_digits decimal_places help_text blank'''.split()): setattr(self, k, getattr(self.return_type, k, None)) #~ logger.info('20120831 VirtualField %s on %s',name,actor_or_model) from lino.core import store #~ self._lino_atomizer = store.create_field(self,self.name) store.get_atomizer(self.model, self, self.name)