]> git.parisson.com Git - teleforma.git/commitdiff
add conf duplicate fonction
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 17 Nov 2021 11:59:01 +0000 (12:59 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 17 Nov 2021 11:59:01 +0000 (12:59 +0100)
teleforma/admin.py

index f76b8b9e3df624d7df2a1e385e854159257356ae..2deaca3a3a3508076bf921041c86bdda1bb48809 100644 (file)
@@ -129,6 +129,8 @@ class BalanceFilter(admin.SimpleListFilter):
             return queryset.filter(balance__gt=0)
         else:
             return queryset
+
+
 class TrainingsFilter(MultipleChoiceListFilter):
     title = 'Formations'
     parameter_name = 'trainings__in'
@@ -136,6 +138,7 @@ class TrainingsFilter(MultipleChoiceListFilter):
     def lookups(self, request, model_admin):
         return [(training.id, str(training)) for training in Training.objects.all()]
 
+
 class StudentAdmin(admin.ModelAdmin):
     model = Student
     list_per_page = 30
@@ -236,6 +239,7 @@ 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):
     from copy import deepcopy
@@ -365,6 +369,22 @@ def publish_conferences(modeladmin, request, queryset):
             media.save()
 
 
+@admin.action(description='Duplicate selected conferences')
+def duplicate_conferences(modeladmin, request, queryset):
+    for conference in queryset:
+        original_pid = conference.public_id
+        medias = deepcopy(conference.media.all())
+        conference.pk = None
+        conference.public_id = None
+        conference.comment += '\nCopy of ' + original_pid
+        conference.save()
+        for media in medias:
+            media.pk = None
+            media.save()
+            media.conference = conference
+            media.save()
+
+
 class ConferenceAdmin(admin.ModelAdmin):
     inlines = [MediaInline, ]
     exclude = ['readers']
@@ -372,7 +392,7 @@ class ConferenceAdmin(admin.ModelAdmin):
     list_filter = ('course', 'period', 'date_begin', 'session')
     search_fields = ['public_id', 'id',
                      'course__code', 'course__title', 'session']
-    actions = [publish_conferences, ]
+    actions = [publish_conferences, duplicate_conferences]
 
 
 class HomeAdmin(admin.ModelAdmin):