Source code for django_facebook.forms

"""
Forms and validation code for user registration.

"""

from django import forms
from django.utils.translation import ugettext_lazy as _

from django_facebook.utils import get_user_model

attrs_dict = {'class': 'required'}


[docs]class FacebookRegistrationFormUniqueEmail(forms.Form): """ Some basic validation, adapted from django registration """ username = forms.RegexField(regex=r'^\w+$', max_length=30, widget=forms.TextInput(attrs=attrs_dict), label=_("Username"), error_messages={'invalid': _("This value must contain only letters, numbers and underscores.")}) email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict, maxlength=75)), label=_("Email address")) password1 = forms.CharField( widget=forms.PasswordInput(attrs=attrs_dict, render_value=False), label=_("Password")) password2 = forms.CharField( widget=forms.PasswordInput(attrs=attrs_dict, render_value=False), label=_("Password (again)"))
[docs] def clean_username(self): """ Validate that the username is alphanumeric and is not already in use. """ try: get_user_model().objects.get( username__iexact=self.cleaned_data['username']) except get_user_model().DoesNotExist: return self.cleaned_data['username'] raise forms.ValidationError( _("A user with that username already exists."))
[docs] def clean(self): """ Verifiy that the values entered into the two password fields match. Note that an error here will end up in ``non_field_errors()`` because it doesn't apply to a single field. """ if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data: if self.cleaned_data['password1'] != self.cleaned_data['password2']: raise forms.ValidationError( _("The two password fields didn't match.")) return self.cleaned_data
[docs] def clean_email(self): """ Validate that the supplied email address is unique for the site. """ if get_user_model().objects.filter(email__iexact=self.cleaned_data['email']): raise forms.ValidationError(_( "This email address is already in use. Please supply a different email address.")) return self.cleaned_data['email']