from django.contrib import admin from django import forms from django.contrib import admin from django.contrib.auth.models import Group from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import ReadOnlyPasswordHashField from .models import Profile class ProfileCreationForm(forms.ModelForm): password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput) password2 = forms.CharField(label='Подтверждение', widget=forms.PasswordInput) class Meta: model = Profile fields = ('phone', '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(ProfileCreationForm, self).save(commit=False) user.set_password(self.cleaned_data["password1"]) if commit: user.save() return user class ProfileChangeForm(forms.ModelForm): password = ReadOnlyPasswordHashField() class Meta: model = Profile fields = ('phone', 'email', 'password', 'is_active', 'is_superuser') def clean_password(self): return self.initial["password"] class ProfileAdmin(UserAdmin): form = ProfileChangeForm add_form = ProfileCreationForm list_display = ('phone', 'first_name', 'last_name', 'email', 'is_superuser', 'date_joined') list_filter = ('is_superuser',) fieldsets = ( (None, {'fields': ( 'phone', 'email', 'password', 'first_name', 'last_name' )}), ('Инфо', {'fields': ('date_joined',)}), ('Доступ', {'fields': ('is_superuser', 'is_active')}), ) add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('phone', 'email', 'first_name', 'last_name', 'password1', 'password2', 'temp_password')} ), ) search_fields = ('phone', 'email',) ordering = ('phone', 'email',) filter_horizontal = () admin.site.register(Profile, ProfileAdmin) admin.site.unregister(Group)