From c376aea7871e813387d23141426d35db1ef47820 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 27 Aug 2025 20:45:48 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Ajout=20cat=C3=A9gorie=20de=20documents?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beesgospel/admin.py | 3 ++- .../migrations/0004_document_categorie.py | 17 +++++++++++++++++ beesgospel/models.py | 7 +++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 beesgospel/migrations/0004_document_categorie.py diff --git a/beesgospel/admin.py b/beesgospel/admin.py index 35f08e5..afcc0ed 100644 --- a/beesgospel/admin.py +++ b/beesgospel/admin.py @@ -14,7 +14,8 @@ class AgendaAdmin(admin.ModelAdmin): @admin.register(Document) class DocumentAdmin(admin.ModelAdmin): - list_display = ["titre", "quand", "prive"] + list_display = ["titre", "quand", "categorie", "prive"] + list_filter = ["categorie"] ordering = ["-quand"] diff --git a/beesgospel/migrations/0004_document_categorie.py b/beesgospel/migrations/0004_document_categorie.py new file mode 100644 index 0000000..0cdfb85 --- /dev/null +++ b/beesgospel/migrations/0004_document_categorie.py @@ -0,0 +1,17 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('beesgospel', '0003_membre_annee_entree_date_naissance'), + ] + + operations = [ + migrations.AddField( + model_name='document', + name='categorie', + field=models.CharField(choices=[('video', 'Vidéo'), ('audio', 'Audio'), ('photos', 'Photos'), ('doc', 'Document')], default='doc', max_length=30, verbose_name='Catégorie'), + preserve_default=False, + ), + ] diff --git a/beesgospel/models.py b/beesgospel/models.py index b167719..83d63b1 100644 --- a/beesgospel/models.py +++ b/beesgospel/models.py @@ -63,11 +63,18 @@ class Agenda(models.Model): class Document(models.Model): + class Categories(models.TextChoices): + VIDEO = "video", "Vidéo" + AUDIO = "audio", "Audio" + PHOTOS = "photos", "Photos" + DOCUMENT = "doc", "Document" + fichier = models.FileField("Fichier", upload_to="documents", blank=True) url = models.URLField("URL", blank=True) quand = models.DateField("Date") titre = models.CharField("Titre", max_length=150) infos = models.TextField("Infos", blank=True) + categorie = models.CharField("Catégorie", max_length=30, choices=Categories) prive = models.BooleanField( "Privé", default=False, help_text=( "Un document privé ne peut être consulté que par les membres de " From 0a140eca1520251a06cad81a944c61e0fc8c37d7 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 27 Aug 2025 20:46:41 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Distinction=20page=20document=20public/priv?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beesgospel/views.py | 15 +++++++++++---- common/urls.py | 5 +++-- templates/media.html | 6 +++++- templates/membres/index.html | 4 +--- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/beesgospel/views.py b/beesgospel/views.py index 5d6c2e4..a07b19d 100644 --- a/beesgospel/views.py +++ b/beesgospel/views.py @@ -45,12 +45,19 @@ class AgendaView(ListView): class MediaView(ListView): model = Document template_name = "media.html" + prive = False def get_queryset(self): - qs = Document.objects.all().order_by("-quand", "titre") - if not self.request.user.is_authenticated: - qs = qs.filter(prive=False) - return qs + return Document.objects.filter(prive=self.prive).order_by("-quand", "titre") + + def get_context_data(self, **kwargs): + return { + **super().get_context_data(**kwargs), + "title": { + False: "Enregistrements, photos et vidéos de la chorale", + True: "Documents privés", + }.get(self.prive) + } class EspaceMembresView(LoginRequiredMixin, TemplateView): diff --git a/common/urls.py b/common/urls.py index e98c37f..cdc5d82 100644 --- a/common/urls.py +++ b/common/urls.py @@ -11,8 +11,9 @@ urlpatterns = [ path("v2", TemplateView.as_view(template_name="index2.html"), name="home"), path("presentation/", views.PresentationView.as_view(), name="presentation"), path("contact/", TemplateView.as_view(template_name="contact.html"), name="contact"), + path("agenda/", views.AgendaView.as_view(), name="agenda"), + path("medias/", views.MediaView.as_view(prive=False), name="medias"), path("membres/", views.EspaceMembresView.as_view(), name="membres"), path("membres/liste/", views.ListeMembresView.as_view(), name="liste-membres"), - path("agenda/", views.AgendaView.as_view(), name="agenda"), - path("medias/", views.MediaView.as_view(), name="medias"), + path("membres/documents/", views.MediaView.as_view(prive=True), name="docs-membres"), ] diff --git a/templates/media.html b/templates/media.html index 4773eb1..7041a4b 100644 --- a/templates/media.html +++ b/templates/media.html @@ -3,7 +3,7 @@ {% block page_title %} - Media{% endblock %} {% block content %} -

Enregistrements, photos et vidéos de la chorale

+

{{ title }}

{% for item in object_list %}
@@ -20,4 +20,8 @@ {% empty %}

Aucun document disponible pour le moment

{% endfor %} + +{% if perms.beesgospel.change_document %} +

Gestion des documents

+{% endif %} {% endblock %} diff --git a/templates/membres/index.html b/templates/membres/index.html index 65e3c25..1d53109 100644 --- a/templates/membres/index.html +++ b/templates/membres/index.html @@ -7,11 +7,9 @@

Espace membres

+ {% if perms.beesgospel.change_agenda %} {% endif %} - {% if perms.beesgospel.change_document %} - - {% endif %}
{% endblock %}