23/02/2017 - Un regain d'activité pour Django-Angular

Django-angular est une collection d'outils qui facilite l'intégration d'AngularJS et de Django en fournissant des composants réutilisables.
Un des points forts du projet : il facilite la création et la gestion de formulaires via AngularJS en front-end tout en se servant des modèles et templates de Django pour générer ces formulaires.

Fin décembre 2016, nous avons décidé d’accélérer les contributions sur ce projet. En effet, Adrien Brunet, l’un des contributeurs du projet nous a rejoints.

En plus du tri/nettoyage de tickets et autres revues de code, nous avons : 

  1. Ajouté le support pour les messages Django, 
  2. Abandonné le support pour Django1.7 au profit de Django1.10. 
  3. Ajouté le support pour bootstrap 4. 

Les paragraphes suivants détaillent plus précisément ces changements.

  1. Avec le framework Django, vous avez la possibilité de fournir des messages en cas de succès ou d'échec après la validation de formulaire par exemple. Pour afficher ces messages, vous devez rendre la page web côté serveur et l'afficher dans le navigateur. Avec l'approche d'AngularJS, la tendance est plus aux applications en une page (SPA), le rendu d'une page entière côté serveur n'est pas vraiment une option. Il se trouve qu'un contributeur a déjà proposé le code nécessaire pour avoir cette fonctionnalité en AngularJS en utilisant le code de Django avec l'utilisation d'un middleware mais cette contribution datait d'il y a deux ans, et beaucoup de code avait changé depuis.Nous avons donc repris, dépoussiéré et actualisé ce code pour qu'il soit compatible avec la version actuelle de la librairie.
     
  2. Django 1.11 sortira en Avril 2017, quelques corrections seront nécessaires pour faire fonctionner django-angular avec cette dernière version. Après avoir vérifié la compatibilité avec Django 1.11, nous avons réalisé que Django 1.10 n'était pas réellement supporté par la librairie. En effet, nous savions que django-angular "marchait" avec Django 1.10 car nous l'avions déjà constaté sur des projets mais... la matrice de tests n'incluait pas Django 1.10. L’ajout de Django 1.10 dans notre matrice tox n’a pas suffi  Nous avons dû mettre à jour un grand nombre de tests à cause de fonctionnalités dépréciées qui ont été retirées de cette dernière version. Nous avons pris la décision d'arrêter le support pour Django 1.7, lui-même déprécié par Django. Au bout du compte, nous avons réussi à ajouter officiellement Django 1.11 à la liste de compatibilité du projet. La migration vers Django 1.11 n'en sera que plus facile.
     
  3. Un utilisateur a demandé d'ajouter le support pour Bootstrap 4 début décembre 2016, Bootstrap 3 ayant été officiellement déprécié fin 2016. Django-angular utilisait donc une librairie dépréciée. La migration était nécessaire. Un certain nombre de personnes continue cependant d'utiliser bootstrap 3 plutôt que 4 ce qui explique peut-être que peu de personnes ait demandé cette fonctionnalité mais nous pouvons être sûrs que les mois passant, le support pour bootstrap 4 prendra le pas sur le support de bootstrap 3.

Nous avons dû réécrire plusieurs fichiers dans leur intégralité en raison du choix hasardeux de nom au sein des dossiers ou même du code : beaucoup de référence à "bootstrap" appelait bootstrap3 directement. Nous avons rendu cela configurable et désormais l'ajout de support pour d’autres librairies est simplifié.

Nous sommes toujours dans l'attente de retour utilisateur pour inclure définitivement cette amélioration dans le projet mais la majorité du travail est maintenant accomplie.

Après ces diverses corrections de bugs et l’ajout de ces nouvelles features, nous avons drastiquement réduit le nombre de problèmes signalés sur la librairie et avons même ajouté de nouvelles fonctionnalités.

Dans les semaines à venir, nous concentrerons vraisemblablement nos efforts sur un autre projet plus générique. En effet, django-angular utilise une approche permettant d'intégrer des fonctionnalités de Django au sein d'AngularJS mais il reste un couplage back-front assez fort. On pourrait séparer ces derniers plus nettement tout en conservant la connexion entre les deux à travers une API (même pour la génération de formulaire). C'est ce que le projet drf-schema-adapter nous promet, avec la possibilité d’utiliser de nombreuses technologies front-end, que ce soit AngularJS, React, Ember ou autres… 

Nous verrons comment y contribuer dans les semaines à venir !