Agenda (Technisch)
Technisch ontwerp
De Agenda module in de Apo Jansen App is een Django-gebaseerde module die gebruikmaakt van het AgendaItem model voor het opslaan van agendapunten. De module biedt zowel een interne weergave in de webapp als een externe WebCal/ICS-feed voor agenda-synchronisatie.
Datamodel
De belangrijkste velden van het AgendaItem model zijn:
title: De naam van het agendapunt.description: Een korte omschrijving.date: De specifieke datum van het evenement.start_time/end_time: Optionele tijden voor het evenement.category: Categorie-indeling (bijv. "general", "outing").created_by: Koppeling met de gebruiker die het item heeft aangemaakt.
Implementatiedetails
De module is opgebouwd uit de volgende onderdelen:
- WebCal Feed: Via
core/views/diensten_webcal.pywordt een ICS-feed gegenereerd die alle actieve agendapunten ontsluit voor externe agenda-applicaties. - Push Notificaties: Bij het toevoegen van een nieuw agendapunt kan de Celery-task
send_agenda_uploaded_push_taskworden aangeroepen om gebruikers te informeren. - Caching: Voor een snelle weergave en ontlasting van de database worden .ics bestanden in Redis gecachet.
Autorisatie en beveiliging
De volgende Django permissies zijn van toepassing op deze module:
can_view_agenda: Geeft toegang tot het bekijken van de agenda in de applicatie.can_upload_agenda: Staat de gebruiker toe nieuwe items aan te maken, te wijzigen of te verwijderen via de admin-interface of speciale views.- WebCal Token: Gebruikers kunnen alleen hun eigen gesynchroniseerde data inzien via een uniek, geheim token in de URL van de WebCal-feed.
Relevante bestanden
De belangrijkste bestanden voor deze module zijn:
core/models.py: Bevat de definitie vanAgendaItem.core/views/agenda.py: Bevat de views voor het tonen en beheren van de agenda.core/views/diensten_webcal.py: Implementeert de ICS-export functionaliteit.core/forms.py: Bevat hetAgendaItemForm.core/tasks/: Bevat de push-notificatie taken.