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.