Repository: zestedesavoir/zds-site

Issue:
Commentaires pour les validateurs : obligatoire ou pas ?
1. Créer un article ou un tutoriel
2. Demander la validation.

Dans la modale qui s'ouvre, on a la possibilité de saisir un commentaire pour les validateurs du contenu. On peut valider la modale sans rien saisir dans le champ pour le commentaire, mais la demande de validation n'est alors pas sauvegardée avec le message : *La validation n'a pas été demandée. Vous devez fournir un commentaire aux validateurs.* Ce message émane du [traitement des données saisies dans le formulaire](https://github.com/zestedesavoir/zds-site/blob/dev/zds/tutorialv2/forms.py#L745-L747). Pourtant le champ du formulaire pour le commentaire n'a pas l'attribut `required=True` et dans la définition du modèle des objets `Validation`, [il n'y a pas nécessairement besoin d'un commentaire](https://github.com/zestedesavoir/zds-site/blob/dev/zds/tutorialv2/models/database.py#L1270).

Ma question : est-ce que le commentaire pour les validateurs est obligatoire quand on demande une validation ?

Je voulais initialement passer le `required` du champ pour le commentaire à `True` et éviter qu'on valide le formulaire sans message, mais maintenant je suis confus...




Discussion:
Ça ne me paraît pas nécessaire de forcer à laisser un commentaire pour les validateurs. La présence du champ encourage déjà à le faire et ça me paraît suffisant.

Resolving patch:
diff --git a/zds/tutorialv2/forms.py b/zds/tutorialv2/forms.py
--- a/zds/tutorialv2/forms.py
+++ b/zds/tutorialv2/forms.py
@@ -738,18 +738,8 @@ def __init__(self, content, *args, **kwargs):
     def clean(self):
         cleaned_data = super().clean()
 
-        text = cleaned_data.get("text")
-
         base_error_msg = "La validation n'a pas été demandée. "
 
-        if text is None or not text.strip():
-            error = [_(base_error_msg + "Vous devez fournir un commentaire aux validateurs.")]
-            self.add_error(field="text", error=error)
-
-        elif len(text) < 3:
-            error = _(base_error_msg + "Votre commentaire doit faire au moins 3 caractères.")
-            self.add_error(field="text", error=error)
-
         if self.no_subcategories:
             error = [_(base_error_msg + "Vous devez choisir au moins une catégorie pour votre publication.")]
             self.add_error(field=None, error=error)


Test patch:
diff --git a/zds/tutorialv2/tests/tests_views/tests_content.py b/zds/tutorialv2/tests/tests_views/tests_content.py
--- a/zds/tutorialv2/tests/tests_views/tests_content.py
+++ b/zds/tutorialv2/tests/tests_views/tests_content.py
@@ -1835,15 +1835,6 @@ def test_validation_workflow(self, validation_management):
         # ask validation
         self.assertEqual(Validation.objects.count(), 0)
 
-        result = self.client.post(
-            reverse("validation:ask", kwargs={"pk": tuto.pk, "slug": tuto.slug}),
-            {"text": "", "version": self.tuto_draft.current_version},
-            follow=False,
-        )
-        self.assertEqual(result.status_code, 302)
-        self.assertEqual(Validation.objects.count(), 0)  # not working if you don't provide a text
-        self.assertEqual(validation_management.send.call_count, 0)
-
         result = self.client.post(
             reverse("validation:ask", kwargs={"pk": tuto.pk, "slug": tuto.slug}),
             {"text": text_validation, "version": self.tuto_draft.current_version},