Skip to content
Snippets Groups Projects
Commit 55a6d158 authored by Julian's avatar Julian
Browse files

Touch documentations when opening manage students dialog

parent a3ec31e4
No related branches found
No related tags found
1 merge request!360Resolve "Add absence management to course book student dialog"
...@@ -2,11 +2,13 @@ ...@@ -2,11 +2,13 @@
import { DateTime } from "luxon"; import { DateTime } from "luxon";
import ManageStudentsDialog from "./ManageStudentsDialog.vue"; import ManageStudentsDialog from "./ManageStudentsDialog.vue";
import documentationPartMixin from "../documentation/documentationPartMixin"; import documentationPartMixin from "../documentation/documentationPartMixin";
import { touchDocumentation } from "./participationStatus.graphql";
import mutateMixin from "aleksis.core/mixins/mutateMixin.js";
export default { export default {
name: "ManageStudentsTrigger", name: "ManageStudentsTrigger",
components: { ManageStudentsDialog }, components: { ManageStudentsDialog },
mixins: [documentationPartMixin], mixins: [documentationPartMixin, mutateMixin],
data() { data() {
return { return {
canOpenParticipation: false, canOpenParticipation: false,
...@@ -30,6 +32,26 @@ export default { ...@@ -30,6 +32,26 @@ export default {
clearTimeout(this.timeout); clearTimeout(this.timeout);
} }
}, },
methods: {
touchDocumentation() {
this.mutate(
touchDocumentation,
{
documentationId: this.documentation.id,
},
(storedDocumentations, incoming) => {
// ID may be different now
console.log("incoming:", incoming);
return storedDocumentations.map((doc) =>
doc.id === this.documentation.id
? Object.assign(doc, incoming, { oldId: doc.id })
: doc,
);
},
);
},
},
}; };
</script> </script>
...@@ -40,9 +62,10 @@ export default { ...@@ -40,9 +62,10 @@ export default {
dense dense
color="primary" color="primary"
outlined outlined
:disabled="!canOpenParticipation" :disabled="!canOpenParticipation || loading"
v-bind="attrs" v-bind="attrs"
v-on="on" v-on="on"
@click="touchDocumentation"
> >
<v-icon>$edit</v-icon> <v-icon>$edit</v-icon>
</v-chip> </v-chip>
......
...@@ -16,3 +16,24 @@ mutation updateParticipationStatuses( ...@@ -16,3 +16,24 @@ mutation updateParticipationStatuses(
} }
} }
} }
mutation touchDocumentation($documentationId: ID!) {
touchDocumentation(documentationId: $documentationId) {
items: documentation {
id
participations {
id
person {
id
fullName
}
absenceReason {
id
name
shortName
}
isOptimistic
}
}
}
}
...@@ -708,6 +708,12 @@ class Documentation(CalendarEvent): ...@@ -708,6 +708,12 @@ class Documentation(CalendarEvent):
return cls.objects.get(id=_id) return cls.objects.get(id=_id)
def touch(self):
# TODO: check if participation statuses etc. are created correctly.
# might require some extra work, as the object may have been created
# recently, so checking again would be overkill.
pass
class ParticipationStatus(CalendarEvent): class ParticipationStatus(CalendarEvent):
"""A participation or absence record about a single person. """A participation or absence record about a single person.
......
...@@ -18,6 +18,7 @@ from .documentation import ( ...@@ -18,6 +18,7 @@ from .documentation import (
DocumentationBatchCreateOrUpdateMutation, DocumentationBatchCreateOrUpdateMutation,
DocumentationType, DocumentationType,
LessonsForPersonType, LessonsForPersonType,
TouchDocumentationMutation,
) )
from .participation_status import ParticipationStatusBatchPatchMutation from .participation_status import ParticipationStatusBatchPatchMutation
......
...@@ -139,3 +139,15 @@ class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation): ...@@ -139,3 +139,15 @@ class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation):
objs = [cls.create_or_update(info, doc) for doc in input] objs = [cls.create_or_update(info, doc) for doc in input]
return DocumentationBatchCreateOrUpdateMutation(documentations=objs) return DocumentationBatchCreateOrUpdateMutation(documentations=objs)
class TouchDocumentationMutation(graphene.Mutation):
class Arguments:
documentation_id = graphene.ID(required=True)
documentation = graphene.Field(DocumentationType)
def mutate(root, info, documentation_id):
documentation = Documentation.get_or_create_by_id(documentation_id, info.context.user)
documentation.touch()
return TouchDocumentationMutation(documentation=documentation)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment