summaryrefslogtreecommitdiffstats
path: root/myuser/admin.py
diff options
context:
space:
mode:
authorMatthew Lemon <y@yulqen.org>2024-04-23 11:16:38 +0100
committerMatthew Lemon <y@yulqen.org>2024-04-23 11:16:38 +0100
commit0f951dcf029d4af284467543a3afdf5bf6581a20 (patch)
treea48384210cdc168e3bd3ccff6d6d516eeed9e748 /myuser/admin.py
parent8b084e9fe7a5f3a04c32daf9a24f7f2cf67300f9 (diff)
switched to Django
Diffstat (limited to '')
-rw-r--r--myuser/admin.py100
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)