Makina Blog

Le blog Makina-corpus

Les technologies utilisées dans notre GMAO JOB


JOB est un outil qui répond à des problématiques communes à de nombreux corps de métier dès lors que la maintenance est organisée autour d’une équipe sédentaire et d'intervenants mobiles. Voici la liste des outils et bibliothèques open-source utilisés pour la réalisation de cette application : Python, Django, Twitter Bootstrap, etc… Et à la clé deux nouvelles contributions : django-jsignature et django-db-faker.

Interface utilisateur

Toute l'interface utilisateur a été réalisée avec le framework Twitter Bootstrap et les extensions JavaScript avec JQuery.

Twitter Bootstrap est une collection d'outils particulièrement bien adaptée pour la création d'applications métier. Il offre de nombreux composants permettant de réaliser rapidement des interfaces efficaces et responsives : système de grilles, formulaires, boutons, labels et badges, tooltips, barre de navigation, etc.

JQuery, que l'on ne présente plus, est la boîte à outil indispensable du ninja JavaScript, offrant une API cross-browser qui simplifie la manipulation du DOM HTML, la gestion des animations, des événements utilisateur ou encore la création d'interface Ajax.

Découvrez nos formations Ergonomie IHM, HTML5 / CSS3 et JavaScript.

Framework de développement et base de données

Django, The Web framework for perfectionists with deadlines.

Django est un de nos frameworks de développement préféré. Orienté MVC, très bien adapté pour le développement d'application métier, il peut être utilisé avec les principales bases de données SQL du marché, dont PostgreSQL qui a eu notre préférence pour ce projet.

Makina Corpus se positionne depuis des années comme un acteur majeur sur la scène Django française. Découvrez nos formations Python et Django.

Modules Python et Django intéressants

Pour éviter de réinventer la roue à chacun de nos développements, nous utilisons de nombreux modules issus des communautés Python et Django, parmi lesquels : 

  • django_xworkflows : Implémentation de workflows associés aux modèles de données Django. Nous l'utilisons dans JOB pour gérer l'intégralité du cycle de vie d'une intervention de maintenance.
  • django-modeltranslation : Traduire dynamiquement des champs de contenu d'un modèle Django dans plusieurs langues sans modifier la définition initiale des modèles de classes.
  • django-model-utils : Offre des mixins et des outils très utiles pour les modèles de données Django (StatusField et StatusModel, TimeFramedModel, TimeStampedModel, InheritanceManager, PassThroughManager, etc.).
  • django-crispy-forms : Rendu amélioré des formulaires Django en utilisant des framework CSS spécialisés tels que Twitter Bootstrap (qui nous intéresse en premier lieu pour ce projet), Foundation, etc.
  • django-solo : Implémentation du pattern Singleton dans Django, très utile pour la création d'un panneau de configuration dédié à l'application.
  • django-selectable : Création de widget Django avec autocomplétion (basé sur JQuery UI).
  • django-tinymce : Intégration dans Django du célèbre éditeur de texte TinyMCE.
  • google-api-python-client : Binding Python permettant l'accès aux API Google. Nous l'utilisons dans JOB pour synchroniser le planning des interventions de maintenance avec des comptes Google Agenda.
  • django-auth-ldap : Support d'authentification via LDAP pour Django. Nous avons ajouté une synchronisation entre LDAP et Django pour basculer sur l'authentification Django classique en cas de défaillance de l'annuaire.
  • xhtml2pdf : Génération de documents au format PDF à partir de templates HTML et d'instructions de mise en page CSS. L'application JOB utilise cette bibliothèque pour générer les rapports d'intervention remis aux clients ainsi que les documents utiles à la facturation.

Pour améliorer les performances de notre application Django : 

Et pour faciliter le développement ainsi que le debug : 

  • south : Migrations de bases de données pour Django.
  • django_extensions : Offre des commandes Django très utiles (shell_plus, sqldiff, graph models, print_settings, etc…).
  • django-debug-toolbar : Panneau configurable affichant de nombreuses informations sur la requête courante (temps CPU, nombre de requêtes SQL, entêtes HTTP, etc…).

Tests automatisés

… ou comment assurer la maintenance de son application et ajouter sereinement de nouvelles fonctionnalités !

L'ensemble des tests unitaires et fonctionnels de l'application JOB sont rejoués à chaque commit, et si le build ne passe pas les développeurs sont prévenus par email en temps réel avec la sanction à la clé : croissants au prochain petit déj !

Les builds automatiques sont réalisés avec Jenkins, et l'intégration au projet Django est réalisé via django-jenkins.

Un module Django très pratique, factory_boy, permet de créer des jeux de données de tests bien plus faciles à maintenir qu'avec le mécanisme de fixtures disponible dans Django.

Déploiement

Nous déployons les différentes instances de production, de pré-production et de démonstration avec fabric et fabtools. Différentes commandes nous permettent de :

  • Déployer une nouvelle instance (configuration serveur web, base de données, configuration django, …);
  • Mettre à jour une instance existante;
  • Restaurer une sauvegarde (base de données et media).

L'installation des dépendances est réalisée classiquement avec pip dans un virtualenv.

Contributions réalisées dans le cadre du projet

django-jsignature

django-jsignature permet d'utiliser dans Django l'excellent module JQuery jSignature qui permet de capturer une signature manuelle réalisée via le navigateur avec la souris ou dans l'idéal sur un écran tactile. Dans JOB, django-jsignature permet au client de signer un rapport d'intervention qui lui sera transmis dans la foulée par e-mail.

Ce module fournit : 

  • Un champ et un widget de formulaire utilisable directement dans les formulaires Django,
  • Un champ pour les modèles Django qui capture et stocke la signature dans la base de données,
  • Un mixin qui met a disposition deux champs : la signature et la date de signature.
 django-jsignature .JPG

django-db-faker

django-db-faker facilite l'anonymisation des données d'une base de données Django, très utile pour monter une instance de démonstration en repartant d'une base contenant des données réelles de production.

Ce module fournit : 

  • Une classe de base ModelFaker à implémenter dans vos modèles Django pour décrire comment anonymiser tel ou tel champ,
  • Des méthodes basiques d'anonymisation (replacers) traitant les cas les plus courants,
  • Une gestion des dépendances pour traiter l'anonymisation des modèles dans le bon ordre,
  • Des signaux pour réaliser des actions complémentaires avant et après l'anonymisation des données d'un modèle.

Formations associées

Formations Django

Formation Django avancé

À distance (FOAD) Du 9 au 13 décembre 2024

Voir la formation

Formations Python

Formation Python avancé

Nantes Du 8 au 12 avril 2024

Voir la formation

Formations Front end

Formation Développement d'applications JavaScript

Toulouse Du 18 au 20 juin 2024

Voir la formation

Actualités en lien

Image
Django PostgreSQL
07/11/2023

Utiliser des fonctions PostgreSQL dans des contraintes Django

Cet article vous présente comment utiliser les fonctions et les check constraints PostgreSQL en tant que contrainte sur vos modèles Django.

Voir l'article
Image
Encart Django
06/11/2023

Comment migrer vers une version récente de Django ?

Que ce soit pour avoir les dernières fonctionnalités ou les correctifs de sécurité, rester sur une version récente de Django est important pour la pérennité de son projet.

Voir l'article
Image
Agrégateur Geotrek
08/06/2023

Le projet Agrégateur : fusionner des bases de données Geotrek

Le partage et la diffusion des données font partie des problématiques historiques au cœur du projet Geotrek.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus