Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Amélioration de la page de contact #2966

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
104 changes: 81 additions & 23 deletions templates/pages/contact.html
Expand Up @@ -25,56 +25,114 @@ <h1>{% trans "Contact" %}</h1>

{% block content %}
{% set app.site.litteral_name as site_name %}
<h3>{% trans "L'équipe de communication" %}</h3>

<p>
{% blocktrans with email_contact=app.site.email_contact|obfuscate_mailto_top_subject:"Contact communication" %}
Vous pouvez à tout moment joindre l'équipe de communication de {{ site_name }} par courriel via {{ email_contact }}.
{% blocktrans %}
Plusieurs personnes aident au fonctionnement, au développement et à la régulation de {{ site_name }}. Voici chaque groupe avec la liste de leurs membres et un moyen de les contacter. Veuillez noter que les groupes sont dissociés et ne sont pas hiérarchisés, c'est-à-dire qu'appartenir à l'un ne fait jamais appartenir automatiquement à un autre.
{% endblocktrans %}
</p>
{% if app.site.association %}
<h3>{% trans "L'association" %}</h3>
<p>
{% blocktrans with email_association=app.site.association.email|obfuscate_mailto_top_subject:"Contact association" %}
Vous pouvez joindre l'association par courriel via {{ email_association }}.
{% endblocktrans %}
</p>
{% endif %}

<h3>{% trans "Le staff" %}</h3>
<p>
{% blocktrans %}
Le staff est constitué de certains membres du site dont le but est de contrôler le contenu publié sur {{ site_name }}. Ils sont en charge de la modération des messages sur les forums et commentaires, ainsi que de la validation et publication d'articles et/ou de tutoriels de {{ site_name }}.
Les membres faisant partie du Staff sont les suivants :
{% endblocktrans %}
</p>
<p>
{% blocktrans %}
Pour contacter le staff, utilisez le bouton "Signaler" des messages du forum ou <a href="{{ staffs_contact_url }}">envoyez-leur un message privé</a> ! Dans les forums et les zones de commentaires, ils sont reconnaissables facilement grâce à l'étiquette verte "STAFF" en dessous de leur avatar.
{% endblocktrans %}
</p>
<div class="authors">
<ul>
{% if staffs %}
{% if staffs %}
<ul>
{% for member in staffs %}
<li>{% include "misc/member_item.part.html" with avatar=True %}</li>
{% endfor %}
{% else %}
</ul>
{% else %}
<p>
{% trans "Il n'y a pas de membre dans ce groupe." %}
{% endif %}
</ul>
</p>
{% endif %}
</div>

<h3>{% trans "L'équipe de communication" %}</h3>
<p>
{% blocktrans %}
L'équipe de communication gère la communication du site sur les réseaux sociaux et sur la page d'accueil (notamment la partie "A la Une"). Elle a pour but de mettre en avant le contenu et les créations des membres.
{% endblocktrans %}
</p>
<p>
{% blocktrans with email_contact=app.site.email_contact|obfuscate_mailto_top_subject:"Contact communication" %}
Vous pouvez à tout moment joindre cette équipe par courriel via {{ email_contact }} ou <a href="{{ communication_team_contact_url }}">en leur envoyant un message privé</a>.
{% endblocktrans %}
</p>
<div class="authors">
{% if communication_team %}
<ul>
{% for member in communication_team %}
<li>{% include "misc/member_item.part.html" with avatar=True %}</li>
{% endfor %}
</ul>
{% else %}
<p>
{% trans "Il n'y a pas de membre dans ce groupe." %}
</p>
{% endif %}
</div>

<h3>{% trans "L'équipe technique" %}</h3>
<p>
{% blocktrans with repository=app.site.repository %}
L'équipe technique est constituée de certains membres du site dont le but est d'une part de s'assurer que le site reste toujours disponible en ligne, et d'autre part de corriger les bogues rencontrés sur le site ainsi que d'ajouter de nouvelles fonctionnalités.
Des administrateurs systèmes, jusqu'aux designeurs, en passant par les développeurs back-end et intégrateurs front-end, ils s'occupent aussi de la maintenance du <a href="{{ repository }}">dépôt officiel du projet</a>. Les membres faisant partie de l'équipe technique sont les suivants :
Des administrateurs systèmes, jusqu'aux designeurs, en passant par les développeurs back-end et intégrateurs front-end, ils s'occupent aussi de la maintenance du <a href="{{ repository }}">dépôt officiel du projet</a>. Pour rester cohérent et organisé, le projet est orchestré par un Directeur Technique Canidé [DTC] et un Chef de Projet [CdP] (chaque développeur reste néanmoins autonome).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il pourrait être intéressant de linker cela.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui. Ceci dit, ça devient dangereux de linker de la doc qui pourrait changer :s

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ouais mais le problème en mettant un lien vers la documentation, c'est qu'elle bug en ce moment et que l'utilisateur risque de se prendre une 404 !

EDIT pour @pierre-24 : Ça ce n'est pas un problème car on peut linker une version de la doc (par exemple v15.7)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ben sinon on peut résumer les rôles du DTC et du CdP ici. Le premier s'occupe des aspects techniques, le second du suivi du dev.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il y a vraiment besoin de dire ça ?

