From 5c59c5f9f71a8335dfb74871bc94cdbdf68848d7 Mon Sep 17 00:00:00 2001 From: Dorian Lesbre <dorian.lesbre@gmail.com> Date: Tue, 9 Mar 2021 17:36:59 +0100 Subject: [PATCH] Beautify profile page + added unregister view --- accounts/templates/profile.html | 42 ++++++++++++++++++++++++++++----- accounts/views.py | 8 +++++++ home/models.py | 7 ++++++ home/static/css/style.css | 4 ++++ home/urls.py | 1 + home/views.py | 13 +++++++++- 6 files changed, 68 insertions(+), 7 deletions(-) diff --git a/accounts/templates/profile.html b/accounts/templates/profile.html index f2d1cd4..285cea4 100644 --- a/accounts/templates/profile.html +++ b/accounts/templates/profile.html @@ -9,17 +9,47 @@ <p>Connecté en tant que {{ user.first_name }} {{ user.last_name }} ({{ user.email }})</p> {% if user.is_superuser %} -<p>Vous avez les droits d'administrateurs. Aller à la <a href="{% url 'admin:index' %}">page d'administration du site</a></p> -{% endif %} +<ul class="messagelist"> +<li class="info">Vous avez les droits d'administrateurs. Aller à la <a href="{% url 'admin:index' %}">page d'administration du site</a></li> +</ul>{% endif %} {% if user.profile.is_registered %} -<p>Vous êtes inscrit à l'événement. <a href="{% url 'inscription' %}">Modifier mon inscription</a>.</p> + <strong>Mon inscription :</strong> + <ul> + <li>{% if user.profile.sleeps %}Inscrit pour dormir sur place{% else %}Ne dors pas sur place{% endif %}</li> + <li>{% if user.profile.mug %}Commande une tasse{% else %}Ne commande pas de tasse{% endif %}</li> + <li>Inscrit à {{ user.profile.nb_meals }} repas.</li> + {% if settings.activities_allocated %} + + {% else %} + {% if my_activities %} + <li>{{ my_activities|length }} activités souhaitées : + <ol> + {% for activity in my_activities %} + <li>{{ activity.activity }}</li> + {% endfor %} + </ol> + </li> + {% else %} + <li>Aucune activité souhaitée</li> + {% endif %} + + {% endif %} + </ul> +<div class="flex"> + + <a class="button" href="{% url 'desinscription' %}">Me désinscrire</a> + <a class="button" href="{% url 'inscription' %}">Modifier mon inscription</a> + {% else %} -<p>Vous n'êtes pas incrit à l'événement : <a href="{% url 'inscription' %}">s'inscrire</a>.</p> + <strong>Vous n'êtes pas incrit à l'événement.</strong><br><br> +<div class="flex"> + <a class="button" href="{% url 'inscription' %}">S'inscrire</a> {% endif %} -<p><a href="{% url 'accounts:update' %}">Modifier mes informations</a></p> -<p><a class="button" href="{% url 'accounts:logout' %}">Déconnexion</a></p> + <a class="button" href="{% url 'accounts:update' %}">Modifier mes informations</a> + <a class="button" href="{% url 'accounts:logout' %}">Déconnexion</a> +</div> {% endblock %} \ No newline at end of file diff --git a/accounts/views.py b/accounts/views.py index a1aaafa..1c65c15 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -14,6 +14,7 @@ from django.shortcuts import render, redirect from accounts.forms import CreateAccountForm, UpdateAccountForm, UpdatePasswordForm from accounts.models import EmailUser from accounts.tokens import email_token_generator +from home.models import ActivityList from site_settings.models import SiteSettings def send_validation_email(request, user, subject, template): @@ -52,6 +53,13 @@ class ProfileView(LoginRequiredMixin, TemplateView): template_name = "profile.html" redirect_field_name = "next" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + my_activities = ActivityList.objects.filter(participant=self.request.user.profile) + context["my_activities"] = my_activities + return context + + class CreateAccountView(View): """Vue pour la creation de compte""" diff --git a/home/models.py b/home/models.py index 54f0593..b6a409c 100644 --- a/home/models.py +++ b/home/models.py @@ -67,6 +67,13 @@ class InterludesParticipant(models.Model): def __str__(self) -> str: return "{} {} ({})".format(self.user.first_name, self.user.last_name, self.school) + @property + def nb_meals(self) -> int: + return ( + self.meal_friday_evening + self.meal_saturday_evening + self.meal_saturday_midday + + self.meal_saturday_morning + self.meal_sunday_midday + self.meal_sunday_morning + ) + class Meta: verbose_name = "participant" diff --git a/home/static/css/style.css b/home/static/css/style.css index 4cabb78..2e0764f 100644 --- a/home/static/css/style.css +++ b/home/static/css/style.css @@ -138,6 +138,10 @@ main p { font-size: 1rem; } +strong { + font-weight: bold; +} + main a:link { text-decoration: underline; color: rgb(62, 62, 255); diff --git a/home/urls.py b/home/urls.py index 2783080..70f8389 100644 --- a/home/urls.py +++ b/home/urls.py @@ -9,6 +9,7 @@ sitemaps = {"static_pages": views.StaticViewSitemap} urlpatterns = [ path('', views.HomeView.as_view(), {"template": "home.html"}, name = 'home'), path('inscription/', views.RegisterView.as_view(), name = 'inscription'), + path('desinscription/', views.UnregisterView.as_view(), name="desinscription"), path('activites/', views.ActivityView.as_view(), {"template":"activites.html"}, name = 'activites'), path('faq/', views.FAQView.as_view(), {"template":"faq.html"}, name = 'FAQ'), path('favicon.ico', RedirectView.as_view(url='/static/imgs/favicon.ico')), diff --git a/home/views.py b/home/views.py index e127793..aece136 100644 --- a/home/views.py +++ b/home/views.py @@ -4,7 +4,7 @@ from django.contrib.sitemaps import Sitemap from django.forms import formset_factory from django.shortcuts import redirect, render from django.urls import reverse -from django.views.generic import UpdateView, TemplateView, View +from django.views.generic import RedirectView, UpdateView, TemplateView, View from home.models import ActivityList, InterludesActivity from home.forms import ActivityForm, BaseActivityFormSet, InscriptionForm @@ -98,6 +98,17 @@ class RegisterView(View): return RegisterUpdateView.as_view()(request) +class UnregisterView(LoginRequiredMixin, RedirectView): + pattern_name = "accounts:profile" + + def get_redirect_url(self, *args, **kwargs): + participant = self.request.user.profile + participant.is_registered = False + participant.save() + messages.success(self.request, "Vous avez été désinscrit") + return reverse(self.pattern_name) + + class StaticViewSitemap(Sitemap): """Vue générant la sitemap.xml du site""" changefreq = 'monthly' -- GitLab