Compare commits

...

2 commits

Author SHA1 Message Date
Claude Paroz 0a140eca15 Distinction page document public/privé 2025-08-27 20:46:41 +02:00
Claude Paroz c376aea787 Ajout catégorie de documents 2025-08-27 20:45:48 +02:00
7 changed files with 46 additions and 11 deletions

View file

@ -14,7 +14,8 @@ class AgendaAdmin(admin.ModelAdmin):
@admin.register(Document) @admin.register(Document)
class DocumentAdmin(admin.ModelAdmin): class DocumentAdmin(admin.ModelAdmin):
list_display = ["titre", "quand", "prive"] list_display = ["titre", "quand", "categorie", "prive"]
list_filter = ["categorie"]
ordering = ["-quand"] ordering = ["-quand"]

View file

@ -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,
),
]

View file

@ -63,11 +63,18 @@ class Agenda(models.Model):
class Document(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) fichier = models.FileField("Fichier", upload_to="documents", blank=True)
url = models.URLField("URL", blank=True) url = models.URLField("URL", blank=True)
quand = models.DateField("Date") quand = models.DateField("Date")
titre = models.CharField("Titre", max_length=150) titre = models.CharField("Titre", max_length=150)
infos = models.TextField("Infos", blank=True) infos = models.TextField("Infos", blank=True)
categorie = models.CharField("Catégorie", max_length=30, choices=Categories)
prive = models.BooleanField( prive = models.BooleanField(
"Privé", default=False, help_text=( "Privé", default=False, help_text=(
"Un document privé ne peut être consulté que par les membres de " "Un document privé ne peut être consulté que par les membres de "

View file

@ -45,12 +45,19 @@ class AgendaView(ListView):
class MediaView(ListView): class MediaView(ListView):
model = Document model = Document
template_name = "media.html" template_name = "media.html"
prive = False
def get_queryset(self): def get_queryset(self):
qs = Document.objects.all().order_by("-quand", "titre") return Document.objects.filter(prive=self.prive).order_by("-quand", "titre")
if not self.request.user.is_authenticated:
qs = qs.filter(prive=False) def get_context_data(self, **kwargs):
return qs 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): class EspaceMembresView(LoginRequiredMixin, TemplateView):

View file

@ -11,8 +11,9 @@ urlpatterns = [
path("v2", TemplateView.as_view(template_name="index2.html"), name="home"), path("v2", TemplateView.as_view(template_name="index2.html"), name="home"),
path("presentation/", views.PresentationView.as_view(), name="presentation"), path("presentation/", views.PresentationView.as_view(), name="presentation"),
path("contact/", TemplateView.as_view(template_name="contact.html"), name="contact"), 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/", views.EspaceMembresView.as_view(), name="membres"),
path("membres/liste/", views.ListeMembresView.as_view(), name="liste-membres"), path("membres/liste/", views.ListeMembresView.as_view(), name="liste-membres"),
path("agenda/", views.AgendaView.as_view(), name="agenda"), path("membres/documents/", views.MediaView.as_view(prive=True), name="docs-membres"),
path("medias/", views.MediaView.as_view(), name="medias"),
] ]

View file

@ -3,7 +3,7 @@
{% block page_title %} - Media{% endblock %} {% block page_title %} - Media{% endblock %}
{% block content %} {% block content %}
<h2 class="mb-5">Enregistrements, photos et vidéos de la chorale</h2> <h2 class="mb-5">{{ title }}</h2>
{% for item in object_list %} {% for item in object_list %}
<div class="border-bottom border-danger mt-3{% if item.prive %} prive{% endif %}"> <div class="border-bottom border-danger mt-3{% if item.prive %} prive{% endif %}">
@ -20,4 +20,8 @@
{% empty %} {% empty %}
<p><i>Aucun document disponible pour le moment</i></p> <p><i>Aucun document disponible pour le moment</i></p>
{% endfor %} {% endfor %}
{% if perms.beesgospel.change_document %}
<p class="text-danger"><a href="{% url 'admin:beesgospel_document_changelist' %}">Gestion des documents</a></p>
{% endif %}
{% endblock %} {% endblock %}

View file

@ -7,11 +7,9 @@
<h2>Espace membres</h2> <h2>Espace membres</h2>
<div class="row mt-4"> <div class="row mt-4">
<div class="col col-4"><a href="{% url 'liste-membres' %}">Liste des membres</a></div> <div class="col col-4"><a href="{% url 'liste-membres' %}">Liste des membres</a></div>
<div class="col col-4"><a href="{% url 'docs-membres' %}">Documents pour les membres</a></div>
{% if perms.beesgospel.change_agenda %} {% if perms.beesgospel.change_agenda %}
<div class="col col-4"><a href="{% url 'admin:beesgospel_agenda_changelist' %}">Gestion de lagenda</a></div> <div class="col col-4"><a href="{% url 'admin:beesgospel_agenda_changelist' %}">Gestion de lagenda</a></div>
{% endif %} {% endif %}
{% if perms.beesgospel.change_document %}
<div class="col col-4"><a href="{% url 'admin:beesgospel_document_changelist' %}">Gestion des documents</a></div>
{% endif %}
</div> </div>
{% endblock %} {% endblock %}