From 40756998ea79f97f548f4e1a8c05fe8b9ab5bb10 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 17 Nov 2021 12:59:01 +0100 Subject: [PATCH] add conf duplicate fonction --- teleforma/admin.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/teleforma/admin.py b/teleforma/admin.py index f76b8b9e..2deaca3a 100644 --- a/teleforma/admin.py +++ b/teleforma/admin.py @@ -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): -- 2.39.5