diff --git a/matmat/forms.py b/matmat/forms.py new file mode 100644 index 00000000..b0860bf1 --- /dev/null +++ b/matmat/forms.py @@ -0,0 +1,58 @@ +# +# Copyright 2025 +# - Maréchal +# +# Ce fichier fait partie du site de l'Association des Étudiants de l'UTBM, +# http://ae.utbm.fr. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License a published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Sofware Foundation, Inc., 59 Temple +# Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +from django import forms +from django.utils.translation import gettext_lazy as _ + +from core.models import User +from core.views.forms import SelectDate + + +class SearchForm(forms.ModelForm): + class Meta: + model = User + fields = [ + "first_name", + "last_name", + "nick_name", + "role", + "department", + "semester", + "promo", + "date_of_birth", + "phone", + ] + widgets = {"date_of_birth": SelectDate} + + quick = forms.CharField(label=_("Last/First name or nickname"), max_length=255) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + for key in self.fields: + self.fields[key].required = False + + @property + def cleaned_data_json(self): + data = self.cleaned_data + if "date_of_birth" in data and data["date_of_birth"] is not None: + data["date_of_birth"] = str(data["date_of_birth"]) + return data diff --git a/matmat/views.py b/matmat/views.py index 18d0c482..732e7e1f 100644 --- a/matmat/views.py +++ b/matmat/views.py @@ -30,15 +30,12 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ from django.views.generic import ListView, View from django.views.generic.detail import SingleObjectMixin -from django.views.generic.edit import FormView -from phonenumber_field.widgets import RegionalPhoneNumberWidget +from django.views.generic.edit import FormMixin, FormView from core.auth.mixins import FormerSubscriberMixin from core.models import User from core.schemas import UserFilterSchema -from core.views.forms import SelectDate - -# Enum to select search type +from matmat.forms import SearchForm class SearchType(Enum): @@ -47,44 +44,6 @@ class SearchType(Enum): QUICK = 3 -# Custom form - - -class SearchForm(forms.ModelForm): - class Meta: - model = User - fields = [ - "first_name", - "last_name", - "nick_name", - "role", - "department", - "semester", - "promo", - "date_of_birth", - "phone", - ] - widgets = { - "date_of_birth": SelectDate, - "phone": RegionalPhoneNumberWidget, - } - - quick = forms.CharField(label=_("Last/First name or nickname"), max_length=255) - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - for key in self.fields: - self.fields[key].required = False - - @property - def cleaned_data_json(self): - data = self.cleaned_data - for key, val in data.items(): - if key in ("date_of_birth", "phone") and val is not None: - data[key] = str(val) - return data - - # Views