Repository: zestedesavoir/zds-site

Issue:
Rendre les parties marqué comme "a ne pas valider" plus sombre
Bonjour et un énorme merci pour enfin me permettre de ne pas envoyer des chapitres/sections complètes en validation. Ça ma remotive à continuer mon tutoriel !

Ducoup j'ai commencé à "masquer" des chapitres et des sections.

Je voudrais vous faire une suggestion qui m'aiderait vraiment :

Quand on est sur la page principale de notre tuto, il est impossible de savoir quels chapitres/sections son marqué comme "à ne pas valider".

Pourriez vous "assombrir" le CSS des chapitres/sections qui sont marqués comme "à ne pas valider".

Notez que je propose une modification en CSS mais n'importe quel moyen de visualiser le fait que la section n'est "pas à valider" aiderait. La, elles ont toute la même couleur.

C'est ultra pas "important" (je me débrouille) mais si c'est pas si compliqué que ça pour vous, les devs, ça serait bien je pense.

Voila,

Encore un énorme merci pour votre boulot ! :)

Sujet : https://zestedesavoir.com/forums/sujet/10994/rendre-les-parties-marque-comme-a-ne-pas-valider-plus-sombre/
*Envoyé depuis Zeste de Savoir*
Les parties à ne pas valider sont plus sombres
Quand une partie ou un chapitre n'est pas à valider, il apparaît en plus sombre.

Ticket concerné : #4968 

### Contrôle qualité

- Reconstruire le front
- Créer un tutoriel.
- Créer une partie et la mettre en partie non prête à la validation, elle devrait apparaître en plus sombre
- Vérifier que c'est aussi le cas pour un chapitre non prêt à la validation. 
- Vérifier que les parties et les chapitres prêts à être validées ne sont pas affectés.

![screenshot_2018-08-05 s bibliotheque zeste de savoir](https://user-images.githubusercontent.com/12633306/43690948-53c72be6-98e1-11e8-87de-55cf30b567fe.png)

PS : les  extraits sont également affectés par cette modification.


Discussion:

Resolving patch:
diff --git a/zds/tutorialv2/models/versioned.py b/zds/tutorialv2/models/versioned.py
--- a/zds/tutorialv2/models/versioned.py
+++ b/zds/tutorialv2/models/versioned.py
@@ -315,19 +315,21 @@ def update_children(self):
             elif isinstance(child, Extract):
                 child.text = child.get_path(relative=True)
 
-    def get_path(self, relative=False):
+    def get_path(self, relative=False, os_sensitive=True):
         """Get the physical path to the draft version of the container.
         Note: this function rely on the fact that the top container is VersionedContainer.
 
         :param relative: if ``True``, the path will be relative, absolute otherwise.
         :type relative: bool
+        :param os_sensitive: if ```True`` will use os.path.join to ensure compatibility with all OS, otherwise \\
+        will build with ``/``, mainly for urls.
         :return: physical path
         :rtype: str
         """
         base = ''
         if self.parent:
             base = self.parent.get_path(relative=relative)
-        return os.path.join(base, self.slug)
+        return os.path.join(base, self.slug) if os_sensitive else '/'.join([base, self.slug]).strip('/')
 
     def get_prod_path(self, relative=False, file_ext='html'):
         """Get the physical path to the public version of the container. If the container have extracts, then it\
@@ -355,7 +357,7 @@ def get_absolute_url(self):
         :return: url to access the container
         :rtype: str
         """
-        return self.top_container().get_absolute_url() + self.get_path(relative=True) + '/'
+        return self.top_container().get_absolute_url() + self.get_path(relative=True, os_sensitive=False) + '/'
 
     def get_absolute_url_online(self):
         """
@@ -870,6 +872,15 @@ def publish_extracts(self, base_dir, is_js, template, failure_exception):
         self.introduction = None
         self.conclusion = None
 
+    def is_validable(self):
+        """
+        Return ``true`` if the container can be validate ie. (would be in the public version if
+        the content is validate.
+        """
+        if self.parent is not None and not self.parent.is_validable():
+            return False
+        return self.ready_to_publish
+
 
 class Extract:
     """
@@ -1119,6 +1130,9 @@ def get_tree_depth(self):
             depth += 1
         return depth
 
+    def is_validable(self):
+        return self.container.is_validable()
+
 
 class VersionedContent(Container, TemplatableContentModelMixin):
     """


Test patch: