Add user signup form and implement signup view; enhance message display in templates
This commit is contained in:
parent
6ab5748cbc
commit
700ab7ecca
8 changed files with 66 additions and 2 deletions
11
base/forms.py
Normal file
11
base/forms.py
Normal 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"]
|
|
@ -37,3 +37,30 @@ a.group {
|
||||||
color: var(--pico-color-zinc-500);
|
color: var(--pico-color-zinc-500);
|
||||||
margin-left: .5em;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
6
base/templates/auth/user_form.html
Normal file
6
base/templates/auth/user_form.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% load form %}
|
||||||
|
{% block content %}
|
||||||
|
<h1>Créer un compte</h1>
|
||||||
|
{% form form %}
|
||||||
|
{% endblock content %}
|
|
@ -57,6 +57,7 @@
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main class="container">
|
<main class="container">
|
||||||
|
{% for message in messages %}<article class="message {{ message.tags }}">{{ message }}</article>{% endfor %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -2,5 +2,8 @@
|
||||||
{% load form %}
|
{% load form %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>Connexion</h1>
|
<h1>Connexion</h1>
|
||||||
|
<p>
|
||||||
|
<a href="{% url "signup" %}">Créer un compte</a>
|
||||||
|
</p>
|
||||||
{% form form submit="Se connecter" %}
|
{% form form submit="Se connecter" %}
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|
|
@ -4,5 +4,6 @@ from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", views.HomePageView.as_view(), name="index"),
|
path("", views.HomePageView.as_view(), name="index"),
|
||||||
|
path("accounts/signup/", views.SignupView.as_view(), name="signup"),
|
||||||
path("accounts/", include("django.contrib.auth.urls")),
|
path("accounts/", include("django.contrib.auth.urls")),
|
||||||
]
|
]
|
||||||
|
|
|
@ -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.base import TemplateView
|
||||||
|
from django.views.generic.edit import CreateView
|
||||||
|
|
||||||
|
from . import forms
|
||||||
|
|
||||||
|
|
||||||
class HomePageView(TemplateView):
|
class HomePageView(TemplateView):
|
||||||
template_name = "index.html"
|
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."
|
||||||
|
|
|
@ -6,6 +6,7 @@ import googleapiclient.discovery
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
from django.db.models import Count, Q
|
from django.db.models import Count, Q
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
|
@ -46,8 +47,9 @@ class GroupUpdateView(OwnerFilterMixin, GroupMixin, UpdateView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class GroupDeleteView(OwnerFilterMixin, GroupMixin, DeleteView):
|
class GroupDeleteView(OwnerFilterMixin, GroupMixin, SuccessMessageMixin, DeleteView):
|
||||||
success_url = "/"
|
success_url = "/"
|
||||||
|
success_message = "Le groupe a été supprimé avec succès."
|
||||||
|
|
||||||
|
|
||||||
class GroupDetailView(MemberFilterMixin, GroupMixin, DetailView):
|
class GroupDetailView(MemberFilterMixin, GroupMixin, DetailView):
|
||||||
|
@ -124,8 +126,9 @@ class GroupRemoveMemberView(View):
|
||||||
return redirect(group)
|
return redirect(group)
|
||||||
|
|
||||||
|
|
||||||
class GroupRemoveGameView(SingleObjectMixin, View):
|
class GroupRemoveGameView(SingleObjectMixin, SuccessMessageMixin, View):
|
||||||
model = models.MusikGame
|
model = models.MusikGame
|
||||||
|
success_message = "Le jeu du %(date)s a été supprimé avec succès."
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return super().get_queryset().filter(group__owner=self.request.user)
|
return super().get_queryset().filter(group__owner=self.request.user)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue