Repository: zestedesavoir/zds-site

Issue:
Profil : rendre la section "Article" de la sidebar plus "logique" 
Source:[Jérôme Deuchnord](http://zestedesavoir.com/forums/sujet/1424/profil-rendre-la-section-article-de-la-sidebar-plus-logique/?page=1#p24490)

---

Hello,

Je me permets une petite suggestion quant à l'affichage de la section _Articles_ de la sidebar : je trouve pour ma part qu'elle manque de « logique » (au sens humain du terme, pas au sens mathématique).

Voici par exemple ce que l'on peut voir sur mon profil au moment où j'écris mon message :

![La section *Articles* de la sidebar](http://i.imgur.com/BXZsNnc.png)

En réalité, j'ai trois articles :
- 2 sont en ligne
- 1 est en attente de validation
- Aucun n'est en cours de rédaction

*_Il faudrait donc revoir un peu cette partie-là pour que la partie *En cours de rédaction_ reflète ce qui l'est réellement. Personnellement, je considère comme en cours de rédaction tout article qui :
- n'est pas en ligne ni en validation
- _ou_ qui est en ligne mais dont une version plus récente, mais pas encore publiée (correctif, toussa), a été enregistrée.**



Discussion:
Il faudrait que je mette plus souvent mes suggestions et rapports de bugs sur Github :/

Nan pas obligé, ca nous permet aussi de filtrer les doublons etc si jamais.
Passer par le forum permet de discuter surtout (pour les évolutions notamment)

Ah, d'accord. :)
Le 28/10/2014 17:53, Eskimon a écrit :

> Nan pas obligé, ca nous permet aussi de filtrer les doublons etc si 
> jamais.
> 
> —
> Reply to this email directly or view it on GitHub 
> https://github.com/zestedesavoir/zds-site/issues/1643#issuecomment-60790077.

Faudrait juste soustraire ceux qui sont en ligne et en bêta à ceux en rédaction au final non ?

Oui. Je suis dessus, PR demain matin.

Le léger souci que j'ai c'est qu'en fait un article est toujours en brouillon.

Il y a pas un moyen de faire une comparaison de dates entre date de publication et date de dernière édition (si une telle donnée existe)

je vais regarder ça, ça me semble assez hard comme solution.

SI jamais un article est « brouillon » et « validation » on fait quoi ? On l'affiche dans les deux ? Ça me semble le mieux.


Resolving patch:
diff --git a/zds/member/models.py b/zds/member/models.py
--- a/zds/member/models.py
+++ b/zds/member/models.py
@@ -186,10 +186,13 @@ def get_validate_articles(self):
 
     def get_draft_articles(self):
         """Get all draft articles of the user."""
-        return Article.objects.filter(
-            authors__in=[
-                self.user],
-            sha_draft__isnull=False).all()
+        return Article.objects\
+            .filter(
+                authors__in=[self.user],
+                sha_draft__isnull=False,
+                sha_validation__isnull=True,
+                sha_public__isnull=True,
+            ).all()
 
     def get_posts(self):
         return Post.objects.filter(author=self.user).all()
diff --git a/zds/member/views.py b/zds/member/views.py
--- a/zds/member/views.py
+++ b/zds/member/views.py
@@ -405,24 +405,23 @@ def articles(request):
     # public, draft or all user's articles.
 
     try:
-        type = request.GET["type"]
+        state = request.GET['type']
     except KeyError:
-        type = None
+        state = None
 
     # Retrieves all articles of the current user.
 
     profile = request.user.profile
-    if type == "draft":
+    if state == 'draft':
         user_articles = profile.get_draft_articles()
-    if type == "validate":
+    elif state == 'validate':
         user_articles = profile.get_validate_articles()
-    elif type == "public":
+    elif state == 'public':
         user_articles = profile.get_public_articles()
     else:
         user_articles = profile.get_articles()
 
-    return render_template("article/member/index.html",
-                           {"articles": user_articles, "type": type})
+    return render_template('article/member/index.html', {'articles': user_articles, 'type': state})
 
 
 # settings for public profile


Test patch: