Jarvis/jarvis/objective/admin.py

296 lines
6.9 KiB
Python
Raw Normal View History

2023-04-25 17:06:14 +02:00
from django.contrib import admin
# from django_extensions.admin import ForeignKeyAutocompleteAdmin
from django_admin_listfilter_dropdown.filters import (
DropdownFilter,
RelatedDropdownFilter,
)
from .models import (
Skill,
Routine,
2024-03-21 17:30:24 +01:00
Educative,
2023-04-25 17:06:14 +02:00
RoutineSkill,
2024-03-21 17:30:24 +01:00
TouchPosition,
TrainingRound,
GymnastTraining,
2023-04-25 17:06:14 +02:00
PrerequisiteClosure,
2024-03-21 17:30:24 +01:00
GymnastTrainingRound,
2023-04-25 17:06:14 +02:00
)
2024-03-21 17:30:24 +01:00
# @admin.register(Educative)
# class EducativeAdmin(admin.ModelAdmin):
# model = Educative
# list_display = ("long_label", "short_label", "difficulty", "level", "rank")
@admin.register(TouchPosition)
2023-04-25 17:06:14 +02:00
class TouchPositionAdmin(admin.ModelAdmin):
model = TouchPosition
list_display = ("long_label", "short_label", "allowed_in_competition", "is_default")
ordering = ("long_label", "short_label")
search_fields = ("long_label", "short_label")
list_filter = ("allowed_in_competition",)
def duplicate_skill(modeladmin, request, queryset): # pylint: disable=unused-argument
for obj in queryset:
obj.id = None
obj.save()
@admin.register(Skill)
2023-04-25 17:06:14 +02:00
class SkillAdmin(admin.ModelAdmin):
model = Skill
fields = (
"long_label",
"short_label",
"informations",
"departure",
"landing",
"rotation_type",
"position",
"rotation",
"twist",
"difficulty",
"level",
"rank",
"notation",
"simplified_notation",
"is_competitive",
"age_boy_with_help",
"age_boy_without_help",
"age_boy_chained",
"age_boy_masterised",
"age_girl_with_help",
"age_girl_without_help",
"age_girl_chained",
"age_girl_masterised",
"prerequisites",
"educatives",
)
list_display = (
"long_label",
"difficulty",
"is_competitive",
"level",
"rank",
"notation",
)
ordering = ("long_label", "short_label")
search_fields = ("rank", "long_label", "short_label", "notation")
list_filter = (
"is_competitive",
("difficulty", DropdownFilter),
("departure", RelatedDropdownFilter),
("landing", RelatedDropdownFilter),
("level", DropdownFilter),
("rank", DropdownFilter),
"rotation_type",
("position", DropdownFilter),
("rotation", DropdownFilter),
("twist", DropdownFilter),
)
filter_horizontal = ("educatives", "prerequisites")
duplicate_skill.short_description = "Duplicate selected record"
class Media:
js = (
"js/core/jquery-3.6.0.min.js",
"js/admin/skill.js",
)
@admin.register(Routine)
2023-04-25 17:06:14 +02:00
class RoutineAdmin(admin.ModelAdmin):
model = Routine
fields = (
"long_label",
"short_label",
"difficulty",
"level",
"rank",
"educatives",
"prerequisites",
"age_boy_with_help",
"age_boy_without_help",
"age_boy_chained",
"age_boy_masterised",
"age_girl_with_help",
"age_girl_without_help",
"age_girl_chained",
"age_girl_masterised",
"is_active",
2023-05-01 17:07:50 +02:00
"is_routine",
2023-04-25 17:06:14 +02:00
"is_competitive",
)
list_display = (
"long_label",
"short_label",
"is_competitive",
2023-05-01 17:07:50 +02:00
"is_routine",
2023-04-25 17:06:14 +02:00
"is_active",
"level",
"rank",
"difficulty",
)
list_filter = (
("level", DropdownFilter),
2023-05-01 17:07:50 +02:00
("difficulty", DropdownFilter),
2023-04-25 17:06:14 +02:00
"is_competitive",
2023-05-01 17:07:50 +02:00
"is_routine",
2023-04-25 17:06:14 +02:00
"is_active",
)
search_fields = (
"long_label",
"short_label",
)
filter_horizontal = ("educatives",)
class Media:
js = (
"js/core/jquery-3.6.0.min.js",
"js/admin/routine.js",
)
# TODO: ne proposer QUE les SKILL comme educatif
# def get_related_filter(self, model, request):
# # print('boum')
# if not issubclass(model, Educative):
# return super(Skill, self).get_related_filter(model, request)
@admin.register(RoutineSkill)
2023-04-25 17:06:14 +02:00
class RoutineSkillAdmin(admin.ModelAdmin):
model = RoutineSkill
list_display = ("routine", "skill", "rank")
list_filter = (("rank", DropdownFilter),)
search_fields = (
"routine__long_label",
"routine__short_label",
"skill__long_label",
"skill__short_label",
)
ordering = ("routine",)
autocomplete_fields = ("routine", "skill")
@admin.register(PrerequisiteClosure)
2023-04-25 17:06:14 +02:00
class PrerequisiteClosureAdmin(admin.ModelAdmin):
2024-02-25 10:28:58 +01:00
model = PrerequisiteClosure
2023-04-25 17:06:14 +02:00
list_display = ("descendant", "ancestor", "level", "path")
search_fields = (
"descendant__long_label",
"descendant__short_label",
"ancestor__long_label",
"ancestor__short_label",
)
list_filter = (
("level", DropdownFilter),
("path", DropdownFilter),
)
2024-03-21 17:30:24 +01:00
@admin.register(TrainingRound)
class TrainingRoundAdmin(admin.ModelAdmin):
model = TrainingRound
fields = (
"label",
"educatives",
"regexp",
"number_of_skill",
"difficulty",
"informations",
)
list_display = ("label", "regexp", "number_of_skill", "difficulty")
list_filter = (
("number_of_skill", DropdownFilter),
("difficulty", DropdownFilter),
)
filter_horizontal = ("educatives",)
# def save_model(self, request, obj, form, change):
# if obj.educatives:
# form.cleaned_data["educatives"] = obj.educatives.all().values_list(
# "id", flat=True
# )
# super(TrainingRoundAdmin, self).save_model(request, obj, form, change)
class Media:
js = (
"js/core/jquery-3.6.0.min.js",
"js/admin/passe.js",
)
@admin.register(GymnastTraining)
class GymnastTrainingAdmin(admin.ModelAdmin):
model = GymnastTraining
fields = (
"label",
"date",
"gymnast",
# "trainingrounds",
"difficulty",
"number_of_skill",
"score",
)
list_display = (
"label",
"date",
"gymnast",
# "trainingrounds",
"difficulty",
"number_of_skill",
"score",
)
list_filter = (
("gymnast", RelatedDropdownFilter),
("trainingrounds", RelatedDropdownFilter),
)
@admin.register(GymnastTrainingRound)
class GymnastTrainingRoundAdmin(admin.ModelAdmin):
model = TrainingRound
fields = (
"gymnast_training",
"training_round",
"repetition",
"rank",
"number_of_skill",
"score",
"difficulty",
)
list_display = (
"gymnast_training",
"training_round",
"repetition",
"rank",
"number_of_skill",
"score",
"difficulty",
)
list_filter = (
("gymnast_training", RelatedDropdownFilter),
("training_round", RelatedDropdownFilter),
)