]> git.parisson.com Git - teleforma.git/commitdiff
add training duplication function
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Sun, 14 Nov 2021 18:40:17 +0000 (19:40 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Sun, 14 Nov 2021 18:40:17 +0000 (19:40 +0100)
teleforma/admin.py

index 4e3601d466b98ab806e2be2214d237706f41c086..e49b494a4a629eece4b49930c3e7b1f0591c213e 100644 (file)
@@ -235,12 +235,30 @@ class UserProfileAdmin(UserAdmin):
     user_actions.short_description = 'Actions'
     user_actions.allow_tags = True
 
+@admin.action(description='Duplicate selected trainings')
+def duplicate_trainings(modeladmin, request, queryset):
+    properties = ['synthesis_note', 'obligation', 'procedure', 'oral_speciality',
+                         'written_speciality', 'oral_1', 'oral_2', 'options', 'magistral']
+    for training in queryset:
+        t = deepcopy(training)
+        t.pk = None
+        t.save()
+        t.synthesis_note.add(*training.synthesis_note.all())
+        t.obligation.add(*training.obligation.all())
+        t.procedure.add(*training.procedure.all())
+        t.oral_speciality.add(*training.oral_speciality.all())
+        t.written_speciality.add(*training.written_speciality.all())
+        t.oral_1.add(*training.oral_1.all())
+        t.oral_2.add(*training.oral_2.all())
+        t.options.add(*training.options.all())
+        t.magistral.add(*training.magistral.all())
 
 class TrainingAdmin(admin.ModelAdmin):
     model = Training
     filter_horizontal = ['synthesis_note', 'obligation', 'procedure', 'oral_speciality',
                          'written_speciality', 'oral_1', 'oral_2', 'magistral']
     exclude = ['options']
+    actions = [duplicate_trainings,]
 
 class CourseTypeAdmin(admin.ModelAdmin):
     model = CourseType