src/p4l/forms.py
author ymh <ymh.work@gmail.com>
Tue, 27 Aug 2013 11:01:32 +0200
changeset 0 81e7900b06a7
child 4 047675624f45
permissions -rw-r--r--
First import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
'''
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
Created on Aug 4, 2013
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
@author: ymh
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
'''
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
from django.conf import settings
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
from django.contrib.auth import get_user_model
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
from django.contrib.auth.forms import (UserChangeForm as AuthUserChangeForm, 
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    UserCreationForm as AuthUserCreationForm)
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
from django.core.exceptions import ValidationError
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
from django.forms.fields import ChoiceField
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
from django.utils.translation import ugettext as _
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
User = get_user_model()
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
class UserCreationform(AuthUserCreationForm):
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    class Meta:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        model = User
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
        
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    def clean_username(self):
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
        # Since User.username is unique, this check is redundant,
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
        # but it sets a nicer error message than the ORM. See #13147.
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        username = self.cleaned_data["username"]
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
        try:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
            User.objects.get(username=username)
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
        except User.DoesNotExist:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
            return username
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        raise ValidationError(self.error_messages['duplicate_username'])    
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
class UserChangeForm(AuthUserChangeForm):
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    language = ChoiceField(label=_("language"), choices=[(k,_(v)) for k,v in settings.LANGUAGES], initial=settings.LANGUAGE_CODE[:2])
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    class Meta:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
        model = User