Coverage for modules\authentication\admin.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-05 09:19 +0800

1from django.contrib import admin 

2from django.contrib.auth.admin import UserAdmin as BaseUserAdmin 

3from .models import User, Organization, Membership 

4 

5@admin.register(User) 

6class UserAdmin(BaseUserAdmin): 

7 list_display = ('email', 'first_name', 'last_name', 'current_organization', 'is_staff', 'is_active') 

8 list_filter = ('is_staff', 'is_superuser', 'is_active') 

9 search_fields = ('email', 'first_name', 'last_name') 

10 ordering = ('email',) 

11 fieldsets = ( 

12 (None, {'fields': ('email', 'password')}), 

13 ('Personal Info', {'fields': ('first_name', 'last_name', 'phone_number', 'avatar_url', 'current_organization')}), 

14 ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), 

15 ('Important dates', {'fields': ('last_login',)}), 

16 ) 

17 add_fieldsets = ( 

18 (None, { 

19 'classes': ('wide',), 

20 'fields': ('email', 'password', 'first_name', 'last_name', 'is_staff', 'is_active')} 

21 ), 

22 ) 

23 

24@admin.register(Organization) 

25class OrganizationAdmin(admin.ModelAdmin): 

26 list_display = ('name', 'slug', 'currency', 'is_active', 'created_at') 

27 search_fields = ('name', 'slug') 

28 list_filter = ('is_active', 'currency') 

29 

30@admin.register(Membership) 

31class MembershipAdmin(admin.ModelAdmin): 

32 list_display = ('user', 'organization', 'role', 'is_default', 'created_at') 

33 list_filter = ('role', 'is_default', 'organization') 

34 search_fields = ('user__email', 'organization__name')