Source code for django_program.programs.admin

"""Django admin configuration for the programs app."""

from django.contrib import admin

from django_program.programs.models import (
    Activity,
    ActivitySignup,
    PaymentInfo,
    Receipt,
    TravelGrant,
    TravelGrantMessage,
)


[docs] class ActivitySignupInline(admin.TabularInline): """Inline editor for activity signups within the activity admin.""" model = ActivitySignup extra = 0 fields = ("user", "status", "note", "cancelled_at", "created_at") readonly_fields = ("cancelled_at", "created_at")
[docs] @admin.register(Activity) class ActivityAdmin(admin.ModelAdmin): """Admin interface for managing activities.""" list_display = ( "name", "conference", "activity_type", "start_time", "max_participants", "is_active", "pretalx_submission_type", ) list_filter = ("conference", "activity_type", "is_active") search_fields = ("name", "slug", "pretalx_submission_type") prepopulated_fields = {"slug": ("name",)} inlines = (ActivitySignupInline,)
[docs] @admin.register(ActivitySignup) class ActivitySignupAdmin(admin.ModelAdmin): """Admin interface for managing activity signups.""" list_display = ("user", "activity", "status", "cancelled_at", "created_at") list_filter = ("status", "activity__conference") search_fields = ("user__username", "user__email", "activity__name") readonly_fields = ("cancelled_at", "created_at")
[docs] class TravelGrantMessageInline(admin.TabularInline): """Inline editor for grant messages within the grant admin.""" model = TravelGrantMessage extra = 0 fields = ("user", "visible", "message", "created_at") readonly_fields = ("created_at",)
[docs] class ReceiptInline(admin.TabularInline): """Inline editor for receipts within the travel grant admin.""" model = Receipt extra = 0 fields = ("receipt_type", "amount", "date", "approved", "flagged", "created_at") readonly_fields = ("created_at",)
[docs] @admin.register(TravelGrant) class TravelGrantAdmin(admin.ModelAdmin): """Admin interface for managing travel grant applications.""" list_display = ( "user", "conference", "status", "application_type", "request_type", "requested_amount", "approved_amount", "disbursed_amount", "travel_from", "international", ) list_filter = ("conference", "status", "application_type", "request_type", "international") search_fields = ("user__username", "user__email", "travel_from") list_editable = ("status",) readonly_fields = ("created_at", "updated_at", "disbursed_at", "disbursed_by") inlines = (TravelGrantMessageInline, ReceiptInline)
[docs] @admin.register(Receipt) class ReceiptAdmin(admin.ModelAdmin): """Admin interface for managing travel grant receipts.""" list_display = ("grant", "receipt_type", "amount", "date", "approved", "flagged", "created_at") list_filter = ("receipt_type", "approved", "flagged") search_fields = ("grant__user__username", "grant__user__email", "description") readonly_fields = ("created_at",)
[docs] @admin.register(PaymentInfo) class PaymentInfoAdmin(admin.ModelAdmin): """Admin interface for managing travel grant payment info.""" list_display = ("grant", "payment_method", "legal_name", "address_country", "created_at") list_filter = ("payment_method",) search_fields = ("grant__user__username", "grant__user__email", "legal_name") readonly_fields = ("created_at", "updated_at")