MissawB's picture
Upload folder using huggingface_hub
6a8fee8 verified
Raw
History Blame Contribute Delete
1.97 kB
from django import forms
from django.core.exceptions import ValidationError
import re
class BaseGameForm(forms.Form):
"""Base class for all game-related forms with common validation."""
def clean_text(self, field_name, max_len=150):
text = self.cleaned_data.get(field_name, '').strip()
if not text:
raise ValidationError("Ce champ ne peut pas être vide.")
if len(text) > max_len:
raise ValidationError(f"Le texte est trop long (max {max_len} caractères).")
# Anti-spam / Anti-injection basic
if re.search(r'[<>{}[\]]', text):
raise ValidationError("Caractères spéciaux non autorisés.")
return text
class GameGuessForm(BaseGameForm):
guess = forms.CharField(max_length=100, required=True, label="Votre proposition")
def clean_guess(self):
return self.clean_text('guess', 100)
class VisionQuestForm(BaseGameForm):
description = forms.CharField(max_length=200, required=True, label="Description de l'image")
def clean_description(self):
return self.clean_text('description', 200)
class AniminatorForm(BaseGameForm):
question = forms.CharField(max_length=150, required=True, label="Votre question")
def clean_question(self):
return self.clean_text('question', 150)
class AkinetixAnswerForm(forms.Form):
answer = forms.ChoiceField(choices=[('OUI', 'Oui'), ('NON', 'Non'), ('PEUT-ÊTRE', 'Peut-être')], required=True)
class CustomConfigForm(forms.Form):
whitelist = forms.MultipleChoiceField(required=False)
blacklist = forms.MultipleChoiceField(required=False)
genres_white = forms.MultipleChoiceField(required=False)
genres_black = forms.MultipleChoiceField(required=False)
tags_white = forms.MultipleChoiceField(required=False)
tags_black = forms.MultipleChoiceField(required=False)
mode = forms.ChoiceField(choices=[('all', 'All'), ('white', 'Whitelist')], initial='all')