Accueil / Blog / Métier / 2013 / Les technologies utilisées dans notre GMAO JOB

Les technologies utilisées dans notre GMAO JOB

Par Sylvain Boureliou publié 19/11/2013
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.
Les technologies utilisées dans notre GMAO JOB

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-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.

les-technologies-utilisees-dans-notre-gmao-job-django-jsignature.png

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.
ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Formation Django initiation à Toulouse du 13 au 15 mars Formation Django initiation à Toulouse du 13 au 15 mars 26/01/2017

Entrez de plain-pied dans l'univers de Django aux côtés de développeurs ayant une expérience de ...

Retour sur la PyConFr 2016 Retour sur la PyConFr 2016 18/10/2016

Nous étions présents à Rennes pour PyConFr 2016. Voici notre compte-rendu à chaud.

Wagtail: How to use the Page model and its manager (part 2) Wagtail: How to use the Page model and its manager (part 2) 08/08/2016

The Page model has several methods specific to Wagtail. This is also the case of its manager. We ...

Wagtail : How to make your own content type models (part 1) Wagtail : How to make your own content type models (part 1) 29/07/2016

We are used to initialize our CMS directly from a web interface, often including lots of complex ...

Presentation of the latest Django CMS: Wagtail Presentation of the latest Django CMS: Wagtail 22/07/2016

Wagtail is a quite recent Django CMS. However, its young age does not keep it from having a lot of ...