Projet

Général

Profil

Development #39440

solis rsa: récupérer les _links dans une liste de dictionnaire

Ajouté par Thomas Noël il y a plus de 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
31 janvier 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Actuellement rsa_get_information sait récupérer les données liées (_links) si la donnée est un dictionnaire, il faudrait que ça soit aussi le cas si la donnée reçue est une liste de dictionnaire, ce qui est le cas quand information=actions


Fichiers

Révisions associées

Révision 5db20e61 (diff)
Ajouté par Thomas Noël il y a plus de 4 ans

solis: get _links content for a list of dicts (#39440)

Historique

#2

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Description mis à jour (diff)
#3

Mis à jour par Thomas Noël il y a plus de 4 ans

#4

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

C'est très moche mais je valide.

Je suis plus à l'aise avec du code structuré comme cela, qui sépare le boilerplate réutilisable de l'objectif.

def fmap(structure, func):
    if func:
        new_structure = func(structure)
        if new_structure is not None:
            assert isinstance(new_structure, type(structure))
            structure = new_structure
    if isinstance(structure, list):
        return [fmap(elt, func) for elt in structure]
    elif isinstance(structure, dict):
        return {key: fmap(value, func) for key, value in structure.items()}
    else:
        return func(structure)

def fix_links(structure, link_keys=None, base_url=None):
    def fix_link(link):
        href = link['href']
        if base_url:
           # fix href
        link['content'] = ....

    def fix_links_key(d):
        if not isinstance(d, dict):
            return
        if '_links' not in d:
            return
        links = d['rsa_links'] = copy.deepcopy(d['_links'])
        for key in links:
            if not link_keys or key not in link_keys:
                continue
            fix_link(links[key])

    return fmap(structure, fix_links_key)
#5

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)

Benjamin Dauvergne a écrit :

C'est très moche mais je valide.

Ouaip c'est moche mais je fatigue.

commit 5db20e618f0bcb96e6da2a19786869568d150898
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Fri Jan 31 12:19:57 2020 +0100

    solis: get _links content for a list of dicts (#39440)

Je suis plus à l'aise avec du code structuré comme cela, qui sépare le boilerplate réutilisable de l'objectif.

Joli, merci, exercice pour un jour de pluie.

#6

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF