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