117 lines
3.6 KiB
Python
117 lines
3.6 KiB
Python
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') |