From ce2c2358290e45100d827fe6a2c7afded73e5bd8 Mon Sep 17 00:00:00 2001 From: Dorian Lesbre <dorian.lesbre@gmail.com> Date: Sun, 28 Feb 2021 18:20:53 +0100 Subject: [PATCH] More detailed activities and better display --- home/models.py | 18 ++++++++++++++++++ home/static/css/style.css | 6 ++---- home/templates/activites.html | 7 ++++++- home/views.py | 2 +- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/home/models.py b/home/models.py index ade4773..afeac39 100644 --- a/home/models.py +++ b/home/models.py @@ -7,11 +7,28 @@ class InterludesActivity(models.Model): """une activité des interludes (i.e. JDR, murder)...""" title = models.CharField("Titre", max_length=200) duration = models.DurationField("Durée", help_text="format hh:mm:ss") + max_participants = models.PositiveIntegerField( + "Nombre maximum de participants", help_text="0 pour illimité" + ) + min_paricipants = models.PositiveIntegerField( + "Nombre minimum de participants" + ) display = models.BooleanField("Afficher cette activité", default=False) + must_book = models.BooleanField("Nécessite inscription", default=False) host_name = models.CharField("Nom de l'organisateur", max_length=50) host_email = models.EmailField("Email de l'organisateur") description = models.TextField("Description", max_length=2000) + @property + def nb_participants(self) -> str: + if self.max_participants == 0: + return "Illimité" + return "{} - {}".format(self.min_paricipants, self.max_participants) + + def __str__(self): + return self.title + + class InterludesParticipant(models.Model): """un participant aux interludes""" @@ -37,3 +54,4 @@ class ActivityList(models.Model): class Meta: # le couple participant, priority est unique unique_together = (("priority", "participant")) + ordering = ("participant", "priority") diff --git a/home/static/css/style.css b/home/static/css/style.css index a8c81ca..0343cc5 100644 --- a/home/static/css/style.css +++ b/home/static/css/style.css @@ -147,18 +147,16 @@ main a:link { dl { list-style: none; display: grid; - grid-template-columns: 1fr 5fr; + grid-template-columns: 1fr 4fr; } dl dt { grid-column: 1 / span 1; justify-self: end; text-align: right; - margin: 5px 10px; font-weight: bold; - align-self: center; } dl dd { - margin: 5px 5px; + margin: 0 10px; justify-self: start; text-align: left; } diff --git a/home/templates/activites.html b/home/templates/activites.html index 6d7653b..5ea3ffb 100644 --- a/home/templates/activites.html +++ b/home/templates/activites.html @@ -2,6 +2,9 @@ {% block "content" %} <h2>Activités</h2> + <p>Durant tout l'événement, des jeux seront en libre-service et des tables disponibles pour jouer. + Certaines activités (JDRs, murders...) ne pourront se faire qu'avec inscription au vue d'un nombre de places limité. + </p> <p> TODO : planning et infos si vous voulez proposez une activité </p> @@ -11,7 +14,9 @@ <dl> <dt>Durée :</dt><dd>{{ activity.duration }}</dd> <dt>MJ :</dt><dd>{{ activity.host_name }}</dd> - <dt>Description :</dt><dd>{{ activity.description }}</dd> + <dt>Nombre de places :</dt><dd>{{ activity.nb_participants }}</dd> + <dt>Sur inscription :</dt><dd>{% if activity.must_book %} Oui {% else %} Non {% endif %}</dd> + <dt>Description :</dt><dd>{{ activity.description|linebreaksbr }}</dd> </dl> {% endfor %} {% endblock %} \ No newline at end of file diff --git a/home/views.py b/home/views.py index d304e9f..9fc1106 100644 --- a/home/views.py +++ b/home/views.py @@ -5,7 +5,7 @@ from django.urls import reverse from home.models import InterludesActivity def static_view(request, slug): - activities = InterludesActivity.objects.filter(display=True) + activities = InterludesActivity.objects.filter(display=True).order_by("title") return render(request, slug+'.html', {'slug': slug, 'activities': activities}) -- GitLab