Directeur Technique Canidé
Chef de Projet

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vu que c'est une page de contact, il me semble intéressant d'expliquer dans quel cas contacter telle(s) personne(s), surtout ici, où les rôles sont plus précis que "communication", "dev" ou "validation".

{% endblocktrans %}
</p>
<p>
{% blocktrans with url_forum=app.site.forum_feedback_users %}
Vous pouvez à tout moment joindre cette équipe <a href="{{ devs_contact_url }}">en leur envoyant un message privé</a> sauf pour les bugs et suggestions, auquel cas il est préférable de créer un sujet dans <a href="{{ url_forum }}">ce forum</a>.
{% endblocktrans %}
</p>
<div class="authors">
<ul>
{% if devs %}
{% if devs %}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tu peut utiliser la forme raccourci {% for %} {% empty %} (voir doc) ici pour faire moins verbeux.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui mais en utilisant ça quand il n'y a rien ça donne <ul><p>Il n'y a pas de membre dans ce groupe.</p></ul> ce qui n'est pas super sémantique. Un avis @sandhose ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Justement, dans l'exemple que je link dans la doc django, ils utilisent la forme <ul><li>Il n'y a pas de membre dans ce groupe.</li></ul>.

C'est cette forme qui est utilisé un peu partout dans le code actuel, et que j'ai l'habitude de voir ailleurs aussi.

<ul>
{% for member in devs %}
<li>{% include "misc/member_item.part.html" with avatar=True %}</li>
{% endfor %}
{% else %}
</ul>
{% else %}
<p>
{% trans "Il n'y a pas de membre dans ce groupe." %}
{% endif %}
</ul>
</p>
{% endif %}
</div>

{% if app.site.association %}
<h3>{% trans "L'association" %}</h3>
<p>
{% url "zds.pages.views.association" as assoc_page %}
{% blocktrans %}
L'association sert à assurer la pérénité du site au niveau financier et est gardienne des valeurs du site. Son conseil d'administration (dont les membres sont listés dessous) sert d'arbitre en cas de désaccord sur les nouvelles fonctionnalités du site. Pour plus d'informations, vous pouvez consulter <a href="{{ assoc_page }}">la page dédiée à l'association</a> !
{% endblocktrans %}
</p>
<p>
{% blocktrans with email_association=app.site.association.email|obfuscate_mailto_top_subject:"Contact association" %}
Vous pouvez joindre l'association par courriel via {{ email_association }} ou les membres du conseil d'administration <a href="{{ assoc_contact_url }}">en leur envoyant un message privé</a>.
{% endblocktrans %}
</p>
<div class="authors">
{% if assoc %}
<ul>
{% for member in assoc %}
<li>{% include "misc/member_item.part.html" with avatar=True %}</li>
{% endfor %}
</ul>
{% else %}
<p>
{% trans "Il n'y a pas de membre dans ce groupe." %}
</p>
{% endif %}
</div>
{% endif %}
{% endblock %}
22 changes: 21 additions & 1 deletion zds/pages/views.py
Expand Up @@ -11,6 +11,7 @@
from django.core.urlresolvers import reverse
from django.template.loader import render_to_string
from django.shortcuts import render
from django.utils.http import urlencode
from zds import settings

from zds.forum.models import Topic
Expand Down Expand Up @@ -119,15 +120,34 @@ def association(request):

def contact(request):
"""Display contact page."""
contact_url = lambda members: reverse('mp-new') + '?' \
+ '&'.join([urlencode({'username': member.username}) for member in members])

staffs = User.objects.filter(
groups__in=Group.objects.filter(
name__contains='staff')).all()

communication_team = User.objects.filter(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quelques remarques :

  • ça serait peut-être une bonne idée de variabiliser ces noms de groupes dans le setting. Je parle de "com", "staff", "dev" et "asso".
  • Tu gagneras quelques requêtes SQL en faisant un User.objects.select_related('profile')..filter(...
  • Et pour faire encore plus mieux, ces quatres requêtes devraient toutes être dans des managers afin que les autres vues puissent en profiter facilement.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ça serait peut-être une bonne idée de variabiliser ces noms de groupes dans le setting. Je parle de "com", "staff", "dev" et "asso".

Du genre ça ?

"groups": {
    "communication_team": "com",
    ... }

Tu gagneras quelques requêtes SQL en faisant un User.objects.select_related('profile')..filter(...

Il suffit juste de rajouter un select_related('profile'), c'est ça ?

Et pour faire encore plus mieux, ces quatres requêtes devraient toutes être dans des managers afin que les autres vues puissent en profiter facilement.

Dans quel module ? utils ou member ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. oui dans ce genre
  2. ouaip c'est ça
  3. je pense que member est tout indiqué

groups__in=Group.objects.filter(
name__contains='com')).all()

devs = User.objects.filter(
groups__in=Group.objects.filter(
name__contains='dev')).all()

assoc = User.objects.filter(
groups__in=Group.objects.filter(
name__contains='asso')).all()

return render(request, 'pages/contact.html', {
'staffs': staffs,
'devs': devs
'staffs_contact_url': contact_url(staffs),
'communication_team': communication_team,
'communication_team_contact_url': contact_url(communication_team),
'devs': devs,
'devs_contact_url': contact_url(devs),
'assoc': assoc,
'assoc_contact_url': contact_url(assoc)
})


Expand Down