diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql index 5814088f6211ae52373776001ad52749e9452696..8444f9e35af335080026b221424fda598068c6fc 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql +++ b/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql @@ -37,7 +37,7 @@ query documentationsForCoursebook( id name } - lessonEvent { + amends { id amends { id diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue index 5c6cb5f5c0ed9170736e2fbf6dcd73a81bab917a..ad214b49da74fcab14fd39f456b9e24e2e620c47 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationStatus.vue @@ -78,13 +78,13 @@ export default { }, methods: { updateStatus() { - if (this.documentation?.lessonEvent.cancelled) { + if (this.documentation?.amends.cancelled) { this.currentStatusName = "cancelled"; } else if (this.documentation.topic) { this.currentStatusName = "available"; } else if (DateTime.now() > this.documentationDateTimeEnd) { this.currentStatusName = "missing"; - } else if (this.documentation?.lessonEvent.amends) { + } else if (this.documentation?.amends.amends) { this.currentStatusName = "substitution"; } else if ( DateTime.now() > this.documentationDateTimeStart && diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue index a07172dc5834feb68eeab69cd522774c52279256..3222f5c704f65f146a4d36f8ef2c37b03d8449a0 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue @@ -41,11 +41,11 @@ import PersonChip from "aleksis.core/components/person/PersonChip.vue"; /> <subject-chip v-if=" - documentation?.lessonEvent?.amends?.subject && - documentation.lessonEvent.amends.subject.id !== + documentation?.amends?.amends?.subject && + documentation.amends.amends.subject.id !== documentation.subject.id " - :subject="documentation.lessonEvent.amends.subject" + :subject="documentation.amends.amends.subject" v-bind="compact ? dialogActivator.attrs : {}" v-on="compact ? dialogActivator.on : {}" class="text-decoration-line-through" @@ -102,10 +102,10 @@ export default { }, amendedTeachers() { if ( - this.documentation?.lessonEvent?.amends?.teachers && - this.documentation.lessonEvent.amends.teachers.length + this.documentation?.amends?.amends?.teachers && + this.documentation.amends.amends.teachers.length ) { - return this.documentation.lessonEvent.amends.teachers.filter( + return this.documentation.amends.amends.teachers.filter( (at) => !this.documentation.teachers.includes((t) => t.id === at.id), ); } diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 4cfa41cda38b687fa26e9571b8ad8ab4f4ef5270..930bbc3d5d6bfa0dfed62ab5428c20e99c86e1a1 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -486,17 +486,17 @@ class Documentation(CalendarEvent): def get_subject(self) -> str: if self.subject: return self.subject - if self.lesson_event: - if self.lesson_event.subject: - return self.lesson_event.subject - if self.lesson_event.course: - return self.lesson_event.course.subject + if self.amends: + if self.amends.subject: + return self.amends.subject + if self.amends.course: + return self.amends.course.subject if self.course: return self.course.subject def get_groups(self) -> QuerySet[Group]: - if self.lesson_event: - return self.lesson_event.actual_groups + if self.amends: + return self.amends.actual_groups if self.course: return self.course.groups.all() @@ -589,7 +589,7 @@ class Documentation(CalendarEvent): docs.append( cls( pk=f"DUMMY;{event_reference_obj.id};{event['DTSTART'].dt.isoformat()};{event['DTEND'].dt.isoformat()}", - lesson_event=event_reference_obj, + amends=event_reference_obj, course=course, subject=subject, datetime_start=event["DTSTART"].dt, diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index d762a9874e9ad85f98de86a2adff2fdd4af388fd..aae1b70603f0b0e5c738d81467d31f3844f13a86 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -39,7 +39,7 @@ class Query(graphene.ObjectType): def resolve_documentations_by_course_id(root, info, course_id, **kwargs): documentations = Documentation.objects.filter( - Q(course__pk=course_id) | Q(lesson_event__course__pk=course_id) + Q(course__pk=course_id) | Q(amends__course__pk=course_id) ) return documentations diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py index 52b92549ffe5a6baba40a2c8976bcd7ab0d9dd56..c458ec135b0c1c064fb30dd4daab052e53a8f563 100644 --- a/aleksis/apps/alsijil/schema/documentation.py +++ b/aleksis/apps/alsijil/schema/documentation.py @@ -28,7 +28,7 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp fields = ( "id", "course", - "lesson_event", + "amends", "subject", "topic", "homework", @@ -55,12 +55,12 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp def resolve_teachers(root: Documentation, info, **kwargs): if not str(root.pk).startswith("DUMMY") and hasattr(root, "teachers"): return root.teachers - elif root.lesson_event.amends: - if root.lesson_event.teachers: - return root.lesson_event.teachers + elif root.amends.amends: + if root.amends.teachers: + return root.amends.teachers else: - return root.lesson_event.amends.teachers - return root.lesson_event.teachers + return root.amends.amends.teachers + return root.amends.teachers @staticmethod def resolve_future_notice(root: Documentation, info, **kwargs): @@ -148,7 +148,7 @@ class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation): obj = Documentation.objects.create( datetime_start=datetime_start, datetime_end=datetime_end, - lesson_event=lesson_event, + amends=lesson_event, course=course, subject=subject, topic=doc.topic or "", diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index 33bda1e7d5a586ff759eaf83f4b231ed43bf08c5..652a4fa78e3443a91bb8cc535ec291a6254f7ae4 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -390,13 +390,13 @@ def is_documentation_teacher(user: User, obj: Documentation): if obj: if not str(obj.pk).startswith("DUMMY") and hasattr(obj, "teachers"): teachers = obj.teachers - elif obj.lesson_event.amends: - if obj.lesson_event.teachers: - teachers = obj.lesson_event.teachers + elif obj.amends.amends: + if obj.amends.teachers: + teachers = obj.amends.teachers else: - teachers = obj.lesson_event.amends.teachers + teachers = obj.amends.amends.teachers else: - teachers = obj.lesson_event.teachers + teachers = obj.amends.teachers return user.person in teachers.all() return False @@ -407,11 +407,11 @@ def can_view_documentation(user: User, obj: Documentation): if obj: if is_documentation_teacher(user, obj): return True - if obj.lesson_event: + if obj.amends: return ( - is_lesson_event_teacher(user, obj.lesson_event) - | is_lesson_event_member(user, obj.lesson_event) - | is_lesson_event_group_owner(user, obj.lesson_event) + is_lesson_event_teacher(user, obj.amends) + | is_lesson_event_member(user, obj.amends) + | is_lesson_event_group_owner(user, obj.amends) ) if obj.course: return is_course_teacher(user, obj.course) @@ -425,7 +425,7 @@ def can_view_any_documentation(user: User): return Documentation.objects.filter( Q(teachers=user.person) - | Q(lesson_event__in=allowed_lesson_events) + | Q(amends__in=allowed_lesson_events) | Q(course__teachers=user.person) ).exists() @@ -436,9 +436,9 @@ def can_edit_documentation(user: User, obj: Documentation): if obj: if is_documentation_teacher(user, obj): return True - if obj.lesson_event: - return is_lesson_event_teacher(user, obj.lesson_event) | is_lesson_event_group_owner( - user, obj.lesson_event + if obj.amends: + return is_lesson_event_teacher(user, obj.amends) | is_lesson_event_group_owner( + user, obj.amends ) return False