Taken en Locaties (Technisch)
Technisch ontwerp
De structuur van de roosterplanning is gebaseerd op een hiërarchie van Locaties en Taken. Dagdelen vormen de tijdssloten waarin deze taken worden gepland.
Datamodel
core.models.Location:name,address,color.is_active: Gebruikt voor soft-delete functionaliteit.
core.models.Task:name,location(ForeignKey naar Location),description.min_mon_morningt/mmin_sat_evening: Integer-velden voor de bezettingseis.is_active: Gebruikt voor soft-delete functionaliteit.
core.models.Dagdeel:code: Unieke code (bijv. 'morning', 'afternoon').name: Display naam.start_time,end_time:TimeFieldobjecten voor de shift-tijden.sort_order: Bepaalt de weergavevolgorde.
Implementatiedetails
- Views: De logica bevindt zich in
core.views.admin.admin_taken. Updates verlopen vialocation_update,task_updateendagdeel_update. - Soft Delete: De
delete_locationendelete_taskviews gebruikenobj.delete(), waarbij in deLocationenTaskmodellen een custom delete-methode is geïmplementeerd (of een manager wordt gebruikt) dieis_activeopFalsezet in plaats van het record fysiek te verwijderen. - Validatie: Bij het updaten van dagdelen wordt in het model gecontroleerd (
cleanmethode) of de starttijd vóór de eindtijd ligt.
Autorisatie en beveiliging
- Toegang tot het beheerdashboard vereist
can_access_admin. - Voor alle mutaties is de permissie
can_manage_tasksvereist. - Toegang tot dagdeel-updates is ook beveiligd met deze permissie.
Relevante bestanden
core/views/admin.py: Bevat de view-logica.core/models.py: DefinieertLocation,TaskenDagdeel.core/forms.py: BevatLocationForm,TaskFormenDagdeelForm.