Coverage for website/admin.py: 66%
47 statements
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
1from django.contrib import admin
2from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
4from website.forms import UserChangeForm, UserCreationForm
6from .models.AuthorModel import Author
7from .models.AuthorSocialMediaModel import SocialMedia
8from .models.GraduationsModel import Graduation
9from .models.JobsModel import Job
10from .models.PostModel import Post
11from .models.ReaderModel import Reader
12from .models.UserModel import User
14# Register your models here.
17class UserAdmin(BaseUserAdmin):
18 add_form = UserCreationForm
19 form = UserChangeForm
20 model = User
21 list_display = (
22 "email",
23 "phone_number",
24 "username",
25 "is_staff",
26 "get_profile_type",
27 "get_profile_name",
28 )
29 list_filter = ("is_staff", "is_superuser", "is_active", "groups")
30 fieldsets = (
31 (None, {"fields": ("email", "password")}),
32 ("Personal info", {"fields": ("username", "phone_number")}),
33 (
34 "Permissions",
35 {
36 "fields": (
37 "is_active",
38 "is_staff",
39 "is_superuser",
40 "groups",
41 "user_permissions",
42 )
43 },
44 ),
45 ("Important Dates", {"fields": ("last_login", "date_joined")}),
46 )
47 add_fieldsets = (
48 (
49 None,
50 {
51 "classes": ("wide",),
52 "fields": ("email", "phone_number", "password1", "password2"),
53 },
54 ),
55 )
56 search_fields = ("email", "phone_number")
57 ordering = ("email", "phone_number")
59 def get_profile_type(self, obj):
60 """Display the user's profile type"""
61 try:
62 if hasattr(obj, "author"):
63 return "Author"
64 elif hasattr(obj, "reader"):
65 return "Reader"
66 else:
67 return "No Profile"
68 except Exception:
69 return "No Profile"
71 get_profile_type.short_description = "Profile Type"
73 def get_profile_name(self, obj):
74 """Display the user's profile name"""
75 try:
76 if hasattr(obj, "author") and obj.author.author_name:
77 return obj.author.author_name
78 elif hasattr(obj, "reader") and obj.reader.reader_name:
79 return obj.reader.reader_name
80 else:
81 return obj.username
82 except Exception:
83 return obj.username
85 get_profile_name.short_description = "Profile Name"
88admin.site.register(User, UserAdmin)
89admin.site.register(Author)
90admin.site.register(Post)
91admin.site.register(Graduation)
92admin.site.register(Job)
93admin.site.register(SocialMedia)
94admin.site.register(Reader)