MissawB's picture
Upload folder using huggingface_hub
1a47355 verified
Raw
History Blame Contribute Delete
5.1 kB
import re
from django import forms
from django.core.exceptions import ValidationError
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 EmojiStreamForm(BaseGameForm):
target_secret = forms.CharField(max_length=150, required=True)
def __init__(self, *args, **kwargs):
if args and "secret" in args[0]:
data = args[0].copy() if hasattr(args[0], "copy") else args[0]
data["target_secret"] = data.pop("secret")
args = (data,) + args[1:]
super().__init__(*args, **kwargs)
def clean_target_secret(self):
return self.clean_text("target_secret", 150)
class ParadoxStreamForm(BaseGameForm):
item_a = forms.CharField(max_length=150, required=True)
item_b = forms.CharField(max_length=150, required=True)
intruder = forms.CharField(max_length=150, required=True)
def __init__(self, *args, **kwargs):
if args:
data = args[0].copy() if hasattr(args[0], "copy") else args[0]
if "t1" in data:
data["item_a"] = data.pop("t1")
if "t2" in data:
data["item_b"] = data.pop("t2")
args = (data,) + args[1:]
super().__init__(*args, **kwargs)
def clean_item_a(self):
return self.clean_text("item_a", 150)
def clean_item_b(self):
return self.clean_text("item_b", 150)
def clean_intruder(self):
return self.clean_text("intruder", 150)
class AgenticRagForm(BaseGameForm):
query = forms.CharField(max_length=200, required=True)
def __init__(self, *args, **kwargs):
if args and "q" in args[0]:
data = args[0].copy() if hasattr(args[0], "copy") else args[0]
data["query"] = data.pop("q")
args = (data,) + args[1:]
super().__init__(*args, **kwargs)
def clean_query(self):
return self.clean_text("query", 200)
class AniminatorForm(BaseGameForm):
question = forms.CharField(max_length=150, required=True, label="Votre question")
def __init__(self, *args, **kwargs):
if args and "q" in args[0]:
data = args[0].copy() if hasattr(args[0], "copy") else args[0]
data["question"] = data.pop("q")
args = (data,) + args[1:]
super().__init__(*args, **kwargs)
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"
)
# --- Vertex AI MLOps Pipelines + Feature Store forms (ported from feature/vertex-pipelines) ---
class VertexPipelineTriggerForm(forms.Form):
pipeline_type = forms.ChoiceField(
choices=[("dpo", "DPO"), ("rag", "RAG"), ("star", "STaR")], required=True
)
min_samples = forms.IntegerField(min_value=1, required=False, initial=100)
class VertexPipelineListForm(forms.Form):
pipeline_name = forms.CharField(max_length=255, required=False)
limit = forms.IntegerField(min_value=1, max_value=100, required=False, initial=20)
class UserIDForm(forms.Form):
user_id = forms.CharField(max_length=100, required=True)
class VertexFeatureStoreForm(forms.Form):
user_id = forms.CharField(max_length=100, required=True)
features = forms.JSONField(required=True)
class ToTStreamForm(forms.Form):
q = forms.CharField(max_length=500, required=True)
breadth = forms.IntegerField(min_value=1, max_value=10, required=False, initial=3)
depth = forms.IntegerField(min_value=1, max_value=10, required=False, initial=3)