Development #52949
API, possibilité de définir un attribut du type "profile_image"
0%
Description
Aujourd'hui ça n'est a priori pas possible, dans son formulaire d'édiiton DRF affiche uniquement la case à cocher "photo verified", pas le champ en lui-même, qui est visiblement forcé lecture-seule,
'rest_framework_field_class': serializers.FileField, 'rest_framework_field_kwargs': { 'read_only': True, 'use_url': True, },
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
Actuellement l'API sert l'URL publique de l'image, ce n'est pas suffisant ?
PS: c'est vérifié par ce test https://git.entrouvert.org/authentic.git/tree/tests/test_attribute_kinds.py#n406
Mis à jour par Frédéric Péters il y a environ 3 ans
Ok ticket visiblement pas assez clair, la demande est de pouvoir utiliser l'API pour modifier le contenu du champ.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
Ok j'ai compris, le but c'est de pouvoir poser une image via l'API.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- en lecture, faire comme actuellement servir l'URL (ou hériter de FileField qui fait déjà tout ça)
- en écriture attendre une chaîne base64 la décoder et lui faire passer les contrôles appliqués en front (taille, format, etc..) avant de la sauvegarder
Mis à jour par Marie Kuntz il y a environ 3 ans
Serait-il possible d'avoir un chiffrage pour ce dév ? y a-t-il besoin de mieux définir le périmètre ?
Mis à jour par Valentin Deniaud il y a presque 3 ans
- Fichier 0001-api-allow-changing-profile-image-52949.patch 0001-api-allow-changing-profile-image-52949.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Benjamin Dauvergne a écrit :
- en écriture attendre une chaîne base64 la décoder et lui faire passer les contrôles appliqués en front (taille, format, etc..) avant de la sauvegarder
C'est vraiment nécessaire le base64 ? Sans ça le patch est d'une simplicité attirante (sinon le code à ajouter ressemblera à https://github.com/Hipo/drf-extra-fields/blob/master/drf_extra_fields/fields.py#L38).
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
Valentin Deniaud a écrit :
Benjamin Dauvergne a écrit :
- en écriture attendre une chaîne base64 la décoder et lui faire passer les contrôles appliqués en front (taille, format, etc..) avant de la sauvegarder
C'est vraiment nécessaire le base64 ? Sans ça le patch est d'une simplicité attirante (sinon le code à ajouter ressemblera à https://github.com/Hipo/drf-extra-fields/blob/master/drf_extra_fields/fields.py#L38).
Je veux oui, mais quelle alternative a-t-on ? Sachant que serializers.FileField/ImageField ne fonctionnent pas en JSON (https://www.django-rest-framework.org/api-guide/fields/#file-upload-fields).
Mis à jour par Valentin Deniaud il y a presque 3 ans
- Statut changé de Solution proposée à En cours
Oui compris, nos API c'est du JSON, il ne faut pas faire autre chose. Je vais faire le truc base64.
Mis à jour par Valentin Deniaud il y a presque 3 ans
- Fichier 0001-api-allow-changing-profile-image-52949.patch 0001-api-allow-changing-profile-image-52949.patch ajouté
- Statut changé de En cours à Solution proposée
Voilà avec support de base64, en permettant toujours un PUT normal.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Ok; si un jour on veut s'en servir depuis w.c.s. on reverra ça (ça ne correspond pas à la façon d'encoder les fichiers, là c'est du data URL avec une demi validation, t'aurais pu juste considérer que c'est du base64 sans chercher de préfixe je pense).
Mis à jour par Valentin Deniaud il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit c8c64b6abf4fba23032cf1b9073e74030dd7efed Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Mon Jul 19 15:37:17 2021 +0200 api: allow changing profile image (#52949)
Mis à jour par Valentin Deniaud il y a presque 3 ans
Benjamin Dauvergne a écrit :
Ok; si un jour on veut s'en servir depuis w.c.s. on reverra ça (ça ne correspond pas à la façon d'encoder les fichiers, là c'est du data URL avec une demi validation, t'aurais pu juste considérer que c'est du base64 sans chercher de préfixe je pense).
Ça supporte les deux, data URI et b64 seul, cf les tests.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
Valentin Deniaud a écrit :
Benjamin Dauvergne a écrit :
Ok; si un jour on veut s'en servir depuis w.c.s. on reverra ça (ça ne correspond pas à la façon d'encoder les fichiers, là c'est du data URL avec une demi validation, t'aurais pu juste considérer que c'est du base64 sans chercher de préfixe je pense).
Ça supporte les deux, data URI et b64 seul, cf les tests.
Ok j'ai raté le 'if..base64' dans ma lecture un peu rapide.
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
api: allow changing profile image (#52949)