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, Educative, RoutineSkill, TouchPosition, TrainingRound, GymnastTraining, PrerequisiteClosure, GymnastTrainingRound, ) # @admin.register(Educative) # class EducativeAdmin(admin.ModelAdmin): # model = Educative # list_display = ("long_label", "short_label", "difficulty", "level", "rank") @admin.register(TouchPosition) 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) 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) 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) @admin.register(RoutineSkill) class RoutineSkillAdmin(admin.ModelAdmin): model = RoutineSkill list_display = ("routine", "skill", "rank") list_filter = ( ("routine", RelatedDropdownFilter), ("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) 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.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), )