Ejemplo n.º 1
0
def get_fields_html():
    # TODO: Django >1.4:
    # return format_html_join('\n', '<option value="{0}">{1}</option>',
    #     (df for df in choices))
    choices = sorted(registry.get_as_choices(), key=lambda x: x[1])
    return mark_safe('\n'.join('<option value="{0}">{1}</option>'.format(
        conditional_escape(df[0]), conditional_escape(df[1]))
                               for df in choices))
 def test_get_default_actions_as_choices(self):
     choices = sorted(registry.get_as_choices(), key=lambda x: x[1])
     self.assertEqual(choices, [
         (self.key % 'BooleanField', 'Boolean'),
         (self.key % 'ChoiceField', 'Choices'),
         (self.key % 'DateField', 'Date'),
         (self.key % 'DateTimeField', 'Date and Time'),
         (self.key % 'EmailField', 'Email'),
         (self.key % 'IntegerField', 'Integer'),
         (self.key % 'MultiLineTextField', 'Multi Line Text'),
         (self.key % 'SingleLineTextField', 'Single Line Text'),
         (self.key % 'TimeField', 'Time'),
     ])
 def test_get_default_actions_as_choices(self):
     choices = sorted(registry.get_as_choices(), key=lambda x: x[1])
     self.assertEqual(choices, [
         (self.key % 'BooleanField', 'Boolean'),
         (self.key % 'ChoiceField', 'Choices'),
         (self.key % 'DateField', 'Date'),
         (self.key % 'DateTimeField', 'Date and Time'),
         (self.key % 'EmailField', 'Email'),
         (self.key % 'IntegerField', 'Integer'),
         (self.key % 'MultiLineTextField', 'Multi Line Text'),
         (self.key % 'SingleLineTextField', 'Single Line Text'),
         (self.key % 'TimeField', 'Time'),
     ])
def get_fields_html():
    # TODO: Django >1.4:
    # return format_html_join('\n', '<option value="{0}">{1}</option>',
    #     (df for df in choices))
    choices = sorted(registry.get_as_choices(), key=lambda x: x[1])
    return mark_safe(
        '\n'.join(
            '<option value="{0}">{1}</option>'.format(
                conditional_escape(df[0]),
                conditional_escape(df[1])
            )
            for df in choices
        )
    )
Ejemplo n.º 5
0
class FormFieldModel(models.Model):

    parent_form = models.ForeignKey(FormModel,
                                    on_delete=models.CASCADE,
                                    related_name='fields')
    field_type = models.CharField(_('Type'),
                                  max_length=255,
                                  choices=formfield_registry.get_as_choices())
    label = models.CharField(_('Label'), max_length=255)
    name = models.SlugField(_('Name'), max_length=50, blank=True)
    _options = models.TextField(_('Options'), blank=True, null=True)
    position = models.SmallIntegerField(_('Position'), blank=True, default=0)

    class Meta:
        ordering = ['parent_form', 'position']
        unique_together = (
            "parent_form",
            "name",
        )
        verbose_name = _('Form field')
        verbose_name_plural = _('Form fields')

    def __str__(self):
        return _('Field “%(field_name)s” in form “%(form_name)s”') % {
            'field_name': self.label,
            'form_name': self.parent_form.name,
        }

    def generate_form_field(self, form):
        field_type_cls = formfield_registry.get(self.field_type)
        field = field_type_cls(**self.get_form_field_kwargs())
        field.contribute_to_form(form)
        return field

    def get_form_field_kwargs(self):
        kwargs = self.options
        kwargs.update({
            'name': self.name,
            'label': self.label,
        })
        return kwargs

    @property
    def options(self):
        """Options passed to the form field during construction."""
        if not hasattr(self, '_options_cached'):
            self._options_cached = {}
            if self._options:
                try:
                    self._options_cached = json.loads(self._options)
                except ValueError:
                    pass
        return self._options_cached

    @options.setter
    def options(self, opts):
        if hasattr(self, '_options_cached'):
            del self._options_cached
        self._options = json.dumps(opts)

    def save(self, *args, **kwargs):
        if not self.name:
            self.name = slugify(self.label)

        given_options = self.options
        field_type_cls = formfield_registry.get(self.field_type)
        invalid = set(self.options.keys()) - set(field_type_cls._meta.keys())
        if invalid:
            for key in invalid:
                del given_options[key]
            self.options = given_options

        super(FormFieldModel, self).save(*args, **kwargs)
Ejemplo n.º 6
0
class EventField(models.Model):
    event = models.ForeignKey(Event,
                              verbose_name=u'通知',
                              on_delete=models.CASCADE,
                              related_name='fields')
    field_type = models.CharField('字段类型',
                                  max_length=255,
                                  choices=formfield_registry.get_as_choices())
    label = models.CharField('显示名称', max_length=20)
    name = models.SlugField('字段名称', max_length=50, blank=True)
    _options = models.TextField('选项', blank=True, null=True)
    position = models.SmallIntegerField('显示位置', blank=True, default=0)

    class Meta:
        ordering = ['event', 'position']
        unique_together = (
            "event",
            "name",
        )
        verbose_name = '通知字段'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.label

    def generate_form_field(self, form):
        field_type_cls = formfield_registry.get(self.field_type)
        field = field_type_cls(**self.get_form_field_kwargs())
        field.contribute_to_form(form)
        return field

    def get_form_field_kwargs(self):
        kwargs = self.options
        kwargs.update({
            'name': self.name,
            'label': self.label,
        })
        return kwargs

    @property
    def options(self):
        """Options passed to the form field during construction."""
        if not hasattr(self, '_options_cached'):
            self._options_cached = {}
            if self._options:
                try:
                    self._options_cached = json.loads(self._options)
                except ValueError:
                    pass
        return self._options_cached

    @options.setter
    def options(self, opts):
        if hasattr(self, '_options_cached'):
            del self._options_cached
        self._options = json.dumps(opts)

    def save(self, *args, **kwargs):
        if not self.name:
            self.name = slugify(self.label)

        given_options = self.options
        field_type_cls = formfield_registry.get(self.field_type)
        invalid = set(self.options.keys()) - set(field_type_cls._meta.keys())
        if invalid:
            for key in invalid:
                del given_options[key]
            self.options = given_options

        super(EventField, self).save(*args, **kwargs)
Ejemplo n.º 7
0
def get_fields_html():
    choices = sorted(registry.get_as_choices(), key=lambda x: x[1])
    return format_html_join('\n', '<option value="{0}">{1}</option>',
                            (df for df in choices))
Ejemplo n.º 8
0
def get_fields_html():
    choices = sorted(registry.get_as_choices(), key=lambda x: x[1])
    return format_html_join('\n',
        '<option value="{0}">{1}</option>',
        (df for df in choices)
    )