diff options
| -rw-r--r-- | ishtar_common/widgets.py | 24 | 
1 files changed, 16 insertions, 8 deletions
| diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index f257801d8..404d5fabe 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -39,25 +39,33 @@ reverse_lazy = lazy(reverse, unicode)  class MultipleAutocompleteField(forms.MultipleChoiceField):      def __init__(self, *args, **kwargs): -        model = None +        self.model = None          if 'model' in kwargs: -            model = kwargs.pop('model') -        if 'choices' not in kwargs and model: -            kwargs['choices'] = [(i.pk, unicode(i))for i in model.objects.all()] +            self.model = kwargs.pop('model') +        if 'choices' not in kwargs and self.model: +            kwargs['choices'] = []          new = kwargs.pop('new') if 'new' in kwargs else None -        if 'widget' not in kwargs and model: +        if 'widget' not in kwargs and self.model:              kwargs['widget'] = JQueryAutoComplete(reverse_lazy( -                    'autocomplete-'+model.__name__.lower()), -                    associated_model=model, new=new, +                    'autocomplete-'+self.model.__name__.lower()), +                    associated_model=self.model, new=new,                      multiple=True)          super(MultipleAutocompleteField, self).__init__(*args, **kwargs) +    def get_choices(self): +        return [(i.pk, unicode(i)) for i in self.model.objects.all()] + +    def valid_value(self, value): +        if not self.model: +            return super(MultipleAutocompleteField, self).valid_value(value) +        return bool(self.model.objects.filter(pk=value).count()) +      def clean(self, value):          if value:              # clean JS messup with values              try:                  if type(value) not in (list, tuple): -                    value = [value] +                    value = [int(value)]                  else:                      val = value                      value = [] | 
