from django.contrib.admin import ModelAdmin, TabularInline, register from apps.orgs.models import Organization, OrganizationInvitation, OrganizationMembership, Role, RoleMembership, TrainingFile class OrganizationMembershipInline(TabularInline): model = OrganizationMembership extra = 0 raw_id_fields = ('user',) class RoleInline(TabularInline): model = Role extra = 0 class RoleMembershipInline(TabularInline): model = RoleMembership extra = 0 raw_id_fields = ('user',) @register(Organization) class OrganizationAdmin(ModelAdmin): list_display = ('id', 'uuid', 'name', 'owner', 'created_at', 'updated_at') search_fields = ('name', 'owner__email_address') list_filter = ('created_at',) inlines = (OrganizationMembershipInline, RoleInline) raw_id_fields = ('owner',) readonly_fields = ('uuid', 'created_at', 'updated_at') @register(OrganizationMembership) class OrganizationMembershipAdmin(ModelAdmin): list_display = ('id', 'user', 'organization') search_fields = ('user__email_address', 'organization__name') list_filter = ('created_at',) raw_id_fields = ('user', 'organization') @register(OrganizationInvitation) class OrganizationInvitationAdmin(ModelAdmin): list_display = ('id', 'token', 'organization', 'created_by', 'is_active', 'expires_at', 'max_uses', 'created_at', 'uses') search_fields = ('token', 'organization__name', 'created_by__email_address') list_filter = ('is_active',) raw_id_fields = ('organization', 'created_by') readonly_fields = ('token', 'created_at') @register(Role) class RoleAdmin(ModelAdmin): list_display = ('id', 'name', 'organization', 'uuid') search_fields = ('name', 'organization__name') raw_id_fields = ('organization',) inlines = (RoleMembershipInline,) readonly_fields = ('uuid',) @register(RoleMembership) class RoleMembershipAdmin(ModelAdmin): list_display = ('id', 'user', 'role') raw_id_fields = ('user', 'role') @register(TrainingFile) class TrainingFileAdmin(ModelAdmin): list_display = ('id', 'uuid', 'file_name', 'organization', 'uploaded_by', 'is_processed', 'created_at') search_fields = ('file_name', 'organization__name', 'uploaded_by__email_address') list_filter = ('is_processed', 'created_at') raw_id_fields = ('organization', 'uploaded_by') readonly_fields = ('uuid', 'created_at', 'updated_at')