Comma separated users field

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from django.newforms.fields import Field
from django.newforms.util import ValidationError 
from django.contrib.auth.models import User

from django.newforms.widgets import Input

class CommaSeparatedUsersInput(Input):
    input_type = 'text'
    
    def render(self, name, value, attrs=None):

        if value is None:
            value = ''
        elif isinstance(value, (list, tuple)):
            value = (', '.join([ user.username for user in value ]))
        return super(CommaSeparatedUsersInput, self).render(name, value, attrs)

class CommaSeparatedUsersField(Field):
    
    widget = CommaSeparatedUsersInput
    
    def clean(self, value):
        super(CommaSeparatedUsersField, self).clean(value)
        
        if not value:
            return ''
        
        if isinstance(value, (list, tuple)):
            return value

        names = set(value.lower().split(','))
        name_set = set([name.strip().lower() for name in names])
        users = list(User.objects.filter(username__in=name_set))
        unknown_names = name_set ^ set([user.username.lower() for user in users])
        if unknown_names:
            raise ValidationError('this names are incorrect %s ' % str(names))

        return users

More like this

  1. Newforms field for decimals with a comma by jonasvp 5 years, 2 months ago
  2. MultipleChoiceCommaField by rubic 6 years, 2 months ago
  3. SeparatedValuesField by jezdez 5 years, 5 months ago
  4. MultiSelectField with comma separated values (Field + FormField) by quinode 1 year ago
  5. a template tag to invoke a method on an object with a variable by Scanner 6 years ago

Comments

(Forgotten your password?)