diff --git a/beesgospel/admin.py b/beesgospel/admin.py index 119f6ed..a7fc1f2 100644 --- a/beesgospel/admin.py +++ b/beesgospel/admin.py @@ -6,7 +6,7 @@ from beesgospel.models import Agenda, Chant, ChantDoc, Document, Membre, User @admin.register(Agenda) class AgendaAdmin(admin.ModelAdmin): - list_display = ["titre", "lieu", "date_heure", "prive"] + list_display = ["titre", "lieu", "date_heure", "statut"] ordering = ["-date_heure"] search_fields = ["titre", "lieu"] date_hierarchy = "date_heure" diff --git a/beesgospel/migrations/0010_agenda_statut.py b/beesgospel/migrations/0010_agenda_statut.py new file mode 100644 index 0000000..7782e84 --- /dev/null +++ b/beesgospel/migrations/0010_agenda_statut.py @@ -0,0 +1,25 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('beesgospel', '0009_remove_numero'), + ] + + operations = [ + migrations.AddField( + model_name='agenda', + name='statut', + field=models.CharField( + choices=[ + ('public', 'Événement public'), ('prive', 'Événement privé'), ('repet', 'Répétition') + ], default='', max_length=10, verbose_name='Statut', + help_text=( + "Un évènement privé ou une répétition ne sont visibles que pour les membres de " + "l’association, tandis qu'un évènement public est visible de tous." + ), + ), + preserve_default=False, + ), + ] diff --git a/beesgospel/models.py b/beesgospel/models.py index 8e32786..4872d02 100644 --- a/beesgospel/models.py +++ b/beesgospel/models.py @@ -45,11 +45,20 @@ class Membre(models.Model): class Agenda(models.Model): + class Statuts(models.TextChoices): + PUBLIC = "public", "Événement public" + PRIVE = "prive", "Événement privé" + REPETITION = "repet", "Répétition" + titre = models.CharField("Titre", max_length=150) lieu = models.CharField("Lieu", max_length=80, blank=True) date_heure = models.DateTimeField("Date/heure") infos = models.TextField("Informations", blank=True) infos_internes = models.TextField("Informations internes", blank=True) + statut = models.CharField("Statut", max_length=10, choices=Statuts, help_text=( + "Un évènement privé ou une répétition ne sont visibles que pour les membres de " + "l’association, tandis qu'un évènement public est visible de tous." + )) prive = models.BooleanField( "Privé", default=False, help_text=( "Un évènement privé ne peut être consulté que par les membres de " diff --git a/beesgospel/views.py b/beesgospel/views.py index 52caa0a..665e24d 100644 --- a/beesgospel/views.py +++ b/beesgospel/views.py @@ -21,7 +21,7 @@ class HomeView(TemplateView): return { **super().get_context_data(**kwargs), "items": Agenda.objects.filter( - date_heure__date__gte=date.today(), prive=False, + date_heure__date__gte=date.today(), statut=Agenda.Statuts.PUBLIC, ).order_by("date_heure")[:2], } @@ -54,7 +54,7 @@ class PresentationView(TemplateView): return { **super().get_context_data(**kwargs), "next_event": Agenda.objects.filter( - date_heure__date__gte=date.today(), prive=False, + date_heure__date__gte=date.today(), statut=Agenda.Statuts.PUBLIC, ).order_by("date_heure").first(), } @@ -68,7 +68,7 @@ class AgendaView(ListView): date_heure__gt=date.today() - timedelta(days=3), ).order_by("date_heure") if not self.request.user.is_authenticated: - qs = qs.filter(prive=False) + qs = qs.filter(statut=Agenda.Statuts.PUBLIC) return qs diff --git a/templates/agenda.html b/templates/agenda.html index 1d1103d..d0fd62d 100644 --- a/templates/agenda.html +++ b/templates/agenda.html @@ -6,7 +6,7 @@