from django.contrib import admin # from django_extensions.admin import ForeignKeyAutocompleteAdmin from django_admin_listfilter_dropdown.filters import ( DropdownFilter, ChoiceDropdownFilter, RelatedDropdownFilter, ) from .models import ( TouchPosition, Skill, Routine, RoutineSkill, PrerequisiteClosure, ) 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() 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", ) 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", "is_routine", "is_competitive", ) list_display = ( "long_label", "short_label", "is_competitive", "is_routine", "is_active", "level", "rank", "difficulty", ) list_filter = ( ("level", DropdownFilter), ("difficulty", DropdownFilter), "is_competitive", "is_routine", "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) 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") class PrerequisiteClosureAdmin(admin.ModelAdmin): model = PrerequisiteClosure() 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), ) admin.site.register(TouchPosition, TouchPositionAdmin) admin.site.register(Skill, SkillAdmin) admin.site.register(Routine, RoutineAdmin) admin.site.register(RoutineSkill, RoutineSkillAdmin) admin.site.register(PrerequisiteClosure, PrerequisiteClosureAdmin)