Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ljy2855 committed Mar 15, 2023
2 parents c15382f + f9ff2bf commit 3b76c7b
Showing 1 changed file with 79 additions and 1 deletion.
80 changes: 79 additions & 1 deletion user/admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,83 @@
from django.contrib import admin
from django import forms
from user.models import *
admin.site.register(Applicant)
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import ReadOnlyPasswordHashField
from django.core.exceptions import ValidationError

class UserCreationForm(forms.ModelForm):
"""A form for creating new users. Includes all the required
fields, plus a repeated password."""

password1 = forms.CharField(label="Password", widget=forms.PasswordInput)
password2 = forms.CharField(
label="Password confirmation", widget=forms.PasswordInput
)

class Meta:
model = Applicant
fields = ["student_id"]

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 ValidationError("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 UserChangeForm(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 = Applicant
fields = ["student_id", "password",
"is_active"]


class UserAdmin(BaseUserAdmin):
# The forms to add and change user instances
# form = UserChangeForm
add_form = UserCreationForm

# The fields to be used in displaying the User model.
# These override the definitions on the base UserAdmin
# that reference specific fields on auth.User.
list_display = ["student_id"]
fieldsets = [
(None, {"fields": ["student_id", "password"]}),

]
# add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
# overrides get_fieldsets to use this attribute when creating a user.
add_fieldsets = [
(
None,
{
"classes": ["wide"],
"fields": ["student_id", "password1", "password2"],
},
),
]
search_fields = ["student_id"]
ordering = ["student_id"]
filter_horizontal = []

# Now register the new UserAdmin...
admin.site.register(Applicant, UserAdmin)
admin.site.register(LabMaster)
# Register your models here.

0 comments on commit 3b76c7b

Please sign in to comment.