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
« 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
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 )
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')
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')