from django.contrib import admin from .models import ( Tenant, TenantUserRole, InteractionType, DonationMethod, ElectionType, Voter, VotingRecord, Event, EventParticipation, Donation, Interaction, VoterLikelihood ) class TenantUserRoleInline(admin.TabularInline): model = TenantUserRole extra = 1 @admin.register(Tenant) class TenantAdmin(admin.ModelAdmin): list_display = ('name', 'slug', 'created_at') search_fields = ('name',) inlines = [TenantUserRoleInline] @admin.register(TenantUserRole) class TenantUserRoleAdmin(admin.ModelAdmin): list_display = ('user', 'tenant', 'role') list_filter = ('tenant', 'role') search_fields = ('user__username', 'tenant__name') @admin.register(InteractionType) class InteractionTypeAdmin(admin.ModelAdmin): list_display = ('name', 'tenant') list_filter = ('tenant',) @admin.register(DonationMethod) class DonationMethodAdmin(admin.ModelAdmin): list_display = ('name', 'tenant') list_filter = ('tenant',) @admin.register(ElectionType) class ElectionTypeAdmin(admin.ModelAdmin): list_display = ('name', 'tenant') list_filter = ('tenant',) class VotingRecordInline(admin.TabularInline): model = VotingRecord extra = 1 class DonationInline(admin.TabularInline): model = Donation extra = 1 class InteractionInline(admin.TabularInline): model = Interaction extra = 1 class VoterLikelihoodInline(admin.TabularInline): model = VoterLikelihood extra = 1 @admin.register(Voter) class VoterAdmin(admin.ModelAdmin): list_display = ('first_name', 'last_name', 'voter_id', 'tenant', 'district', 'candidate_support') list_filter = ('tenant', 'candidate_support', 'yard_sign', 'district') search_fields = ('first_name', 'last_name', 'voter_id') inlines = [VotingRecordInline, DonationInline, InteractionInline, VoterLikelihoodInline] @admin.register(Event) class EventAdmin(admin.ModelAdmin): list_display = ('event_type', 'date', 'tenant') list_filter = ('tenant', 'date') @admin.register(EventParticipation) class EventParticipationAdmin(admin.ModelAdmin): list_display = ('voter', 'event') list_filter = ('event__tenant', 'event')