Développement #107876
Faire remonter les actions d'édition dans l'api
0%
Description
Au moins pour les fiches dans /@schema /list
Le but est d'avoir des boutons d'action dans les cellules fiche(s)
Le premier problème que je vois c'est que ça ne fonctionne pas comme les actions globales et les sauts. Ces actions n'ont pas de "trigger" et donc il faut trouver un autre moyen de les identifier.
History
Updated by Gael Pasgrimaud 11 days ago
- Status changed from Nouveau to En cours
🤖 Une pull request concernant ce ticket a été ouverte :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/2381
- Titre : WIP: editable actions are now available through api (#107876)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/2381/files
Updated by Frédéric Péters 11 days ago
On a "global-action:identifiant" pour les actions globales et "jump:identifiant" pour les sauts, tu peux juste mettre "edit:identifiant" pour les actions d'édition ? Et dans combo on saura que la forme "edit:identifiant" demandera une redirection plutôt qu'un POST ?
Alternativement il y aurait à modifier le retour pour avoir :
{ "actions": { "edit:identifiant": { "method": "GET", "url": "...." }, ... ...
Ça ferait quelque chose plus facilement extensible (ça demande aussi une adaptation côté combo, mais mineure, de ce type :
trigger_url = card.get('actions', {}).get(trigger_id) if not trigger_url: return JsonResponse({'err': 1, 'err_desc': 'trigger_id not found'}, status=404) + trigger_method = 'post' + if isinstance(trigger_url, dict): + trigger_method = trigger_url.get('method') + trigger_url = trigger_url.get(url)
Updated by Gael Pasgrimaud 11 days ago
Dans mon début de PR j'ai mis: root['actions'][f'link:{item.id}'] = {'label': f'{item.parent.name} ({item.label})'}
Ca fait le job mais ça mets un coup "link: _editable" et si il y en a plus d'une "link: 0". Je n'aime pas ce 0 mais je pourrai me faire à l'idée.
Aussi j'ai mis "link:" qui voudrait dire coté combo qu'on a même pas besoin de passer par <wcs-trigger-button />
. Un simple <a />
suffirai. Et ça fonctionnerai pour n'importe quel autre besoin en GET.
Tu crois nécessaire de passer par combo pour rediriger ensuite ? Je n'ai pas trop regardé le code de l'appel encore mais je vois pas à quoi il servirai dans ce cas.
Updated by Frédéric Péters 11 days ago
Tu crois nécessaire de passer par combo pour rediriger ensuite ? Je n'ai pas trop regardé le code de l'appel encore mais je vois pas à quoi il servirai dans ce cas.
Ça assure un rendu uniforme pour les styles.
Updated by Gael Pasgrimaud 11 days ago
Frédéric Péters a écrit :
Tu crois nécessaire de passer par combo pour rediriger ensuite ? Je n'ai pas trop regardé le code de l'appel encore mais je vois pas à quoi il servirai dans ce cas.
Ça assure un rendu uniforme pour les styles.
Ok pour moi. Dans ce cas il suffirai dans le js d'avoir un if trigger-id.starstwith('link:'): window.location = link
(ici en pyjs.. :)
Et je suis pas sur que item.id
soit ok quand on a plus d'un status avec des actions d'édition, je vais creuser
Updated by Gael Pasgrimaud 10 days ago
Il y a aussi un problème de droit. Si j'ai bien compris, pour les sauts/actions globales il faut avoir autorisé les appels signés et le client d'api est ok.
Mais pour l'action d'édition, si je mets autre chose que "Utilisateur connecté" dans les roles autorisés il me semble que ça ne fonctionne plus.
Potentiel soucis avec WorkflowStatusItem.get_auth
(ici il faut que je creuse plus)
Updated by Frédéric Péters 10 days ago
Il y a aussi un problème de droit.
Ici l'action devrait se retrouver uniquement dans la clé "actions" si l'utilisateur aura le droit de visiter la page d'édition; ça implique que "Restreindre aux fiches accessibles à l’usager connecté" soit cochée (ça passera NameID avec l'uuid de l'utilisateur dans l'appel à l'API, pour identifier qui est l'utilisateur).
(c'est déjà ainsi que ça fonctionne pour les autres)
Updated by Frédéric Péters 3 days ago
- Status changed from Solution proposée to En cours
🤖 Modifications demandées sur la pull request :