Add command to export assignments

This commit is contained in:
Ramon Wenger 2021-10-18 15:38:57 +02:00
parent 90a576c661
commit b4c9e01fcb
5 changed files with 43 additions and 9 deletions

View File

@ -7,6 +7,7 @@ from django.http import HttpResponse
from django.urls import reverse
from django.utils.html import format_html
from assignments.helpers import write_assignments_to_csv, write_submissions_to_csv
from assignments.models import Assignment, StudentSubmission, SubmissionFeedback
@ -38,10 +39,7 @@ class AssignmentAdmin(admin.ModelAdmin):
response['Content-Disposition'] = 'attachment;filename=assignment-export.csv'
writer = csv.writer(response)
field_names = ['ID', 'Titel', 'Auftragstext', 'Modul']
writer.writerow(field_names)
for assignment in queryset.all():
writer.writerow([assignment.id, assignment.title, assignment.assignment, assignment.module])
write_assignments_to_csv(writer, queryset)
return response
@ -52,11 +50,7 @@ class AssignmentAdmin(admin.ModelAdmin):
response['Content-Disposition'] = 'attachment;filename=assignment-submission-export.csv'
writer = csv.writer(response)
field_names = ['Assignment-ID', 'Text', 'Mit Lehrer geteilt',]
writer.writerow(field_names)
for assignment in queryset.all():
for submission in assignment.submissions.filter(final=True):
writer.writerow([submission.assignment.id, submission.text, submission.final])
write_submissions_to_csv(writer, queryset)
return response

View File

@ -0,0 +1,13 @@
def write_assignments_to_csv(writer, queryset):
field_names = ['ID', 'Titel', 'Auftragstext', 'Modul']
writer.writerow(field_names)
for assignment in queryset.all():
writer.writerow([assignment.id, assignment.title, assignment.assignment, assignment.module])
def write_submissions_to_csv(writer, queryset):
field_names = ['Assignment-ID', 'Text', 'Mit Lehrer geteilt', ]
writer.writerow(field_names)
for submission in queryset.all():
writer.writerow([submission.assignment.id, submission.text, submission.final])

View File

@ -0,0 +1,27 @@
import csv
from django.core.management.base import BaseCommand
from assignments.helpers import write_assignments_to_csv, write_submissions_to_csv
from assignments.models import Assignment, StudentSubmission
class Command(BaseCommand):
help = """
Export assignments with submissions
"""
def handle(self, *args, **options):
ids = [171, 112, 113, 114, 272, 246, 250, 348, 598]
assignments = Assignment.objects.filter(id__in=ids)
with open('./export-assignments.csv', 'w') as f:
writer = csv.writer(f)
write_assignments_to_csv(writer, assignments)
submissions = StudentSubmission.objects.filter(assignment__id__in=ids)
with open('./export-submissions.csv', 'w') as f:
writer = csv.writer(f)
write_submissions_to_csv(writer, submissions)