return queryset.filter(balance__gt=0)
else:
return queryset
+
+
class TrainingsFilter(MultipleChoiceListFilter):
title = 'Formations'
parameter_name = 'trainings__in'
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
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
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']
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):