First commit

This commit is contained in:
2026-07-20 11:05:07 +02:00
commit b592ab669f
159 changed files with 10294 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
from django import forms
from .models import EnrollmentRequest
class EnrollmentRequestForm(forms.ModelForm):
"""Formulaire public de /communaute/. `website` n'est pas un champ du
modèle (absent de Meta.fields, jamais sauvegardé) honeypot anti-spam
classique : caché par CSS côté template, un humain ne le remplit
jamais, un bot qui remplit tout aveuglément si. Rempli => la vue
ignore silencieusement la soumission, sans message d'erreur (ne pas
indiquer au bot qu'il a été détecté)."""
website = forms.CharField(required=False, widget=forms.HiddenInput)
class Meta:
model = EnrollmentRequest
fields = ['email', 'node_name', 'country', 'message']
widgets = {
'message': forms.Textarea(attrs={'rows': 4}),
}
def is_spam(self) -> bool:
return bool(self.cleaned_data.get('website'))