Handle uk feedback as well
This commit is contained in:
parent
93efd7333e
commit
36c7a1a5b3
|
|
@ -1,7 +1,10 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from vbv_lernwelt.course.models import Course, CourseSession, CourseSessionUser
|
||||
from vbv_lernwelt.feedback.services import get_feedbacks_for_course_sessions, get_feedbacks_for_courses
|
||||
from vbv_lernwelt.feedback.services import (
|
||||
get_feedbacks_for_course_sessions,
|
||||
get_feedbacks_for_courses,
|
||||
)
|
||||
from vbv_lernwelt.learnpath.models import Circle
|
||||
|
||||
get_feedbacks_for_course_sessions.short_description = "Feedback export"
|
||||
|
|
|
|||
|
|
@ -32,6 +32,34 @@ VV_FEEDBACK_QUESTIONS = [
|
|||
("course_negative_feedback", "Wo siehst du Verbesserungspotential?"),
|
||||
]
|
||||
|
||||
UK_FEEDBACK_QUESTIONS = [
|
||||
("satisfaction", "Zufriedenheit insgesamt"),
|
||||
("goal_attainment", "Zielerreichung insgesamt"),
|
||||
(
|
||||
"proficiency",
|
||||
"Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?",
|
||||
),
|
||||
(
|
||||
"preparation_task_clarity",
|
||||
"Waren die Vorbereitungsaufträge klar und verständlich?",
|
||||
),
|
||||
(
|
||||
"instructor_competence",
|
||||
"Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der Kursleiterin?",
|
||||
),
|
||||
(
|
||||
"instructor_respect",
|
||||
"Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und aufgegriffen?",
|
||||
),
|
||||
(
|
||||
"instructor_open_feedback",
|
||||
"Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?",
|
||||
),
|
||||
("would_recommend", "Würdest du den Kurs weiterempfehlen?"),
|
||||
("course_positive_feedback", "Was hat dir besonders gut gefallen?"),
|
||||
("course_negative_feedback", "Wo siehst du Verbesserungspotential?"),
|
||||
]
|
||||
|
||||
|
||||
def update_feedback_response(
|
||||
feedback_user: User,
|
||||
|
|
@ -130,7 +158,7 @@ def export_feedback(course_session_ids: list[str], save_as_file: bool):
|
|||
feedbacks = FeedbackResponse.objects.filter(
|
||||
course_session_id__in=course_session_ids,
|
||||
submitted=True,
|
||||
).order_by("circle", "updated_at")
|
||||
).order_by("circle", "course_session", "updated_at")
|
||||
grouped_feedbacks = groupby(feedbacks, key=attrgetter("circle"))
|
||||
|
||||
for circle, group_feedbacks in grouped_feedbacks:
|
||||
|
|
@ -158,22 +186,35 @@ def export_feedback(course_session_ids: list[str], save_as_file: bool):
|
|||
|
||||
def _create_sheet(wb: Workbook, title: str, data: list[FeedbackResponse]):
|
||||
sheet = wb.create_sheet(title=title)
|
||||
|
||||
if len(data) == 0:
|
||||
return sheet
|
||||
|
||||
# we instruct the users not to mix exports of different courses, so we can assume the questions are the same and of the first type
|
||||
question_data = (
|
||||
UK_FEEDBACK_QUESTIONS
|
||||
if data[0].data["feedback_type"] == "uk"
|
||||
else VV_FEEDBACK_QUESTIONS
|
||||
)
|
||||
|
||||
# add header
|
||||
sheet.cell(row=1, column=1, value="Datum")
|
||||
questions = [q[1] for q in VV_FEEDBACK_QUESTIONS]
|
||||
for col_idx, title in enumerate(questions, start=2):
|
||||
sheet.cell(row=1, column=1, value="Durchführung")
|
||||
sheet.cell(row=1, column=2, value="Datum")
|
||||
questions = [q[1] for q in question_data]
|
||||
for col_idx, title in enumerate(questions, start=3):
|
||||
sheet.cell(row=1, column=col_idx, value=title)
|
||||
|
||||
_add_rows(sheet, data)
|
||||
_add_rows(sheet, data, question_data)
|
||||
return sheet
|
||||
|
||||
|
||||
def _add_rows(sheet, data):
|
||||
def _add_rows(sheet, data, question_data):
|
||||
for row_idx, feedback in enumerate(data, start=2):
|
||||
sheet.cell(row=row_idx, column=1, value=feedback.course_session.title)
|
||||
sheet.cell(
|
||||
row=row_idx, column=1, value=feedback.updated_at.date().strftime("%d.%m.%Y")
|
||||
row=row_idx, column=2, value=feedback.updated_at.date().strftime("%d.%m.%Y")
|
||||
)
|
||||
for col_idx, question in enumerate(VV_FEEDBACK_QUESTIONS, start=2):
|
||||
for col_idx, question in enumerate(question_data, start=3):
|
||||
response = feedback.data.get(question[0], "")
|
||||
sheet.cell(row=row_idx, column=col_idx, value=response)
|
||||
|
||||
|
|
@ -201,7 +242,9 @@ def _handle_feedback_export_action(course_seesions, file_name):
|
|||
response = HttpResponse(
|
||||
content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
)
|
||||
response["Content-Disposition"] = f"attachment; filename={make_export_filename(file_name)}"
|
||||
response[
|
||||
"Content-Disposition"
|
||||
] = f"attachment; filename={make_export_filename(file_name)}"
|
||||
response.write(excel_bytes)
|
||||
|
||||
return response
|
||||
|
|
|
|||
Loading…
Reference in New Issue