diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index 86b2a5fa258db6f0d4e4e077219e65105fde2816..11a0c85c853d0d7a175017d88c3bf8a21df936a8 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -58,7 +58,9 @@ <template #no-results> <CoursebookEmptyMessage icon="mdi-book-alert-outline"> {{ - $t("alsijil.coursebook.no_results", { search: $refs.iterator.search }) + $t("alsijil.coursebook.no_results", { + search: $refs.iterator.search, + }) }} </CoursebookEmptyMessage> </template> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue index 88672264aea7a128930d4b912e55b5aab2dd0a11..2a8734d8c8574cfa73857a60319ac2637678b9ff 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue @@ -25,32 +25,31 @@ </div> </template> <template #content> - <absence-creation-form v-if="form" - :persons="persons" - :start-date="startDate" - :end-date="endDate" - :comment="comment" - :absence-reason="absenceReason" - @valid="formValid = $event" - @persons="persons = $event" - @start-date="startDate = $event" - @end-date="endDate = $event" - @comment="comment = $event" - @absence-reason="absenceReason = $event" - /> - <absence-creation-summary v-else - :persons="persons" - :start-date="startDate" - :end-date="endDate" - @loading="handleLoading" - /> + <absence-creation-form + v-if="form" + :persons="persons" + :start-date="startDate" + :end-date="endDate" + :comment="comment" + :absence-reason="absenceReason" + @valid="formValid = $event" + @persons="persons = $event" + @start-date="startDate = $event" + @end-date="endDate = $event" + @comment="comment = $event" + @absence-reason="absenceReason = $event" + /> + <absence-creation-summary + v-else + :persons="persons" + :start-date="startDate" + :end-date="endDate" + @loading="handleLoading" + /> </template> <template #actions> <!-- secondary --> - <cancel-button - @click="cancel" - :disabled="loading" - /> + <cancel-button @click="cancel" :disabled="loading" /> <!-- primary --> <save-button v-if="form" @@ -116,18 +115,19 @@ export default { }, confirm() { this.handleLoading(true); - this.$apollo.mutate( { - mutation: createAbsencesForPersons, - variables: { - persons: this.persons.map((p) => p.id), - start: this.startDate, - end: this.endDate, - comment: this.comment, - reason: this.absenceReason, - }, - }) + this.$apollo + .mutate({ + mutation: createAbsencesForPersons, + variables: { + persons: this.persons.map((p) => p.id), + start: this.startDate, + end: this.endDate, + comment: this.comment, + reason: this.absenceReason, + }, + }) .then(() => { - this.clearForm() + this.clearForm(); this.cancel(); this.$toastSuccess("alsijil.coursebook.absences.success"); }) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue index f8b20a0baac0a004f01228b52f9a401cd551e4d1..c66bfc93bb48f801407246a5c0a824fd8d311cb0 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue @@ -16,11 +16,7 @@ </div> </v-row> <v-row> - <v-col - cols="12" - :sm="6" - class="pl-0" - > + <v-col cols="12" :sm="6" class="pl-0"> <div aria-required="true"> <date-field :label="$t('forms.labels.start')" @@ -31,11 +27,7 @@ /> </div> </v-col> - <v-col - cols="12" - :sm="6" - class="pr-0" - > + <v-col cols="12" :sm="6" class="pr-0"> <div aria-required="true"> <date-field :label="$t('forms.labels.end')" @@ -78,7 +70,14 @@ export default { AbsenceReasonGroupSelect, DateField, }, - emits: ["valid", "persons", "start-date", "end-date", "comment", "absence-reason"], + emits: [ + "valid", + "persons", + "start-date", + "end-date", + "comment", + "absence-reason", + ], apollo: { // TODO: Query currently returns all persons. But should return // only persons the current user can create ParticipationStati and @@ -109,9 +108,7 @@ export default { }, data() { return { - rules: [ - (value) => value.length > 0, - ], + rules: [(value) => value.length > 0], }; }, }; diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue index 1f00a767e38a0665945e0db37dbd4bb90c743716..429ae693e580ea8d1dd6f025e37dc9ee76d81cce 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue @@ -16,10 +16,7 @@ > <template #default="{ items }"> <v-expansion-panels> - <v-expansion-panel - v-for="person in items" - :key="person.id" - > + <v-expansion-panel v-for="person in items" :key="person.id"> <v-expansion-panel-header> <div> {{ persons.find((p) => p.id === person.id).fullName }} @@ -32,20 +29,20 @@ </v-expansion-panel-header> <v-expansion-panel-content> <v-divider /> - <v-list-item - v-for="lesson in person.lessons" - class="px-0" - > + <v-list-item v-for="lesson in person.lessons" class="px-0"> <!-- TODO: We should extract this display & share it --> - <time :datetime="lesson.datetimeStart" class="pr-2 text-no-wrap"> + <time + :datetime="lesson.datetimeStart" + class="pr-2 text-no-wrap" + > {{ $d(toDateTime(lesson.datetimeStart), "shortWithWeekday") }} </time> <span>(</span> - <time :datetime="lesson.datetimeStart" class="text-no-wrap"> + <time :datetime="lesson.datetimeStart" class="text-no-wrap"> {{ $d(toDateTime(lesson.datetimeStart), "shortTime") }} </time> <span>-</span> - <time :datetime="lesson.datetimeEnd" class="text-no-wrap"> + <time :datetime="lesson.datetimeEnd" class="text-no-wrap"> {{ $d(toDateTime(lesson.datetimeEnd), "shortTime") }} </time> <span>)</span> @@ -53,9 +50,7 @@ <div class="pr-2"> {{ lesson.course.name }} </div> - <subject-chip - :subject="lesson.subject" - /> + <subject-chip :subject="lesson.subject" /> </v-list-item> </v-expansion-panel-content> </v-expansion-panel> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql index 1b41a76a3ceac242f4e065d5504600e324a682c6..683ba5c99315cb62d83d8f6a803be90122277671 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql @@ -6,16 +6,8 @@ query persons { } } -query lessonsForPersons( - $persons: [ID]! - $start: Date! - $end: Date! -) { - items: lessonsForPersons( - persons: $persons - start: $start - end: $end - ) { +query lessonsForPersons($persons: [ID]!, $start: Date!, $end: Date!) { + items: lessonsForPersons(persons: $persons, start: $start, end: $end) { id lessons { id @@ -51,6 +43,6 @@ mutation createAbsencesForPersons( comment: $comment reason: $reason ) { - ok - } + ok + } } diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 62bb12542db0a739fc39cf4a5b77f60a331463ee..9e68ccd06773dc8b0f6ee65ccd16c81319b94a8b 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -4,7 +4,6 @@ from urllib.parse import urlparse from django.contrib.auth.models import User from django.core.exceptions import PermissionDenied -from django.core.exceptions import PermissionDenied from django.db import models from django.db.models import QuerySet from django.db.models.constraints import CheckConstraint @@ -13,9 +12,7 @@ from django.urls import reverse from django.utils import timezone from django.utils.formats import date_format from django.utils.timezone import localdate, localtime, now -from django.utils.timezone import localdate, localtime from django.utils.translation import gettext_lazy as _ -from django.contrib.auth.models import User from calendarweek import CalendarWeek from colorfield.fields import ColorField diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index e38272d256fb9696d699c67e027443fea94043ae..397834be020fc5efd2af3636e93985c045d11a0a 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -12,9 +12,11 @@ from aleksis.core.models import Group, Person from aleksis.core.schema.base import FilterOrderList from aleksis.core.schema.group import GroupType from aleksis.core.util.core_helpers import has_person -from aleksis.apps.chronos.models import LessonEvent from ..models import Documentation +from .absences import ( + AbsencesForPersonsCreateMutation, +) from .documentation import ( DocumentationBatchCreateOrUpdateMutation, DocumentationType, @@ -23,10 +25,6 @@ from .documentation import ( ) from .participation_status import ParticipationStatusBatchPatchMutation -from .absences import ( - LessonsForPersonType, - AbsencesForPersonsCreateMutation, -) class Query(graphene.ObjectType): documentations = FilterOrderList(DocumentationType) @@ -149,8 +147,6 @@ class Query(graphene.ObjectType): | Q(groups__parent_groups__owners=person) ) - - @staticmethod def resolve_lessons_for_persons( root, @@ -160,8 +156,7 @@ class Query(graphene.ObjectType): end, **kwargs, ): - """Resolve all lesson events for each person in timeframe start to end. - """ + """Resolve all lesson events for each person in timeframe start to end.""" lessons_for_person = [] for person in persons: docs, dummies = Documentation.get_documentations_for_person( @@ -170,12 +165,7 @@ class Query(graphene.ObjectType): datetime.combine(end, datetime.max.time()), ) - lessons_for_person.append( - LessonsForPersonType( - id=person, - lessons=docs + dummies - ) - ) + lessons_for_person.append(LessonsForPersonType(id=person, lessons=docs + dummies)) return lessons_for_person diff --git a/aleksis/apps/alsijil/schema/absences.py b/aleksis/apps/alsijil/schema/absences.py index 5a4561a208a5ab4ccd1cddb73eab43797026fd77..ae194435024511bac1eb06731cbf7b2013597570 100644 --- a/aleksis/apps/alsijil/schema/absences.py +++ b/aleksis/apps/alsijil/schema/absences.py @@ -1,15 +1,18 @@ -import graphene from datetime import datetime +import graphene + from aleksis.apps.kolego.models import Absence -from .documentation import DocumentationType from ..models import Documentation, ParticipationStatus +from .documentation import DocumentationType + class LessonsForPersonType(graphene.ObjectType): id = graphene.ID() # noqa lessons = graphene.List(DocumentationType) + class AbsencesForPersonsCreateMutation(graphene.Mutation): class Arguments: persons = graphene.List(graphene.ID, required=True)