diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue index c8f446807e490128b2b901a0c2fc0d42d8ca1d59..14a7fad9d04331a1d39964ad79d9acffc91e3ac5 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue @@ -34,15 +34,15 @@ /> </div> </v-col> - <v-col cols="12" :sm="2" v-if="startPeriods" align-self="end"> - <v-select - :label="$t('lesrooster.slot.period')" - :items="startPeriods" - item-text="period" - :value="startSlot" - @input="handleStartSlot" - return-object - /> + <v-col cols="12" :sm="2" v-if="startPeriods" align-self="end"> + <v-select + :label="$t('lesrooster.slot.period')" + :items="startPeriods" + item-text="period" + :value="startSlot" + @input="handleStartSlot" + return-object + /> </v-col> <v-col cols="12" :sm="endPeriods ? 4 : 6" class="pr-0"> <div aria-required="true"> @@ -55,14 +55,14 @@ </div> </v-col> <v-col cols="12" :sm="2" v-if="endPeriods" align-self="end"> - <v-select - :label="$t('lesrooster.slot.period')" - :items="endPeriods" - item-text="period" - :value="endSlot" - @input="handleEndSlot" - return-object - /> + <v-select + :label="$t('lesrooster.slot.period')" + :items="endPeriods" + item-text="period" + :value="endSlot" + @input="handleEndSlot" + return-object + /> </v-col> </v-row> <v-row> @@ -89,10 +89,7 @@ <script> import AbsenceReasonGroupSelect from "aleksis.apps.kolego/components/AbsenceReasonGroupSelect.vue"; import DateTimeField from "aleksis.core/components/generic/forms/DateTimeField.vue"; -import { - periodsByDay, - persons, -} from "./absenceCreation.graphql"; +import { periodsByDay, persons } from "./absenceCreation.graphql"; import formRulesMixin from "aleksis.core/mixins/formRulesMixin.js"; import { DateTime } from "luxon"; @@ -188,20 +185,24 @@ export default { getPeriodsForWeekday(weekday) { // Adapt from python conventions const pythonWeekday = weekday - 1; - return this.periodsByDay.find((period) => period.weekday === pythonWeekday).periods; + return this.periodsByDay.find( + (period) => period.weekday === pythonWeekday, + ).periods; }, handleStartDate(date) { console.log("handleStartDate", date); this.start = DateTime.fromISO(date); - + if (this.periodsByDay.length > 0) { // Select periods for day this.startPeriods = this.getPeriodsForWeekday(this.start.weekday); // Sync PeriodSelect - const startTime = this.start.toFormat("HH:mm:ss") - console.log("syncing to ", startTime) - this.startSlot = this.startPeriods.find((period) => period.timeStart === startTime) - console.log("startSlot ", this.startSlot) + const startTime = this.start.toFormat("HH:mm:ss"); + console.log("syncing to ", startTime); + this.startSlot = this.startPeriods.find( + (period) => period.timeStart === startTime, + ); + console.log("startSlot ", this.startSlot); } }, handleEndDate(date) { @@ -211,13 +212,15 @@ export default { // Select periods for day this.endPeriods = this.getPeriodsForWeekday(this.end.weekday); // Sync PeriodSelect - const endTime = this.end.toFormat("HH:mm:ss") - this.endSlot = this.endPeriods.find((period) => period.endTime === endTime) + const endTime = this.end.toFormat("HH:mm:ss"); + this.endSlot = this.endPeriods.find( + (period) => period.endTime === endTime, + ); } }, handleStartSlot(slot) { // Sync TimeSelect - const startTime = DateTime.fromISO(slot.timeStart) + const startTime = DateTime.fromISO(slot.timeStart); this.start = this.start.set({ hour: startTime.hour, minute: startTime.minute, @@ -226,7 +229,7 @@ export default { }, handleEndSlot(slot) { // Sync TimeSelect - const endTime = DateTime.fromISO(slot.timeEnd) + const endTime = DateTime.fromISO(slot.timeEnd); this.end = this.end.set({ hour: endTime.hour, minute: endTime.minute, diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 7798d03d9bd3958f34a1724b5486c07997c2f9fd..a8e830da046e4679d30c9695a8b4d6ae10e0e2f1 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -1,8 +1,8 @@ -from datetime import datetime from collections import defaultdict +from datetime import datetime -from django.db.models import BooleanField, ExpressionWrapper, Q from django.apps import apps +from django.db.models import BooleanField, ExpressionWrapper, Q import graphene import graphene_django_optimizer @@ -366,7 +366,11 @@ class Query(graphene.ObjectType): if apps.is_installed("aleksis.apps.lesrooster"): Slot = apps.get_model("lesrooster", "Slot") ValidityRange = apps.get_model("lesrooster", "ValidityRange") - slots = Slot.objects.filter(time_grid__validity_range=ValidityRange.current).order_by("weekday").values("weekday", "period", "time_start", "time_end") + slots = ( + Slot.objects.filter(time_grid__validity_range=ValidityRange.current) + .order_by("weekday") + .values("weekday", "period", "time_start", "time_end") + ) # Key by weekday by_weekday = defaultdict(list) for slot in slots: @@ -376,12 +380,15 @@ class Query(graphene.ObjectType): # Nest and sort periods periods = [] for weekday, slots in by_weekday.items(): - periods.append({"weekday": weekday, "periods": sorted(slots, key=lambda slot: slot["period"])}) + periods.append( + {"weekday": weekday, "periods": sorted(slots, key=lambda slot: slot["period"])} + ) return periods else: return [] + class Mutation(graphene.ObjectType): create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field() touch_documentation = TouchDocumentationMutation.Field()