summaryrefslogblamecommitdiffstats
path: root/myuser/admin.py
blob: 46dc494f0022c61cf1cee7771fde734053d1bfb6 (plain) (tree)



































































































                                                                                          
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)