def __init__(self, model, field, meth): FieldChooser.__init__(self, field) self.model = model #~ self.field = model._meta.get_field(fldname) self.meth = meth from lino.core.gfks import is_foreignkey from lino.core.choicelists import ChoiceListField if isinstance(field, ChoiceListField): self.simple_values = getattr(meth, 'simple_values', False) self.instance_values = getattr(meth, 'instance_values', True) self.force_selection = getattr( meth, 'force_selection', self.force_selection) elif not is_foreignkey(field): self.simple_values = getattr(meth, 'simple_values', False) self.instance_values = getattr(meth, 'instance_values', False) self.force_selection = getattr( meth, 'force_selection', self.force_selection) #~ self.context_params = meth.func_code.co_varnames[1:meth.func_code.co_argcount] self.context_params = meth.context_params #~ self.multiple = meth.multiple #~ self.context_params = meth.func_code.co_varnames[:meth.func_code.co_argcount] #~ print '20100724', meth, self.context_params #~ logger.warning("20100527 %s %s",self.context_params,meth) self.context_values = [] self.context_fields = [] for name in self.context_params: if name == "ar": continue f = self.get_data_elem(name) if f is None: raise Exception( "No data element '%s' in %s " "(method %s_choices)" % ( name, self.model, field.name)) #~ if name == 'p_book': #~ print 20131012, f self.context_fields.append(f) self.context_values.append(name + "Hidden") #~ if isinstance(f,models.ForeignKey): #~ self.context_values.append(name+"Hidden") #~ else: #~ self.context_values.append(name) self.converters = [] #~ try: for f in self.context_fields: cv = make_converter(f) if cv is not None: self.converters.append(cv) #~ except models.FieldDoesNotExist,e: #~ print e if hasattr(model, "create_%s_choice" % field.name): self.can_create_choice = True m = getattr(model, "%s_choice_display" % field.name, None) if m is not None: self.choice_display_method = m
def __init__(self, model, field, meth): FieldChooser.__init__(self, field) self.model = model #~ self.field = model._meta.get_field(fldname) self.meth = meth from lino.core.gfks import is_foreignkey from lino.core.choicelists import ChoiceListField if isinstance(field, ChoiceListField): self.simple_values = getattr(meth, 'simple_values', False) self.instance_values = getattr(meth, 'instance_values', True) self.force_selection = getattr(meth, 'force_selection', self.force_selection) elif not is_foreignkey(field): self.simple_values = getattr(meth, 'simple_values', False) self.instance_values = getattr(meth, 'instance_values', False) self.force_selection = getattr(meth, 'force_selection', self.force_selection) #~ self.context_params = meth.func_code.co_varnames[1:meth.func_code.co_argcount] self.context_params = meth.context_params #~ self.multiple = meth.multiple #~ self.context_params = meth.func_code.co_varnames[:meth.func_code.co_argcount] #~ print '20100724', meth, self.context_params #~ logger.warning("20100527 %s %s",self.context_params,meth) self.context_values = [] self.context_fields = [] for name in self.context_params: if name == "ar": continue f = self.get_data_elem(name) if f is None: raise Exception("No data element '%s' in %s " "(method %s_choices)" % (name, self.model, field.name)) #~ if name == 'p_book': #~ print 20131012, f self.context_fields.append(f) self.context_values.append(name + "Hidden") #~ if isinstance(f,models.ForeignKey): #~ self.context_values.append(name+"Hidden") #~ else: #~ self.context_values.append(name) self.converters = [] #~ try: for f in self.context_fields: cv = make_converter(f) if cv is not None: self.converters.append(cv) #~ except models.FieldDoesNotExist,e: #~ print e if hasattr(model, "create_%s_choice" % field.name): self.can_create_choice = True m = getattr(model, "%s_choice_display" % field.name, None) if m is not None: self.choice_display_method = m
def uses_simple_values(holder, fld): "used by :class:`lino.core.store`" from lino.core.gfks import is_foreignkey if is_foreignkey(fld): return False if holder is not None: ch = holder.get_chooser_for_field(fld.name) if ch is not None: return ch.simple_values choices = list(fld.choices) if len(choices) == 0: return True if type(choices[0]) in (list, tuple): return False return True