Repository: zestedesavoir/zds-site

Issue:
En-tête profil ne prend pas en compte le param activités forum
**Description du bug**

Dans les paramètres de son profil, on peut activer "Masquer mes activités de forum et commentaires sur mon profil (sauf pour moi et l'équipe de modération) ". Les blocs d'activité forum ne s'affichent alors pas sur le profil, par contre dans l'en-tête on a toujours le nombre de messages, de posts et des liens pour accéder à l'activité forum. Ce qui n'est donc pas cohérent avec le paramètre.

**Comment reproduire ?**

Activer la fonctionnalité sur son profil et regarder en anonyme le rendu.

**Comportement attendu**

La ligne de l'en-tête avec les activités forum ne devrait pas apparaître lorsque l'option évoquée ci-dessus est activée


Discussion:

Resolving patch:
diff --git a/zds/member/views/profile.py b/zds/member/views/profile.py
--- a/zds/member/views/profile.py
+++ b/zds/member/views/profile.py
@@ -51,7 +51,7 @@ def get_object(self, queryset=None):
         # sent through emarkdown parser).
         return get_object_or_404(User, username=unquote(self.kwargs["user_name"]))
 
-    def get_summaries(self, profile):
+    def get_summaries(self, profile, hide_forum_activity):
         """
         Returns a summary of this profile's activity, as a list of list of tuples.
         Each first-level list item is an activity category (e.g. contents, forums, etc.)
@@ -59,6 +59,7 @@ def get_summaries(self, profile):
         Each tuple is (link url, count, displayed name of the item), where the link url can be None if it's not a link.
 
         :param profile: The profile.
+        :param hide_forum_activity: if true, don't populate the values related to forum activity
         :return: The summary data.
         """
         summaries = []
@@ -105,17 +106,18 @@ def get_summaries(self, profile):
         summaries.append(summary)
 
         summary = []
-        if count_post > 0:
-            summary.append(
-                (
-                    reverse_lazy("forum:post-find", args=(profile.user.pk,)),
-                    count_post,
-                    __("message{}").format(pluralize_fr(count_post)),
+        if not hide_forum_activity:
+            if count_post > 0:
+                summary.append(
+                    (
+                        reverse_lazy("forum:post-find", args=(profile.user.pk,)),
+                        count_post,
+                        __("message{}").format(pluralize_fr(count_post)),
+                    )
                 )
-            )
-        else:
-            summary.append((None, 0, __("Aucun message")))
-        if count_topic > 0:
+            else:
+                summary.append((None, 0, __("Aucun message")))
+        if not hide_forum_activity and count_topic > 0:
             summary.append(
                 (
                     reverse_lazy("forum:topic-find", args=(profile.user.pk,)),
@@ -135,8 +137,8 @@ def get_summaries(self, profile):
                     ),
                 )
             )
-
-        summaries.append(summary)
+        if summary:
+            summaries.append(summary)
 
         return summaries
 
@@ -178,11 +180,12 @@ def get_context_data(self, **kwargs):
             and not self.request.user.has_perm("member.change_profile")
         )
         context["content_reactions_count"] = ContentReaction.objects.filter(author=usr).count()
-        context["hide_forum_activity"] = (
+        hide_forum_activity = (
             profile.hide_forum_activity
             and not self.request.user.has_perm("member.change_profile")
             and not profile.user == self.request.user
         )
+        context["hide_forum_activity"] = hide_forum_activity
 
         if self.request.user.has_perm("member.change_profile"):
             sanctions = list(Ban.objects.filter(user=usr).select_related("moderator"))
@@ -195,7 +198,7 @@ def get_context_data(self, **kwargs):
             context["alerts"] = profile.alerts_on_this_profile.all().order_by("-pubdate")
             context["has_unsolved_alerts"] = profile.alerts_on_this_profile.filter(solved=False).exists()
 
-        context["summaries"] = self.get_summaries(profile)
+        context["summaries"] = self.get_summaries(profile, hide_forum_activity)
         return context
 
 


Test patch: