What
aula vacations reads vacation registrations, but there is no way to create one. The portal has this write, and it is the correct tool for a planned absence, which report-sick deliberately does not cover (Aula has no future-dated sick report).
Grounding
Portal bundle, presence Vuex store (https://www.aula.dk/static/js/0.*.js, webpack module 152), sitting directly beside the UPDATE_SICK action:
ADD_ABSENCE: ({commit}, payload) =>
post("?method=calendar.addVacation", payload)
.then(r => { commit(MUTATE_SUCCESS_TEXT, "SUCCESS_TOAST_REGISTER_ABSENCE"); return r })
.catch(() => commit(MUTATE_ERROR_TEXT, "API_ERROR_ADD_VACATION"))
Note the method lives under calendar.*, not presence.*, even though the presence UI is what calls it.
The mobile app decompilation (com.netcompany.aulanativeprivate, published in eisbaw/aulalibre) lists the same family: AddVacation, GetChildrenVacation, GetVacationAnnouncementsByChildren, GetVacationRegistrationOverview, GetVacationRegistrationsByChildren.
Work needed
The request payload is not pinned down yet. Before implementing, read it out of the bundle the same way the sick write was grounded in #63:
- Find the component dispatching
ADD_ABSENCE and record the exact object it passes (child ids, start/end dates, a note field, and how the vacation "announcement" case differs from a plain registration).
- Cross-check against
DTOs/Models.ComeGo vacation entries in the app decompilation's data_models.md.
- Check the permission gate:
PresenceModule.VACATION already exists in models/presence.py, so PresenceConfiguration.can_edit(PresenceModule.VACATION) should gate the command exactly as report_sick gates report-sick.
Then: AulaApiClient.add_vacation(...), a CLI command (aula register-absence or a --add mode on aula vacations), the confirmation and --yes pattern used by the other writes, and tests covering the payload plus the permission skip.
Context
Found while grounding the sick report in #63. Deliberately left out of that PR to keep one write per change.
What
aula vacationsreads vacation registrations, but there is no way to create one. The portal has this write, and it is the correct tool for a planned absence, whichreport-sickdeliberately does not cover (Aula has no future-dated sick report).Grounding
Portal bundle, presence Vuex store (
https://www.aula.dk/static/js/0.*.js, webpack module 152), sitting directly beside theUPDATE_SICKaction:Note the method lives under
calendar.*, notpresence.*, even though the presence UI is what calls it.The mobile app decompilation (
com.netcompany.aulanativeprivate, published in eisbaw/aulalibre) lists the same family:AddVacation,GetChildrenVacation,GetVacationAnnouncementsByChildren,GetVacationRegistrationOverview,GetVacationRegistrationsByChildren.Work needed
The request payload is not pinned down yet. Before implementing, read it out of the bundle the same way the sick write was grounded in #63:
ADD_ABSENCEand record the exact object it passes (child ids, start/end dates, a note field, and how the vacation "announcement" case differs from a plain registration).DTOs/Models.ComeGovacation entries in the app decompilation'sdata_models.md.PresenceModule.VACATIONalready exists inmodels/presence.py, soPresenceConfiguration.can_edit(PresenceModule.VACATION)should gate the command exactly asreport_sickgatesreport-sick.Then:
AulaApiClient.add_vacation(...), a CLI command (aula register-absenceor a--addmode onaula vacations), the confirmation and--yespattern used by the other writes, and tests covering the payload plus the permission skip.Context
Found while grounding the sick report in #63. Deliberately left out of that PR to keep one write per change.