diff --git a/beesgospel/forms.py b/beesgospel/forms.py new file mode 100644 index 0000000..51a22e5 --- /dev/null +++ b/beesgospel/forms.py @@ -0,0 +1,31 @@ +from dajngo import forms +from django.contrib.auth import forms as auth_forms + + +class BootstrapMixin: + required_css_class = "required" + + widget_classes = { + "checkbox": "form-check-input", + "select": "form-select", + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for field in self.fields.values(): + if getattr(field.widget, "_bs_enabled", False): + continue + widgets = getattr(field.widget, "widgets", [field.widget]) + for widget in widgets: + input_type = getattr(widget, "input_type", "") + class_name = self.widget_classes.get(input_type, "form-control") + if "class" in widget.attrs: + widget.attrs["class"] += " " + class_name + else: + widget.attrs.update({"class": class_name}) + + +class LoginForm(BootstrapMixin, auth_forms.AuthenticationForm): + username = forms.EmailField( + widget=forms.EmailInput(attrs={"autofocus": True}), + ) diff --git a/beesgospel/views.py b/beesgospel/views.py new file mode 100644 index 0000000..a96a2e1 --- /dev/null +++ b/beesgospel/views.py @@ -0,0 +1,13 @@ +from django.contrib.auth.mixins import LoginRequiredMixin +from django.views.generic import ListView, TemplateView + +from .models import Membre + + +class EspaceMembresView(LoginRequiredMixin, TemplateView): + template_name = "membres/index.html" + + +class ListeMembresView(LoginRequiredMixin, ListView): + model = Membre + template_name = "membres/liste.html" diff --git a/common/settings.py b/common/settings.py index b5d3dc2..dd44793 100644 --- a/common/settings.py +++ b/common/settings.py @@ -4,6 +4,8 @@ Django settings for beesgospel project. from pathlib import Path +from django.urls import reverse_lazy + # Build paths inside the project like this: BASE_DIR / "subdir". BASE_DIR = Path(__file__).resolve().parent.parent @@ -109,6 +111,8 @@ USE_TZ = True STATIC_URL = "static/" STATIC_ROOT = BASE_DIR / "static" +LOGOUT_REDIRECT_URL = reverse_lazy("presentation") + # Default primary key field type # https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field diff --git a/common/urls.py b/common/urls.py index 4ec1d5f..2056d55 100644 --- a/common/urls.py +++ b/common/urls.py @@ -1,11 +1,16 @@ from django.contrib import admin -from django.urls import path +from django.urls import include, path from django.views.generic import TemplateView +from beesgospel import views + urlpatterns = [ path("admin/", admin.site.urls), + path("accounts/", include("django.contrib.auth.urls")), path("", TemplateView.as_view(template_name="index.html"), name="home"), path("v2", TemplateView.as_view(template_name="index2.html"), name="home"), path("presentation/", TemplateView.as_view(template_name="presentation.html"), name="presentation"), path("contact/", TemplateView.as_view(template_name="contact.html"), name="contact"), + path("membres/", views.EspaceMembresView.as_view(), name="membres"), + path("membres/liste/", views.ListeMembresView.as_view(), name="liste-membres"), ] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..860172b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +django==5.2.* +pillow==11.3.* diff --git a/templates/base.html b/templates/base.html index 3692f54..64d885f 100644 --- a/templates/base.html +++ b/templates/base.html @@ -30,7 +30,7 @@
{{ membre.nom }} {{ membre.prenom }} | +{{ membre.rue }} {{ membre.npa }} {{ membre.localite }} |
+ {{ membre.tel1 }} {{ membre.tel2 }} |
+ {{ membre.email }} | +