diff options
author | Matthew Lemon <y@yulqen.org> | 2024-04-23 11:16:38 +0100 |
---|---|---|
committer | Matthew Lemon <y@yulqen.org> | 2024-04-23 11:16:38 +0100 |
commit | 0f951dcf029d4af284467543a3afdf5bf6581a20 (patch) | |
tree | a48384210cdc168e3bd3ccff6d6d516eeed9e748 /myuser/admin.py | |
parent | 8b084e9fe7a5f3a04c32daf9a24f7f2cf67300f9 (diff) |
switched to Django
Diffstat (limited to '')
-rw-r--r-- | myuser/admin.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/myuser/admin.py b/myuser/admin.py new file mode 100644 index 0000000..46dc494 --- /dev/null +++ b/myuser/admin.py @@ -0,0 +1,100 @@ +from django import forms +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin as BaseUserAdmin +from django.contrib.auth.forms import ReadOnlyPasswordHashField +from django.contrib.auth.models import Group + +from .models import Team, TeamUser + + +class TeamUserCreationForm(forms.ModelForm): + password1 = forms.CharField(label="Password", widget=forms.PasswordInput) + password2 = forms.CharField(label="Password confirmation", widget=forms.PasswordInput) + + class Meta: + model = TeamUser + fields = ("email",) + + def clean_password2(self): + "Check that the two password entries match" + password1 = self.cleaned_data.get("password1") + password2 = self.cleaned_data.get("password2") + if password1 and password2 and password1 != password2: + raise ValueError("Passwords don't match") + return password2 + + def save(self, commit=True): + # Save the provided password in hashed format + user = super().save(commit=False) + user.set_password(self.cleaned_data["password1"]) + if commit: + user.save() + return user + + +class TeamUserChangeForm(forms.ModelForm): + """A form for updating users. Includes all the fields on + the user, but replaces the password field with admin's + disabled password hash display field. + """ + + password = ReadOnlyPasswordHashField() + + class Meta: + model = TeamUser + fields = ( + "email", + "password", + "first_name", + "last_name", + "is_active", + "is_admin", + ) + + +class TeamUserAdmin(BaseUserAdmin): + form = TeamUserChangeForm + add_form = TeamUserCreationForm + + list_display = ("email", "first_name", "last_name", "designation", "is_admin") + list_filter = ("is_admin",) + fieldsets = ( + (None, {"fields": ("email", "password")}), + ( + "Personal info", + { + "fields": ( + "first_name", + "last_name", + "designation", + "dapsy", + "team", + "lead_for", + ) + }, + ), + ("Permissions", {"fields": ("is_admin",)}), + ) + add_fieldsets = ( + ( + None, + { + "classes": ("wide",), + "fields": ( + "email", + "first_name", + "last_name", + "password1", + "password2", + ), + }, + ), + ) + search_fields = ("email",) + ordering = ("email",) + filer_horizontal = () + + +admin.site.register(TeamUser, TeamUserAdmin) +admin.site.register(Team) +admin.site.unregister(Group) |