Beispiel #1
0
    def __init__(self,
                 *,
                 choices=None,
                 max_choices=None,
                 min_choices=None,
                 label=None,
                 max_length=10000,
                 doc='',
                 initial=None,
                 blank=False,
                 **kwargs):

        kwargs.update(
            dict(
                choices=choices,
                label=label,
                initial=initial,
                max_choices=max_choices,
                min_choices=min_choices,
            ))

        self.inner_choices = kwargs.pop('choices', None)
        if self.inner_choices is not None:
            self.max_choices = kwargs.pop('max_choices',
                                          len(self.inner_choices))
            self.min_choices = kwargs.pop('min_choices', 0)
        else:
            self.max_choices = kwargs.pop('max_choices', None)
            self.min_choices = kwargs.pop('min_choices', None)
            if self.max_choices:
                self.inner_choices = [
                    str(i) for i in range(1, self.max_choices + 1)
                ]
            else:
                if self.min_choices:
                    self.inner_choices = [
                        str(i) for i in range(1, self.min_choices + 1)
                    ]
                else:
                    self.inner_choices = [
                        str(i) for i in range(1, self.default_length)
                    ]

        self.initial = initial
        kwargs.setdefault('help_text', '')
        kwargs.setdefault('null', True)
        label = kwargs['label']
        kwargs.setdefault('verbose_name', label)
        kwargs.setdefault('default', kwargs.pop('initial', None))
        self.initial = kwargs['default']
        if isinstance(self.inner_choices, (list, tuple)):
            self.inner_choices = list(expand_choice_tuples(self.inner_choices))
        kwargs.setdefault('verbose_name', kwargs.pop('label'))
        super().__init__(choices=None,
                         max_length=max_length,
                         blank=None,
                         **kwargs)
Beispiel #2
0
    def fix_choices_arg(self, kwargs):
        '''allows the programmer to define choices as a list of values rather
        than (value, display_value)

        '''
        choices = kwargs.get('choices')
        if not choices:
            return
        choices = expand_choice_tuples(choices)
        kwargs['choices'] = choices
Beispiel #3
0
    def fix_choices_arg(self, kwargs):
        '''allows the programmer to define choices as a list of values rather
        than (value, display_value)

        '''
        choices = kwargs.get('choices')
        if not choices:
            return
        choices = expand_choice_tuples(choices)
        kwargs['choices'] = choices
Beispiel #4
0
    def __init__(self, other_value=None, other_label=None, label='', **kwargs):

        self.choices = kwargs.pop('choices')
        if other_label:
            self.other_label = other_label
        if other_value:
            self.other_value = other_value
        # check that other_value provided is valid
        assert self.other_value.isidentifier(), wrong_value_msg
        self.choices = list(expand_choice_tuples(self.choices))
        flat_choices = [i for i, j in self.choices]
        # check if value of choices start with other_val and divider, like 'other: SOMETHING'
        for i in flat_choices:
            assert not i.startswith(self.other_value), duplicate_err_msg
        self.choices += [(self.other_value, self.other_label), ]
        self.widget = OtherSelectorWidget(choices=self.choices, other_val=self.other_value)
        fields = (CharField(required=True), CharField(required=False),)
        super().__init__(fields=fields, require_all_fields=False, label=label, **kwargs)
Beispiel #5
0
 def __setattr__(self, name, value):
     super().__setattr__(name, value)
     if name == 'choices':
         if isinstance(value, (list, tuple)) and len(value) > 0:
             self.inner_choices = list(expand_choice_tuples(value))
Beispiel #6
0
 def get_FIELD_display(self):
     choices = getattr(self, field.name + '_choices')()
     value = getattr(self, field.attname)
     return dict(expand_choice_tuples(choices))[value]
Beispiel #7
0
 def get_FIELD_display(self):
     choices = getattr(self, field.name + '_choices')()
     value = getattr(self, field.attname)
     return dict(expand_choice_tuples(choices))[value]