From 97edbbd751b182224d7e37d7b1e229219307750b Mon Sep 17 00:00:00 2001 From: Livio Bieri Date: Mon, 25 Sep 2023 17:13:27 +0200 Subject: [PATCH] wip: expose url for expert in duedate model --- server/vbv_lernwelt/course_session/models.py | 14 +++++++++++ server/vbv_lernwelt/duedate/admin.py | 1 + .../migrations/0005_auto_20230925_1648.py | 23 +++++++++++++++++++ server/vbv_lernwelt/duedate/models.py | 8 ++++++- server/vbv_lernwelt/duedate/serializers.py | 4 ++++ 5 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 server/vbv_lernwelt/duedate/migrations/0005_auto_20230925_1648.py diff --git a/server/vbv_lernwelt/course_session/models.py b/server/vbv_lernwelt/course_session/models.py index 33ac4e6b..d72199a7 100644 --- a/server/vbv_lernwelt/course_session/models.py +++ b/server/vbv_lernwelt/course_session/models.py @@ -63,7 +63,11 @@ class CourseSessionAttendanceCourse(models.Model): ) if not self.due_date.manual_override_fields: + course = self.learning_content.get_course() + self.due_date.url = self.learning_content.get_frontend_url() + # TODO: @livioso move this to the learning content? + self.due_date.url_expert = f"/course/{course.slug}/cockpit/attendance?id={self.learning_content_id}" self.due_date.title = self.learning_content.title self.due_date.page = self.learning_content.page_ptr self.due_date.assignment_type_translation_key = ( @@ -130,6 +134,12 @@ class CourseSessionAssignment(models.Model): AssignmentType.REFLECTION.value: "learningContentTypes.reflection", } + # TODO @livioso move this to the learning content? + course = self.learning_content.get_course() + url_expert = ( + f"/course/{course.slug}/cockpit/assignment/{self.learning_content_id}" + ) + if assignment_type in ( AssignmentType.CASEWORK.value, AssignmentType.PREP_ASSIGNMENT.value, @@ -141,6 +151,8 @@ class CourseSessionAssignment(models.Model): if not self.submission_deadline.manual_override_fields: self.submission_deadline.url = url + # TODO: @livioso check what's expected here + self.submission_deadline.url_expert = url_expert self.submission_deadline.title = title self.submission_deadline.assignment_type_translation_key = ( assignment_type_translation_keys[assignment_type] @@ -160,6 +172,7 @@ class CourseSessionAssignment(models.Model): if not self.evaluation_deadline.manual_override_fields: self.evaluation_deadline.url = url + self.submission_deadline.url_expert = url_expert self.evaluation_deadline.title = title self.evaluation_deadline.assignment_type_translation_key = ( assignment_type_translation_keys[assignment_type] @@ -208,6 +221,7 @@ class CourseSessionEdoniqTest(models.Model): if not self.deadline.manual_override_fields: self.deadline.url = self.learning_content.get_frontend_url() + self.deadline.expert_url = self.learning_content.get_expert_url() self.deadline.title = self.learning_content.title self.deadline.page = self.learning_content.page_ptr self.deadline.assignment_type_translation_key = ( diff --git a/server/vbv_lernwelt/duedate/admin.py b/server/vbv_lernwelt/duedate/admin.py index dcaf2359..048f4dee 100644 --- a/server/vbv_lernwelt/duedate/admin.py +++ b/server/vbv_lernwelt/duedate/admin.py @@ -38,6 +38,7 @@ class DueDateAdmin(admin.ModelAdmin): "assignment_type_translation_key", "date_type_translation_key", "url", + "url_expert", ] return default_readonly diff --git a/server/vbv_lernwelt/duedate/migrations/0005_auto_20230925_1648.py b/server/vbv_lernwelt/duedate/migrations/0005_auto_20230925_1648.py new file mode 100644 index 00000000..b73e904d --- /dev/null +++ b/server/vbv_lernwelt/duedate/migrations/0005_auto_20230925_1648.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.20 on 2023-09-25 14:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('duedate', '0004_alter_duedate_start'), + ] + + operations = [ + migrations.AddField( + model_name='duedate', + name='url_expert', + field=models.CharField(blank=True, default='', help_text='URL wird aus dem LearningContent generiert (sichtbar für den Experten/Trainer)', max_length=1024), + ), + migrations.AlterField( + model_name='duedate', + name='url', + field=models.CharField(blank=True, default='', help_text='URL wird vom LearningContent übernommen (sichtbar für Member/Teilnehmer)', max_length=1024), + ), + ] diff --git a/server/vbv_lernwelt/duedate/models.py b/server/vbv_lernwelt/duedate/models.py index 5156bb59..a5ba2854 100644 --- a/server/vbv_lernwelt/duedate/models.py +++ b/server/vbv_lernwelt/duedate/models.py @@ -45,7 +45,13 @@ class DueDate(models.Model): default="", blank=True, max_length=1024, - help_text="URL wird vom LearningContent übernommen", + help_text="URL wird vom LearningContent übernommen (sichtbar für Member/Teilnehmer)", + ) + url_expert = models.CharField( + default="", + blank=True, + max_length=1024, + help_text="URL wird aus dem LearningContent generiert (sichtbar für den Experten/Trainer)", ) course_session = models.ForeignKey( "course.CourseSession", diff --git a/server/vbv_lernwelt/duedate/serializers.py b/server/vbv_lernwelt/duedate/serializers.py index 425f8b01..3e2bc427 100644 --- a/server/vbv_lernwelt/duedate/serializers.py +++ b/server/vbv_lernwelt/duedate/serializers.py @@ -17,6 +17,7 @@ class DueDateSerializer(serializers.ModelSerializer): "date_type_translation_key", "subtitle", "url", + "url_expert", "course_session", "page", "circle", @@ -24,6 +25,9 @@ class DueDateSerializer(serializers.ModelSerializer): def get_circle(self, obj): circle = obj.get_circle() + + page = obj.page + if circle: return { "id": circle.id,