diff --git a/server/vbv_lernwelt/dashboard/tests/test_export.py b/server/vbv_lernwelt/dashboard/tests/test_export.py index 083e7f60..ed48761e 100644 --- a/server/vbv_lernwelt/dashboard/tests/test_export.py +++ b/server/vbv_lernwelt/dashboard/tests/test_export.py @@ -132,94 +132,10 @@ class PersonsExportTestCase(ExportBaseTestCase): ) self._check_export(wb, data, 3, 6) - # def test_export_feedback_with_cs_circle_pairs(self): - # cs_circle_pairs = [ - # ( - # self.course_session_be.id, - # [self.circle_fahrzeug.id, self.circle_reisen.id], - # ), - # ( - # self.course_session_zh.id, - # [self.circle_reisen.id, self.circle_fahrzeug.id], - # ), - # ] - # export_data = io.BytesIO( - # export_feedback_with_circle_restriction(cs_circle_pairs, save_as_file=False) - # ) - # wb = load_workbook(export_data) - # self.assertEqual(len(wb.sheetnames), 2) - # self.assertEqual(wb.sheetnames[0], "Fahrzeug") - # self.assertEqual(wb.sheetnames[1], "Reisen") - # - # self._check_export(wb, self.expected_data_fahrzeug, 3, 12) - # - # wb.active = wb["Reisen"] - # self._check_export(wb, self.expected_data_reisen, 2, 12) + def test_cannot_export_other_session(self): + wb = self._generate_workbook(self.test_trainer1, [self.course_session_zh.id]) + self.assertEqual(len(wb.sheetnames), 1) + self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a") + wb.active = wb["Test Zürich 2022 a"] - # def test_does_not_include_unsubmitted_feedback(self): - # feedback = FeedbackResponse.objects.get( - # circle=self.circle_reisen, - # course_session=self.course_session_zh, - # feedback_user=self.test_student2, - # ) - # - # feedback.submitted = False - # feedback.save() - # - # wb = self._generate_workbook( - # [self.course_session_be.id, self.course_session_zh.id] - # ) - # self.assertEqual(len(wb.sheetnames), 1) - # self.assertEqual(wb.sheetnames[0], "Fahrzeug") - # - # self._check_export(wb, self.expected_data_fahrzeug, 3, 12) - # - # def test_french_export(self): - # activate("fr") - # wb = self._generate_workbook( - # [self.course_session_be.id, self.course_session_zh.id] - # ) - # - # header = [ - # "Opérations", - # "Date", - # "Degré de satisfaction au global", - # "Degré de réalisation des objectifs", - # "As-tu l’impression de bien maîtriser les sujets qui ont été abordés pendant le cours ?", - # "Les travaux préparatoires étaient-ils clairs et compréhensibles ?", - # "Que penses-tu des compétences techniques de la personne chargée du cours et de sa maîtrise du sujet ?", - # "Les questions et les suggestions des participants ont-elles été prises au sérieux et traitées correctement ?", - # "Souhaites-tu ajouter quelque chose à l’intention de la personne chargée du cours ?", - # "Est-ce que tu recommandes ce cours ?", - # "Qu’est-ce qui t’a particulièrement plu ?", - # "À ton avis, quels sont les points qui pourraient être améliorés ?", - # ] - # - # self.expected_data_fahrzeug[0] = header - # - # self._check_export(wb, self.expected_data_fahrzeug, 3, 12) - # - # def test_italian_export(self): - # activate("it") - # wb = self._generate_workbook( - # [self.course_session_be.id, self.course_session_zh.id] - # ) - # - # header = [ - # "Svolgimenti", - # "Data", - # "Soddisfazione complessiva", - # "Raggiungimento complessivo degli obiettivi", - # "Come valuti il tuo livello di preparazione sui temi dopo il corso?", - # "Gli incarichi di preparazione erano chiari e comprensibili?", - # "Come valuti il livello di preparazione sui temi e le competenze specialistiche dell’istruttore/istruttrice del corso?", - # "Le domande e i suggerimenti dei/delle partecipanti al corso sono stati accolti e presi sul serio?", - # "Cos’altro vorresti ancora dire all’istruttore/istruttrice del corso?", - # "Raccomanderesti il corso?", - # "Cos’hai apprezzato particolarmente?", - # "Dove vedi un potenziale di miglioramento?", - # ] - # - # self.expected_data_fahrzeug[0] = header - # - # self._check_export(wb, self.expected_data_fahrzeug, 3, 12) + self._check_export(wb, [[None] * 6], 1, 6) diff --git a/server/vbv_lernwelt/dashboard/views.py b/server/vbv_lernwelt/dashboard/views.py index 8616a2bf..290397fd 100644 --- a/server/vbv_lernwelt/dashboard/views.py +++ b/server/vbv_lernwelt/dashboard/views.py @@ -31,7 +31,7 @@ from vbv_lernwelt.course_session.services.export_attendance import ( export_attendance, make_export_filename, ) -from vbv_lernwelt.dashboard.person_export import export_persons +from vbv_lernwelt.dashboard.person_export import export_persons, PERSONS_EXPORT_FILENAME from vbv_lernwelt.dashboard.utils import ( CourseSessionWithRoles, create_course_session_dict, @@ -41,6 +41,10 @@ from vbv_lernwelt.dashboard.utils import ( ) from vbv_lernwelt.duedate.models import DueDate from vbv_lernwelt.duedate.serializers import DueDateSerializer +from vbv_lernwelt.feedback.export import ( + export_feedback_with_circle_restriction, + FEEDBACK_EXPORT_FILE_NAME, +) from vbv_lernwelt.learnpath.models import Circle from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback @@ -396,6 +400,24 @@ def export_competence_elements_as_xsl(request): @api_view(["POST"]) def export_feedback_as_xsl(request): + circle_ids = request.data.get("circleIds", None) + requested_course_session_ids = request.data.get("courseSessionIds", []) + course_sessions_with_roles = _get_permitted_courses_sessions_for_user( + request.user, requested_course_session_ids + ) # noqa + + allowed_circles = _get_permitted_circles_ids_for_user_and_course_session( + request.user, + course_sessions_with_roles, + circle_ids, + ) # noqa + + data = export_feedback_with_circle_restriction(allowed_circles, False) + return _make_excel_response(data, FEEDBACK_EXPORT_FILE_NAME) + + +@api_view(["POST"]) +def export_persons_as_xsl(request): requested_course_session_ids = request.data.get("courseSessionIds", []) course_sessions_with_roles = _get_permitted_courses_sessions_for_user( request.user, requested_course_session_ids @@ -404,7 +426,7 @@ def export_feedback_as_xsl(request): data = export_persons( [cswr.id for cswr in course_sessions_with_roles], ) - return _make_excel_response(data, COMPETENCE_ELEMENT_EXPORT_FILE_NAME) + return _make_excel_response(data, PERSONS_EXPORT_FILENAME) def _get_permitted_courses_sessions_for_user(