# -*- coding: utf-8 -*- from django import forms from django.contrib.auth.forms import ReadOnlyPasswordHashField from models import User, TranslatorProfile from country.models import Country from city.models import City from company.models import Company from organiser.models import Organiser class UserCreationForm(forms.ModelForm): password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput(render_value=False)) password2 = forms.CharField(label='Повторите пароль', widget=forms.PasswordInput(render_value=False)) class Meta: model = User fields = ('email', 'first_name', 'last_name') def clean_email(self): """ checking if user already exist """ email = self.cleaned_data.get('email') try: User.objects.get(email=email) except User.DoesNotExist: return email raise forms.ValidationError('Пользователь с таким email уже существует') def clean_password2(self): password1 = self.cleaned_data.get('password1') password2 = self.cleaned_data.get('password2') if password1 and password2 and password1 != password2: raise forms.ValidationError('Пароли не совпадают') return password2 def save(self, commit=True): user = super(UserCreationForm, self).save(commit=False) user.set_password(self.cleaned_data['password2']) if commit: user.save() return user class UserChangeForm(forms.ModelForm): password = ReadOnlyPasswordHashField() class Meta: model = User def clean_password(self): return self.initial['password'] class UserForm(forms.ModelForm): country = forms.ModelChoiceField(label='Страна', queryset=Country.objects.all(), empty_label=None, required=False) city = forms.ModelChoiceField(label='Город', queryset=City.objects.all(), empty_label=None, required=False) company = forms.ModelChoiceField(label='Компания', queryset=Company.objects.all(), empty_label=None, required=False) organiser = forms.ModelChoiceField(label='Организатор', queryset=Organiser.objects.all(), empty_label=None, required=False) title = forms.CharField(widget=forms.TextInput(attrs={'style':'width: 550px'}), required=False) descriptions = forms.CharField(widget=forms.TextInput(attrs={'style':'width: 550px'}), required=False) keywords = forms.CharField(widget=forms.TextInput(attrs={'style':'width: 550px'}), required=False) class Meta: model = User exclude = ('last_login', 'password', 'is_active', 'is_admin', 'is_superuser', 'is_staff' 'date_joined', 'date_registered', 'date_modified') def clean_phone(self): """ phone code checking """ cleaned_data = super(UserForm, self).clean() phone = cleaned_data.get('phone') if not phone: return deduct = ('-','(',')','.',' ') for elem in deduct: phone = phone.replace(elem, '') if phone.isdigit(): return phone else: raise forms.ValidationError('Введите правильный код страны') def clean_web_page(self): cleaned_data = super(UserForm, self).clean() web_page = cleaned_data.get('web_page') import socket try: socket.getaddrinfo(web_page, 80) return web_page except: return forms.ValidationError('Введите правильный адрес страници') class TranslatorForm(forms.ModelForm): class Meta: model = TranslatorProfile exclude = ('user')