zds-site
zds-site copied to clipboard
[WIP] Correction de la taille de l'avatar sur le nouveau profil
L'avatar sur la nouvelle page de profil est plus grand qu'auparavant. Or, les avatars par défaut (Gravatar) n'ont pas vu leur taille changer.
Coverage decreased (-13.8%) to 58.799% when pulling 86618597b04bc77f80dc0bf304a5e269af660108 on Helmasaur:hotfix-avatar-profil into ded5ff94daf7eb3de2528b23a2b7715cb437849a on zestedesavoir:dev.
~~C'était volontaire de remplir tout le bloc si l'avatar le permettait~~
EDIT : Je viens de comprendre le changement, c'est pour éviter d'avoir une image plus grande que de ce qu'on a besoin ?
C'est bien pour la page de profil mais ça risque d'allourdir le chargement des autres pages car par défaut Gravatar envoie une image en 80px, pas 200px. Je propose qu'on modifie la fonction get_avatar_url(self)
pour qu'elle accepte en paramètre optionnel la taille demandée à Gravatar def get_avatar_url(self, gravatar_size=60)
. Par défaut je propose 60 car d'après mes recherches c'est la plus grande taille rencontrée en dehors de la page de profil, après on peut très bien laisser 80, on ne perd pas grand chose.
(Sous Firefox le resize peut faire moche)
(Sous Firefox le resize peut faire moche)
De quel resize parles-tu ?
80->60, par le navigateur
C'est le cas actuellement et je ne vois rien de génant, après peut-être que sur un écran haute résolution c'est différent.
La modification que j'ai faite permet de ne pas avoir ceci :
.
Si je dois changer la taille par défaut en ajoutant un argument, cela signifie que je dois modifier l'appelle de cette méthode pour la page du profile mais je n'ai pas la dernière version du code à jour et je ne suis pas sûr de savoir faire ça correctement. C'est bien dans templates/member/profile.html
?
Actuellement, je vois trois possibilités :
- Modifier
get_avatar_url
pour retourner un object/list avec toutes les tailles (un peu comme les thumbnail) ; - Transformer
get_avatar_url
en templatetag, il prendre l'userid en valeur d'entrée et la width en argument ; - Créer un filtre (toujours dans le dossier templatetag) qui permet d'ajouter la taille de l'image quand il détecte (via la vérification de l'url) l'utilisation d'un gravatar.
Je dirais que la solution la plus simple c'est de créer une fonction get_avatar_url_for_profile
:
def get_avatar_url_for_profile(self):
return self.get_avatar_url(self, 200)
mais c'est un peu moche et pas très souple. Donc je pense qu'on peut partir sur un filtre gravatar_size
qui prend en paramètre la taille en pixel et l'ajoute à l'URL comme propose A-312. J'aime bien cette solution car elle permet de garder la taille en pixel dans le code HTML, ce qui permet de modifier le front sans toucher au back.
La marche à suivre est expliquée ici : https://docs.djangoproject.com/fr/2.2/howto/custom-template-tags/#writing-custom-template-filters
Pourquoi ne pas garder l'idée de l'argument ?
Pourquoi ne pas garder l'idée de l'argument ?
Tu implémentes une nécessité du front dans le back
Pourquoi ne pas garder l'idée de l'argument ?
On ne peut pas appeler une fonction avec des arguments depuis les gabarits (templates). On est donc obligéde créer soit une nouvelle fonction sans paramère, soit un filtre de gabarit, soit un templatetag.
Pourquoi ne pas garder l'idée de l'argument ?
On ne peut pas appeler une fonction avec des arguments depuis les gabarits (templates). On est donc obligéde créer soit une nouvelle fonction sans paramère, soit un filtre de gabarit, soit un templatetag.
C'est techniquement possible si on le fait dans le controller (mais loin d'être adéquat)
Bonjour, avant de lancer la QA, est-ce que je peux avoir un état de cette PR ?
Notamment :
- Est-ce qu'elle est encore en WIP (si oui, ça serait sympa de le marquer dans la PR)
- Est-ce qu'elle est terminée (et la code review concluante) ?
@firm1 le procédé ne convient pas
Il y a un fichier particulier où je dois écrire la fonction ?
Je suppose qu'il faut écrire la fonction dans un nouveau fichier dans le dossier zds/utils/templatetags
J'ai rajouté [WIP]
en attendant que ça soit QA-able, une fois fait tu pourras l'enlever :)
@Helmasaur Volontaire pour poursuivre cette PR ? :)
Reprise par #6398 .