def get_form_field_init_args(self): args = { "required": self.required, "label": self.label if self.label else "", "initial": self.initial if self.initial else None, "help_text": self.help_text, } if self.field_class in ("django.forms.CharField", "django.forms.EmailField", "django.forms.RegexField"): args.update({"max_length": self.max_length, "min_length": self.min_length}) if self.field_class in ("django.forms.IntegerField", "django.forms.DecimalField"): args.update( { "max_value": int(self.max_value) if self.max_value != None else None, "min_value": int(self.min_value) if self.min_value != None else None, } ) if self.field_class == "django.forms.DecimalField": args.update( { "max_value": Decimal(str(self.max_value)), "min_value": Decimal(str(self.min_value)), "max_digits": self.max_digits, "decimal_places": self.decimal_places, } ) if self.field_class == "django.forms.RegexField": if self.regex: args.update({"regex": self.regex}) if self.field_class in ("django.forms.ChoiceField", "django.forms.MultipleChoiceField"): if self.choice_values: choices = [] regex = re.compile("[\s]*\n[\s]*") values = regex.split(self.choice_values) labels = regex.split(self.choice_labels) if self.choice_labels else [] for index, value in enumerate(values): try: label = labels[index] except: label = value choices.append((value, label)) args.update({"choices": tuple(choices)}) if self.field_class in ("django.forms.ModelChoiceField", "django.forms.ModelMultipleChoiceField"): args.update({"queryset": ModelNameField.get_model_from_string(self.choice_model).objects.all()}) if self.field_class == "django.forms.ModelChoiceField": args.update({"empty_label": self.choice_model_empty_label}) if self.widget: args.update({"widget": get_class(self.widget)()}) return args
def get_form_field_init_args(self): args = { 'required': self.required, 'label': self.label if self.label else '', 'initial': self.initial if self.initial else None, 'help_text': self.help_text, } if self.field_class in ('django.forms.CharField', 'django.forms.EmailField', 'django.forms.RegexField'): args.update({ 'max_length': self.max_length, 'min_length': self.min_length, }) if self.field_class in ('django.forms.IntegerField', 'django.forms.DecimalField'): args.update({ 'max_value': int(self.max_value) if self.max_value != None else None, 'min_value': int(self.min_value) if self.min_value != None else None, }) if self.field_class == 'django.forms.DecimalField': args.update({ 'max_value': Decimal(str(self.max_value)), 'min_value': Decimal(str(self.min_value)), 'max_digits': self.max_digits, 'decimal_places': self.decimal_places, }) if self.field_class == 'django.forms.RegexField': if self.regex: args.update({ 'regex': self.regex }) if self.field_class in ('django.forms.ChoiceField', 'django.forms.MultipleChoiceField'): if self.choice_values: choices = [] regex = re.compile('[\s]*\n[\s]*') values = regex.split(self.choice_values) labels = regex.split(self.choice_labels) if self.choice_labels else [] for index, value in enumerate(values): try: label = labels[index] except: label = value choices.append((value, label)) args.update({ 'choices': tuple(choices) }) if self.field_class in ('django.forms.ModelChoiceField', 'django.forms.ModelMultipleChoiceField'): args.update({ 'queryset': ModelNameField.get_model_from_string(self.choice_model).objects.all() }) if self.field_class == 'django.forms.ModelChoiceField': args.update({ 'empty_label': self.choice_model_empty_label }) if self.widget: args.update({ 'widget': get_class(self.widget)() }) return args
def get_form_field_init_args(self): args = { 'required': self.required, 'label': self.label if self.label else '', 'initial': self.initial if self.initial else None, 'help_text': self.help_text, } if self.field_class in ('django.forms.CharField', 'django.forms.EmailField', 'django.forms.RegexField'): args.update({ 'max_length': self.max_length, 'min_length': self.min_length, }) if self.field_class in ('django.forms.IntegerField', 'django.forms.DecimalField'): args.update({ 'max_value': int(self.max_value) if self.max_value != None else None, 'min_value': int(self.min_value) if self.min_value != None else None, }) if self.field_class == 'django.forms.DecimalField': args.update({ 'max_value': Decimal(str(self.max_value)) if self.max_value != None else None, 'min_value': Decimal(str(self.min_value)) if self.max_value != None else None, 'max_digits': self.max_digits, 'decimal_places': self.decimal_places, }) if self.field_class == 'django.forms.RegexField': if self.regex: args.update({'regex': self.regex}) if self.field_class in ('django.forms.ChoiceField', 'django.forms.MultipleChoiceField'): if self.choice_values: choices = [] regex = re.compile('[\s]*\n[\s]*') values = regex.split(self.choice_values) labels = regex.split( self.choice_labels) if self.choice_labels else [] for index, value in enumerate(values): try: label = labels[index] except: label = value choices.append((value, label)) args.update({'choices': tuple(choices)}) if self.field_class in ('django.forms.ModelChoiceField', 'django.forms.ModelMultipleChoiceField'): args.update({ 'queryset': ModelNameField.get_model_from_string( self.choice_model).objects.all() }) if self.field_class == 'django.forms.ModelChoiceField': args.update({'empty_label': self.choice_model_empty_label}) if self.widget: args.update({'widget': get_class(self.widget)()}) return args
class FormDefinitionField(models.Model): form_definition = models.ForeignKey(FormDefinition) field_class = models.CharField(_('field class'), choices=settings.FIELD_CLASSES, max_length=100) position = models.IntegerField(_('position'), blank=True, null=True) name = models.SlugField(_('name'), max_length=255) label = models.CharField(_('label'), max_length=255, blank=True, null=True) required = models.BooleanField(_('required'), default=True) include_result = models.BooleanField( _('include in result'), help_text= ('If this is disabled, the field value will not be included in logs and e-mails generated from form data.' ), default=True) widget = models.CharField(_('widget'), default='', choices=settings.WIDGET_CLASSES, max_length=255, blank=True, null=True) initial = models.TextField(_('initial value'), blank=True, null=True) help_text = models.CharField(_('help text'), max_length=255, blank=True, null=True) choice_values = models.TextField(_('values'), help_text=_('One value per line'), blank=True, null=True) choice_labels = models.TextField(_('labels'), help_text=_('One label per line'), blank=True, null=True) max_length = models.IntegerField(_('max. length'), blank=True, null=True) min_length = models.IntegerField(_('min. length'), blank=True, null=True) max_value = models.FloatField(_('max. value'), blank=True, null=True) min_value = models.FloatField(_('min. value'), blank=True, null=True) max_digits = models.IntegerField(_('max. digits'), blank=True, null=True) decimal_places = models.IntegerField(_('decimal places'), blank=True, null=True) regex = RegexpExpressionField(_('regular Expression'), max_length=255, blank=True, null=True) choice_model_choices = settings.CHOICE_MODEL_CHOICES choice_model = ModelNameField( _('data model'), max_length=255, blank=True, null=True, choices=choice_model_choices, help_text=('your_app.models.ModelName' if not choice_model_choices else None)) choice_model_empty_label = models.CharField(_('empty label'), max_length=255, blank=True, null=True) class Meta: verbose_name = _('field') verbose_name_plural = _('fields') ordering = ['position'] def save(self, *args, **kwargs): if self.position == None: self.position = 0 super(FormDefinitionField, self).save(*args, **kwargs) def ____init__(self, field_class=None, name=None, required=None, widget=None, label=None, initial=None, help_text=None, *args, **kwargs): super(FormDefinitionField, self).__init__(*args, **kwargs) self.name = name self.field_class = field_class self.required = required self.widget = widget self.label = label self.initial = initial self.help_text = help_text def get_form_field_init_args(self): args = { 'required': self.required, 'label': self.label if self.label else '', 'initial': self.initial if self.initial else None, 'help_text': self.help_text, } if self.field_class in ('django.forms.CharField', 'django.forms.EmailField', 'django.forms.RegexField'): args.update({ 'max_length': self.max_length, 'min_length': self.min_length, }) if self.field_class in ('django.forms.IntegerField', 'django.forms.DecimalField'): args.update({ 'max_value': int(self.max_value) if self.max_value != None else None, 'min_value': int(self.min_value) if self.min_value != None else None, }) if self.field_class == 'django.forms.DecimalField': args.update({ 'max_value': Decimal(str(self.max_value)) if self.max_value != None else None, 'min_value': Decimal(str(self.min_value)) if self.max_value != None else None, 'max_digits': self.max_digits, 'decimal_places': self.decimal_places, }) if self.field_class == 'django.forms.RegexField': if self.regex: args.update({'regex': self.regex}) if self.field_class in ('django.forms.ChoiceField', 'django.forms.MultipleChoiceField'): if self.choice_values: choices = [] regex = re.compile('[\s]*\n[\s]*') values = regex.split(self.choice_values) labels = regex.split( self.choice_labels) if self.choice_labels else [] for index, value in enumerate(values): try: label = labels[index] except: label = value choices.append((value, label)) args.update({'choices': tuple(choices)}) if self.field_class in ('django.forms.ModelChoiceField', 'django.forms.ModelMultipleChoiceField'): args.update({ 'queryset': ModelNameField.get_model_from_string( self.choice_model).objects.all() }) if self.field_class == 'django.forms.ModelChoiceField': args.update({'empty_label': self.choice_model_empty_label}) if self.widget: args.update({'widget': get_class(self.widget)()}) return args def __unicode__(self): return self.label if self.label else self.name
def get_form_field_init_args(self): args = { 'required': self.required, 'label': self.label if self.label else '', 'initial': self.initial if self.initial else None, 'help_text': self.help_text, } if self.field_class in ('django.forms.CharField', 'django.forms.EmailField', 'django.forms.RegexField'): args.update({ 'max_length': self.max_length, 'min_length': self.min_length, }) if self.field_class in ('django.forms.IntegerField', 'django.forms.DecimalField'): args.update({ 'max_value': int(self.max_value) if self.max_value != None else None, 'min_value': int(self.min_value) if self.min_value != None else None, }) if self.field_class == 'django.forms.DecimalField': args.update({ 'max_value': None if self.max_value == '' or self.max_value is None else Decimal(str(self.max_value)), 'min_value': None if self.min_value == '' or self.min_value is None else Decimal(str(self.min_value)), 'max_digits': self.max_digits, 'decimal_places': self.decimal_places, }) if self.field_class == 'django.forms.RegexField': if self.regex: args.update({ 'regex': self.regex }) if self.field_class in ('django.forms.ChoiceField', 'django.forms.MultipleChoiceField'): if self.choice_values: choices = [] regex = re.compile('[\s]*\n[\s]*') values = regex.split(self.choice_values) labels = regex.split(self.choice_labels) if self.choice_labels else [] for index, value in enumerate(values): try: label = labels[index] except: label = value choices.append((value, label)) args.update({ 'choices': tuple(choices) }) if getattr(django_settings, 'FORM_DESIGNER_INITIAL_CHOICE_EMPTY', False) \ and self.field_class == 'django.forms.ChoiceField' \ and not self.widget: choices = list(args['choices']) choices.insert(0, ('', _('Please Select...'))) args['choices'] = choices if self.field_class in ('django.forms.ModelChoiceField', 'django.forms.ModelMultipleChoiceField'): args.update({ 'queryset': ModelNameField.get_model_from_string(self.choice_model).objects.all() }) if self.field_class == 'django.forms.ModelChoiceField': args.update({ 'empty_label': self.choice_model_empty_label }) if self.widget: args.update({ 'widget': get_class(self.widget)() }) return args