Administration et back office

Différentes demandes au support nécessitent des interventions sur les données d’APiLos.

Django admin

L’interface d’admin django (back office) est accessible à tous les utilisateurs staff, via l’url /admin L’équipe support est autonome pour réaliser des modifications en base de données manuellement via ce back office.

Si une modification demandée n’est pas possible dans l’admin, il faut arbitrer entre l’évolution de l’interface d’admin, ou la modification en shell de la donnée par un développeur

Lorsque la modification via l’admin prendrait trop de temps à l’équipe support, par exemple lorsqu’il y a beaucoup de volume à modifier, on passe plutôt par un script (shell ou commande)

Détournement d’utilisateurs

La librairie django-hijack permet via l’admin de se connecter au site via le profil d’un utilisateur. C’est utile pour résoudre des problèmes liées aux habilitations des utilisateurs.

Pour détourner un utilisateur, aller dans l’admin à l’adresse admin/users/user/, rechercher l’utilisateur concerné et cliquer sur détourner

Django shell

Pour une modification simple, on peut passer par un shell django via la commande : scalingo --region osc-fr1 -app apilos-siap-production run python manage.py shell

Exemple d’utilisations de shell :

Le support transmet la demande « transférer toutes les conventions du bailleur x (siret 123) au bailleur y (siret 789) ».

La modification sera la suivante :

from bailleurs.models import Bailleur
from programmes.models import Programme

old_bailleur = Bailleur.objects.get(siret="123")
old_bailleur  # Vérifier si le nom correspond

new_bailleur = Bailleur.objects.get(siret="789")
new_bailleur  # Vérifier si le nom correspond

programmes = Programme.objects.filter(bailleur=old_bailleur)
programmes.count()  # Pour s'assurer qu'on a bien filtré
programmes.update(bailleur=new_bailleur)

Django commands

Pour une opération plus complexe, on est amené à écrire une commande django qui sera lancée de la même manière qu’un shell, via python manage.py nom_de_la_commande

Une commande permet de modifier un grand nombre d’entrées avec une gestion des erreurs. Par exemple pour réaliser l’update de status de conventions à partir d’un doc excel fourni par une DDT.

Une commande passe par une pull request qui sera review, mergée et déployée en production. Ce processsus prend plus de temps qu’une modification en shell, mais permet une revue par les autres développeurs. C’est la méthode provilégiée pour toute opération lourde sur les données, pour garantir une relecture.