Repository: zestedesavoir/zds-site

Issue:
Le validateur perd le droit de validation lorsque la version change
Comme dit dans le titre,
- Un auteur passe son contenu en validation ;
- Un valido le réserve ;
- L'auteur met à jour la version en validation ;
- Le validateur recoit un MP pour le prévenir, mais doit re-réserver le contenu.

Il serait probablement plus pratique de garder le validateur et d'envoyer un MP pour le prévenir. Non ?

C'est tout con à faire :)



Discussion:
La zep-12 ne règle pas le pb?

Non, on est resté _iso_-prod sur le sujet, même si j'avais effectivement émis l'idée à un moment : 

![screenshot from 2015-10-13 11 44 52](https://cloud.githubusercontent.com/assets/7889675/10451351/e65979d0-719f-11e5-9c2d-5b4f2b26987f.png)

Mais comme je dit, il suffit de repasser l'objet `Validation` à `PENDING_V` au lieu de `PENDING` et le tour est joué :)

Les validateurs se sont-ils plaints à propos de cela ? @SpaceFox @ArnaudCalmettes @firm1

Oui, je m'en suis plaint.

Le 25/10/2015 19:24, Vincent a écrit :

> Les validateurs se sont-ils plaints à propos de cela ? @SpaceFox 
> https://github.com/SpaceFox @ArnaudCalmettes 
> https://github.com/ArnaudCalmettes @firm1 https://github.com/firm1
> 
> —
> Reply to this email directly or view it on GitHub 
> https://github.com/zestedesavoir/zds-site/issues/3076#issuecomment-150951632.

Je remonte cette issue. Cette évolution ne couterait pas grand-chose à développer, semble même plutôt trivial à développer et améliorait grandement un aspect de la validation.

En ce moment, j'ai un contenu en validation. C'est pénible de devoir prévenir mon validateur que j'ai mis à jour le contenu et qu'il doit à nouveau se le réserver (d'ailleurs, ça doit être pénible aussi pour lui).

Il est déjà prévenu automatiquement.

mais effectivement la correction est triviale Pierre l'a déjà donnée 
d'ailleurs.

Le 07/11/2015 12:48, Gérard Paligot a écrit :

> Je remonte cette issue. Cette évolution ne couterait pas grand-chose à 
> développer, semble même plutôt trivial à développer et améliorait 
> grandement un aspect de la validation.
> 
> En ce moment, j'ai un contenu en validation. C'est pénible de devoir 
> prévenir mon validateur que j'ai mis à jour le contenu et qu'il doit à 
> nouveau se le réserver (d'ailleurs, ça doit être pénible aussi pour lui).
> 
> —
> Reply to this email directly or view it on GitHub 
> https://github.com/zestedesavoir/zds-site/issues/3076#issuecomment-154694599.


Resolving patch:
diff --git a/zds/tutorialv2/views/views_validations.py b/zds/tutorialv2/views/views_validations.py
--- a/zds/tutorialv2/views/views_validations.py
+++ b/zds/tutorialv2/views/views_validations.py
@@ -114,12 +114,13 @@ def form_valid(self, form):
         validation.date_proposition = datetime.now()
         validation.comment_authors = form.cleaned_data['text']
         validation.version = form.cleaned_data['version']
+        if old_validator:
+            validation.validator = old_validator
+            validation.status = 'PENDING_V'
         validation.save()
 
         # warn the former validator that an update has been made, if any
         if old_validator:
-            validation.validator = old_validator
-
             bot = get_object_or_404(User, username=settings.ZDS_APP['member']['bot_account'])
             msg = render_to_string(
                 'tutorialv2/messages/validation_change.md',


Test patch:
diff --git a/zds/tutorialv2/tests/tests_views.py b/zds/tutorialv2/tests/tests_views.py
--- a/zds/tutorialv2/tests/tests_views.py
+++ b/zds/tutorialv2/tests/tests_views.py
@@ -1991,8 +1991,8 @@ def test_validation_workflow(self):
 
         # ... Therefore, a new Validation object is created
         validation = Validation.objects.filter(content=tuto).last()
-        self.assertEqual(validation.status, 'PENDING')
-        self.assertEqual(validation.validator, None)
+        self.assertEqual(validation.status, 'PENDING_V')
+        self.assertEqual(validation.validator, self.user_staff)
         self.assertEqual(validation.version, self.tuto_draft.current_version)
 
         self.assertEqual(PublishableContent.objects.get(pk=tuto.pk).sha_validation,
@@ -2000,19 +2000,6 @@ def test_validation_workflow(self):
 
         self.assertEqual(PrivateTopic.objects.last().author, self.user_staff)  # admin has received a PM
 
-        # re-re-reserve (!)
-        result = self.client.post(
-            reverse('validation:reserve', kwargs={'pk': validation.pk}),
-            {
-                'version': validation.version
-            },
-            follow=False)
-        self.assertEqual(result.status_code, 302)
-
-        validation = Validation.objects.filter(pk=validation.pk).last()
-        self.assertEqual(validation.status, 'PENDING_V')
-        self.assertEqual(validation.validator, self.user_staff)
-
         # ensure that author cannot publish himself
         self.assertEqual(
             self.client.login(