]> git.parisson.com Git - teleforma.git/commitdiff
change training field order : https://trackers.pilotsystems.net/prebarreau/0828
authorYoan Le Clanche <yoanl@pilotsystems.net>
Mon, 10 Jun 2024 09:05:29 +0000 (11:05 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Mon, 10 Jun 2024 09:05:29 +0000 (11:05 +0200)
teleforma/admin.py

index a1579ed9ceb5861551a0614a345d651dc589b36c..d396415ec3b9f92e0296b1a0649c21e50a996063 100644 (file)
@@ -86,7 +86,18 @@ class PaybackInline(admin.StackedInline):
     extra = 1
 
 
-class StudentInline(admin.StackedInline):
+class StudentAdminMixin:
+    def formfield_for_foreignkey(self, db_field, request, **kwargs):
+        if db_field.name == "training":
+            kwargs["queryset"] = Training.objects.order_by('-period__date_begin')
+        return super().formfield_for_foreignkey(db_field, request, **kwargs)
+    
+    def formfield_for_manytomany(self, db_field, request, **kwargs):
+        if db_field.name == "trainings":
+            kwargs["queryset"] = Training.objects.order_by('-period__date_begin')
+        return super().formfield_for_manytomany(db_field, request, **kwargs)
+
+class StudentInline(StudentAdminMixin, admin.StackedInline):
     model = Student
     extra = 1
 
@@ -142,7 +153,7 @@ class TrainingsFilter(MultipleChoiceListFilter):
         return [(training.id, str(training)) for training in Training.objects.all()]
 
 
-class StudentAdmin(admin.ModelAdmin):
+class StudentAdmin(StudentAdminMixin, admin.ModelAdmin):
     model = Student
     list_per_page = 30
     exclude = ['options', 'training']