Coverage for website/admin.py: 66%

47 statements  

« 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 

3 

4from website.forms import UserChangeForm, UserCreationForm 

5 

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 

13 

14# Register your models here. 

15 

16 

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") 

58 

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" 

70 

71 get_profile_type.short_description = "Profile Type" 

72 

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 

84 

85 get_profile_name.short_description = "Profile Name" 

86 

87 

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)