Add user signup form and implement signup view; enhance message display in templates

This commit is contained in:
Edgar P. Burkhart 2025-06-14 10:01:45 +02:00
parent 6ab5748cbc
commit 700ab7ecca
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
8 changed files with 66 additions and 2 deletions

11
base/forms.py Normal file
View file

@ -0,0 +1,11 @@
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class UserSignupForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ["username", "email"]

View file

@ -37,3 +37,30 @@ a.group {
color: var(--pico-color-zinc-500);
margin-left: .5em;
}
article.message {
&::before {
margin-right: .5em;
font-family: remixicon;
}
&.debug::before {
content: "\eb06";
color: var(--pico-color-zinc-500);
}
&.info::before {
content: "\ee58";
color: var(--pico-color-indigo-600);
}
&.success::before {
content: "\eb80";
color: var(--pico-color-green-500);
}
&.warning::before {
content: "\eca0";
color: var(--pico-color-amber-200);
}
&.error::before {
content: "\eca0";
color: var(--pico-color-red-500);
}
}

View file

@ -0,0 +1,6 @@
{% extends "base.html" %}
{% load form %}
{% block content %}
<h1>Créer un compte</h1>
{% form form %}
{% endblock content %}

View file

@ -57,6 +57,7 @@
</div>
</header>
<main class="container">
{% for message in messages %}<article class="message {{ message.tags }}">{{ message }}</article>{% endfor %}
{% block content %}
{% endblock content %}
</main>

View file

@ -2,5 +2,8 @@
{% load form %}
{% block content %}
<h1>Connexion</h1>
<p>
<a href="{% url "signup" %}">Créer un compte</a>
</p>
{% form form submit="Se connecter" %}
{% endblock content %}

View file

@ -4,5 +4,6 @@ from . import views
urlpatterns = [
path("", views.HomePageView.as_view(), name="index"),
path("accounts/signup/", views.SignupView.as_view(), name="signup"),
path("accounts/", include("django.contrib.auth.urls")),
]

View file

@ -1,5 +1,17 @@
from django.contrib.auth.models import User
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.base import TemplateView
from django.views.generic.edit import CreateView
from . import forms
class HomePageView(TemplateView):
template_name = "index.html"
class SignupView(SuccessMessageMixin, CreateView):
model = User
form_class = forms.UserSignupForm
success_url = "/"
success_message = "Le compte %(username)s a été créé avec succès."

View file

@ -6,6 +6,7 @@ import googleapiclient.discovery
from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
from django.contrib.messages.views import SuccessMessageMixin
from django.db.models import Count, Q
from django.http import JsonResponse
from django.shortcuts import get_object_or_404, redirect
@ -46,8 +47,9 @@ class GroupUpdateView(OwnerFilterMixin, GroupMixin, UpdateView):
pass
class GroupDeleteView(OwnerFilterMixin, GroupMixin, DeleteView):
class GroupDeleteView(OwnerFilterMixin, GroupMixin, SuccessMessageMixin, DeleteView):
success_url = "/"
success_message = "Le groupe a été supprimé avec succès."
class GroupDetailView(MemberFilterMixin, GroupMixin, DetailView):
@ -124,8 +126,9 @@ class GroupRemoveMemberView(View):
return redirect(group)
class GroupRemoveGameView(SingleObjectMixin, View):
class GroupRemoveGameView(SingleObjectMixin, SuccessMessageMixin, View):
model = models.MusikGame
success_message = "Le jeu du %(date)s a été supprimé avec succès."
def get_queryset(self):
return super().get_queryset().filter(group__owner=self.request.user)