from django.contrib import admin from .models import ( EventStatus, ActivityType, Event, EventOrganizer, EventDetail, EventParticipant, MethodicalFile, RelevantMethodicalFile ) @admin.register(EventStatus) class EventStatusAdmin(admin.ModelAdmin): list_display = ('name',) search_fields = ('name',) @admin.register(ActivityType) class ActivityTypeAdmin(admin.ModelAdmin): list_display = ('name',) search_fields = ('name',) class EventOrganizerInline(admin.TabularInline): model = EventOrganizer extra = 1 autocomplete_fields = ('employee',) class EventDetailInline(admin.TabularInline): model = EventDetail extra = 1 autocomplete_fields = ('activity_type',) class EventParticipantInline(admin.TabularInline): model = EventParticipant extra = 1 autocomplete_fields = ('student',) @admin.register(Event) class EventAdmin(admin.ModelAdmin): list_display = ('name', 'date', 'location', 'status', 'academic_year') list_filter = ('status', 'academic_year', 'date') search_fields = ('name', 'location') inlines = [EventOrganizerInline, EventDetailInline, EventParticipantInline] autocomplete_fields = ('academic_year', 'status') fieldsets = ( ('Основная информация', { 'fields': ('name', 'academic_year', 'status', 'date', 'location') }), ('Дополнительно', { 'fields': ('description',) }), ) @admin.register(EventOrganizer) class EventOrganizerAdmin(admin.ModelAdmin): list_display = ('event', 'employee') list_filter = ('event__academic_year',) search_fields = ('employee__account__first_name', 'employee__account__last_name', 'event__name') autocomplete_fields = ('employee', 'event') @admin.register(EventDetail) class EventDetailAdmin(admin.ModelAdmin): list_display = ('event', 'activity_type') list_filter = ('activity_type',) search_fields = ('event__name', 'activity_type__name') autocomplete_fields = ('event', 'activity_type') @admin.register(EventParticipant) class EventParticipantAdmin(admin.ModelAdmin): list_display = ('student_full_name', 'event', 'points') list_filter = ('event__academic_year', 'event') search_fields = ( 'student__account__first_name', 'student__account__last_name', 'event__name' ) autocomplete_fields = ('student', 'event') @admin.display(description='ФИО студента') def student_full_name(self, obj): return str(obj.student) class RelevantMethodicalFileInline(admin.TabularInline): model = RelevantMethodicalFile extra = 1 autocomplete_fields = ('activity_type',) @admin.register(MethodicalFile) class MethodicalFileAdmin(admin.ModelAdmin): list_display = ('name', 'specialty', 'upload_date', 'employee') list_filter = ('specialty', 'upload_date') search_fields = ('name', 'specialty__name', 'employee__account__first_name', 'employee__account__last_name') autocomplete_fields = ('specialty', 'employee') fieldsets = ( ('Основная информация', { 'fields': ('name', 'specialty', 'file_path') }), ('Дополнительно', { 'fields': ('employee',) }), ) inlines = [RelevantMethodicalFileInline] @admin.register(RelevantMethodicalFile) class RelevantMethodicalFileAdmin(admin.ModelAdmin): list_display = ('methodical_file', 'activity_type') list_filter = ('activity_type',) search_fields = ('methodical_file__name', 'activity_type__name') autocomplete_fields = ('methodical_file', 'activity_type')