Initial commit: WrestleDesk full project
- Django backend with DRF (clubs, wrestlers, trainers, exercises, templates, trainings, homework, locations, leistungstest) - Next.js 16 frontend with React, Shadcn UI, Tailwind - JWT authentication - Full CRUD for all entities - Calendar view for trainings - Homework management system - Leistungstest tracking
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import unfold
|
||||
from unfold.admin import ModelAdmin as UnfoldModelAdmin
|
||||
from django.contrib import admin
|
||||
from .models import Homework, HomeworkExerciseItem, HomeworkAssignment, HomeworkAssignmentItem, HomeworkStatus, TrainingHomework, TrainingHomeworkExercise, TrainingHomeworkAssignment
|
||||
|
||||
|
||||
class HomeworkExerciseItemInline(admin.TabularInline):
|
||||
model = HomeworkExerciseItem
|
||||
extra = 1
|
||||
raw_id_fields = ['exercise']
|
||||
|
||||
|
||||
@admin.register(Homework)
|
||||
class HomeworkAdmin(UnfoldModelAdmin):
|
||||
list_display = ['title', 'club', 'due_date', 'is_active', 'exercise_count']
|
||||
list_filter = ['is_active', 'club']
|
||||
search_fields = ['title', 'description']
|
||||
readonly_fields = ['created_at', 'updated_at']
|
||||
raw_id_fields = ['club']
|
||||
inlines = [HomeworkExerciseItemInline]
|
||||
|
||||
def exercise_count(self, obj):
|
||||
return obj.exercise_items.count()
|
||||
exercise_count.short_description = 'Exercises'
|
||||
|
||||
|
||||
class HomeworkAssignmentItemInline(admin.TabularInline):
|
||||
model = HomeworkAssignmentItem
|
||||
extra = 0
|
||||
raw_id_fields = ['exercise']
|
||||
readonly_fields = ['completion_date']
|
||||
|
||||
|
||||
@admin.register(HomeworkAssignment)
|
||||
class HomeworkAssignmentAdmin(UnfoldModelAdmin):
|
||||
list_display = ['wrestler', 'homework', 'club', 'due_date', 'is_completed_display']
|
||||
list_filter = ['club']
|
||||
search_fields = ['wrestler__first_name', 'wrestler__last_name', 'homework__title']
|
||||
readonly_fields = ['created_at', 'updated_at']
|
||||
raw_id_fields = ['homework', 'wrestler', 'club']
|
||||
inlines = [HomeworkAssignmentItemInline]
|
||||
|
||||
def is_completed_display(self, obj):
|
||||
return obj.is_completed
|
||||
is_completed_display.short_description = 'Completed'
|
||||
is_completed_display.boolean = True
|
||||
|
||||
|
||||
@admin.register(HomeworkExerciseItem)
|
||||
class HomeworkExerciseItemAdmin(UnfoldModelAdmin):
|
||||
list_display = ['homework', 'exercise', 'reps', 'time_minutes', 'order']
|
||||
list_filter = ['homework']
|
||||
raw_id_fields = ['homework', 'exercise']
|
||||
|
||||
|
||||
@admin.register(HomeworkStatus)
|
||||
class HomeworkStatusAdmin(UnfoldModelAdmin):
|
||||
list_display = ['homework', 'wrestler', 'is_completed', 'completion_date']
|
||||
list_filter = ['is_completed']
|
||||
raw_id_fields = ['homework', 'wrestler']
|
||||
|
||||
|
||||
@admin.register(TrainingHomework)
|
||||
class TrainingHomeworkAdmin(UnfoldModelAdmin):
|
||||
list_display = ['id', 'training', 'created_at']
|
||||
list_select_related = ['training']
|
||||
|
||||
|
||||
@admin.register(TrainingHomeworkAssignment)
|
||||
class TrainingHomeworkAssignmentAdmin(UnfoldModelAdmin):
|
||||
list_display = ['id', 'wrestler', 'training', 'is_completed', 'created_at']
|
||||
list_filter = ['is_completed', 'created_at']
|
||||
list_select_related = ['wrestler', 'training']
|
||||
Reference in New Issue
Block a user