diff --git a/aleksis/apps/kolego/frontend/components/AbsenceReasonChip.vue b/aleksis/apps/kolego/frontend/components/AbsenceReasonChip.vue index 7e7dff5de475d87d0734ca64fa3631df3deae686..f3521b1b8ce1149d531ebbb8423cc464be7f8615 100644 --- a/aleksis/apps/kolego/frontend/components/AbsenceReasonChip.vue +++ b/aleksis/apps/kolego/frontend/components/AbsenceReasonChip.vue @@ -3,6 +3,7 @@ import CounterChip from "aleksis.core/components/generic/chips/CounterChip.vue"; export default { name: "AbsenceReasonChip", + components: [CounterChip], props: { absenceReason: { type: Object, diff --git a/aleksis/apps/kolego/frontend/components/AbsenceReasonGroupSelect.vue b/aleksis/apps/kolego/frontend/components/AbsenceReasonGroupSelect.vue index 2151a35178ff4d13de1b897cfa10c16ecb7fac27..d7bf38f19c00aa6f7da7c5be4c76dd68fc89b347 100644 --- a/aleksis/apps/kolego/frontend/components/AbsenceReasonGroupSelect.vue +++ b/aleksis/apps/kolego/frontend/components/AbsenceReasonGroupSelect.vue @@ -10,6 +10,7 @@ export default { data() { return { absenceReasons: [], + innerValue: undefined, }; }, apollo: { @@ -52,14 +53,28 @@ export default { ); }, }, + mounted() { + this.innerValue = this.value; + }, + watch: { + value(newValue) { + this.innerValue = newValue; + }, + }, + methods: { + updateInnerValue($event) { + this.innerValue = $event; + this.$emit("input", $event); + }, + }, }; </script> <template> <v-chip-group column - :value="value" - @change="$emit('input', $event)" + :value="innerValue" + @change="updateInnerValue" mandatory v-if="showChips" > @@ -71,7 +86,7 @@ export default { outlined > {{ $t("kolego.absence_reason.present") }} - <v-avatar right v-if="loadSelectedChip && value === emptyValue"> + <v-avatar right v-if="loadSelectedChip && innerValue === emptyValue"> <v-progress-circular indeterminate :size="16" :width="2" /> </v-avatar> </v-chip> @@ -81,7 +96,7 @@ export default { :absence-reason="absenceReason" filter outlined - :loading="loadSelectedChip && absenceReason.id === value" + :loading="loadSelectedChip && absenceReason.id === innerValue" /> </v-chip-group> <v-skeleton-loader v-else type="chip@4" class="d-flex flex-wrap gap" /> diff --git a/aleksis/apps/kolego/schema/absence.py b/aleksis/apps/kolego/schema/absence.py index 6880d305027374339696627b2b5418c0a18a673d..752cd458103132b8f7aef8cc727d97d381107e66 100644 --- a/aleksis/apps/kolego/schema/absence.py +++ b/aleksis/apps/kolego/schema/absence.py @@ -3,17 +3,14 @@ from datetime import timezone from django.conf import settings from graphene_django.types import DjangoObjectType -from graphene_django_cud.mutations import ( - DjangoBatchCreateMutation, - DjangoBatchDeleteMutation, - DjangoBatchPatchMutation, -) from guardian.shortcuts import get_objects_for_user from zoneinfo import ZoneInfo from aleksis.core.schema.base import ( + BaseBatchCreateMutation, + BaseBatchDeleteMutation, + BaseBatchPatchMutation, DjangoFilterMixin, - PermissionBatchPatchMixin, PermissionsTypeMixin, ) @@ -48,7 +45,7 @@ class AbsenceType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): return get_objects_for_user(info.context.user, "kolego.view_absence", queryset) -class AbsenceBatchCreateMutation(DjangoBatchCreateMutation): +class AbsenceBatchCreateMutation(BaseBatchCreateMutation): class Meta: model = Absence fields = ("person", "reason", "comment", "datetime_start", "datetime_end") @@ -72,13 +69,13 @@ class AbsenceBatchCreateMutation(DjangoBatchCreateMutation): return obj -class AbsenceBatchDeleteMutation(DjangoBatchDeleteMutation): +class AbsenceBatchDeleteMutation(BaseBatchDeleteMutation): class Meta: model = Absence - permission_required = "kolego.delete_absence_rule" + permissions = ("kolego.delete_absence_rule",) -class AbsenceBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): +class AbsenceBatchPatchMutation(BaseBatchPatchMutation): class Meta: model = Absence fields = ("id", "person", "reason", "comment", "datetime_start", "datetime_end") @@ -101,7 +98,7 @@ class AbsenceBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutat return obj -class AbsenceReasonBatchCreateMutation(DjangoBatchCreateMutation): +class AbsenceReasonBatchCreateMutation(BaseBatchCreateMutation): class Meta: model = AbsenceReason fields = ("short_name", "name", "colour", "default") @@ -109,13 +106,13 @@ class AbsenceReasonBatchCreateMutation(DjangoBatchCreateMutation): permissions = ("kolego.create_absencereason_rule",) -class AbsenceReasonBatchDeleteMutation(DjangoBatchDeleteMutation): +class AbsenceReasonBatchDeleteMutation(BaseBatchDeleteMutation): class Meta: model = AbsenceReason - permission_required = "kolego.delete_absencereason_rule" + permissions = ("kolego.delete_absencereason_rule",) -class AbsenceReasonBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMutation): +class AbsenceReasonBatchPatchMutation(BaseBatchPatchMutation): class Meta: model = AbsenceReason fields = ("id", "short_name", "name", "colour", "default")