First commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
"""
|
||||
Formulaires publics de l'application LOGIS.
|
||||
"""
|
||||
from django import forms
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class ContactForm(forms.Form):
|
||||
"""Formulaire de demande de renseignements sur un bien immobilier.
|
||||
|
||||
Protégé par :
|
||||
- token CSRF Django (automatique)
|
||||
- champ honeypot invisible (doit rester vide)
|
||||
- limitation de débit côté session (5 minutes entre deux envois)
|
||||
"""
|
||||
|
||||
name = forms.CharField(
|
||||
max_length=200,
|
||||
label=_('Nom complet'),
|
||||
widget=forms.TextInput(attrs={
|
||||
'placeholder': _('Votre nom et prénom'),
|
||||
'autocomplete': 'name',
|
||||
}),
|
||||
)
|
||||
email = forms.EmailField(
|
||||
label=_('Adresse email'),
|
||||
widget=forms.EmailInput(attrs={
|
||||
'placeholder': _('votre@email.com'),
|
||||
'autocomplete': 'email',
|
||||
}),
|
||||
)
|
||||
phone = forms.CharField(
|
||||
max_length=30,
|
||||
required=False,
|
||||
label=_('Téléphone'),
|
||||
widget=forms.TextInput(attrs={
|
||||
'placeholder': _('+33 6 XX XX XX XX'),
|
||||
'autocomplete': 'tel',
|
||||
}),
|
||||
)
|
||||
message = forms.CharField(
|
||||
label=_('Message'),
|
||||
widget=forms.Textarea(attrs={
|
||||
'placeholder': _('Votre message, vos questions…'),
|
||||
'rows': 5,
|
||||
}),
|
||||
)
|
||||
property_id = forms.IntegerField(
|
||||
widget=forms.HiddenInput(),
|
||||
required=False,
|
||||
)
|
||||
# Champ honeypot — doit rester vide ; les robots le remplissent
|
||||
website = forms.CharField(
|
||||
required=False,
|
||||
label='',
|
||||
widget=forms.TextInput(attrs={
|
||||
'style': 'position:absolute;left:-9999px;top:-9999px;',
|
||||
'tabindex': '-1',
|
||||
'autocomplete': 'off',
|
||||
'aria-hidden': 'true',
|
||||
}),
|
||||
)
|
||||
|
||||
def clean_name(self):
|
||||
name = self.cleaned_data.get('name', '').strip()
|
||||
if len(name) < 2:
|
||||
raise forms.ValidationError(_('Veuillez indiquer votre nom complet.'))
|
||||
return name
|
||||
|
||||
def clean_message(self):
|
||||
msg = self.cleaned_data.get('message', '').strip()
|
||||
if len(msg) < 10:
|
||||
raise forms.ValidationError(_('Votre message est trop court.'))
|
||||
return msg
|
||||
Reference in New Issue
Block a user