SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
DES PONEYS À LIBÉRATION.FR
              Mathieu Pillard         Yohan Boniface




Rencontres django-fr, 16 avril 2011
Introduction
●   Projet lancé en décembre 2009
●
    Équipe très réduite (au départ, 2 personnes, ne
    connaissant ni python ni django :-)
●
    Toute une (double) plateforme vieillissante (en
    PHP) et couteuse en place, à maintenir en
    parallèle du remplacement
●   Migration le plus possible brique par brique
État des lieux aujourd'hui
●   On est loin d'avoir fini
●   On utilise django pour :
    ●   Next.liberation.fr (2 millions de pages vues/mois)
    ●   La recherche front (300.000 pages vues/mois)
    ●   La « liseuse » du journal papier sur le web (1 million de pages vues/mois)
    ●   L'API pour accéder à nos données (30 millions de requêtes / mois)
    ●   De la pub et autres trucs divers
●   Architecture ultra-simple car besoins ultra-limités :
    ●   Un frontal, une base de données, et un gros CDN devant qui cache tout
        pour nous
Migration et synchronisation
●   Le “back”, où sont créées les données, n'est pas encore en django
●   Du coup, on synchronise les changements vers notre architecture
    django en quasi-live
●   Fonctionnement :
    ●   Triggers SQL sur toutes les anciennes tables
    ●   Créé des entrées en base dans created/updated/delete_rows
    ●   Vérifié toutes les minutes par un démon
    ●   Table de correspondance anciens modèles <=> nouveaux modèles
    ●   Synchro des fichiers via un autre démon
●   On ne synchronise que dans un sens, pas question d'avoir 2 endroits qui
    écrivent en même temps
●   Gère entre 5.000 et 25.000 update/delete/inserts en base par jour
API
●   On utilise piston – pratiquement le seul choix abouti au
    moment de la mise en place il y a un an
●   On est à peu près REST, mais on triche : c'est du read-only
●   On aime :
    ●   Relative simplicité
    ●   Rapide à mettre en place
●   On aime pas :
    ●   Pas facile de sortir des clous
    ●   Peu maintenu – c'est en train de changer, un « community fork »
        est en train de se mettre en place
Des petites applis par milliers
●   But : refaire notre zone “communautaire” en django - reproduire les
    fonctionnalités existantes
●   Idée : profiter de l'écosystème d'applications django existantes
●   Applications séparées plutôt que Pinax
    ●   Pinax est orienté “clé en main”, pas adapté pour notre besoin
    ●   La 0.9 se fait toujours attendre...
●   Forks de quasi-toutes les applis concernées (~ une douzaine) sur
    https://github.com/liberation
    ●   Réactivité tout en gardant un contrôle
    ●   Rajoute de fonctionnements qui nous manquent et re-versement des
        changements à la communauté
●   Presque tout est fait, mais pas encore en prod, les priorités ont changé en
    cours de route :-)
La slide qu'on(g) savait pas ou la mettre
(et j'ai pas pensé à proposer le sujet de conf assez tôt)


●   La super appli de la mort qu'on adore : django_compressor
●   Gère la concaténation, minification etc de vos fichiers css/js
    automatiquement
●   Transparent pour les développeurs, juste des templatetags à
    rajouter dans les templates, pas de settings compliqués à ajouter
●   Commandes de management optionnelles pour remplir le cache
    en une fois au lieu de générer en live
●   Gère automatiquement les modifications, suffixage pour les
    caches, etc
●   Bien maintenu, documenté et testé
Minute philosophique: machine à café
ou boîte à outils?
●   Beaucoup d'applis django sont construites en mode « plug&play »
    ●   Très avantageux pour des petits sites, génériques, rapidement
    ●   Beaucoup plus compliquer pour intégrer les fonctionnalités dans une
        modélisation déjà existante et plus exigeante
●   Pistes:
    ●   Restreindre le périmètre des applis, les contenir à des fonctionnalités
        cohérentes
    ●   Éviter d'imposer une modélisation (donner le choix du modèle/manager via des
        settings, et proposer des classes abstraites de base)
    ●   Ne pas tenter de gérer la glue entre les applis à l'intérieur des applis (utiliser les
        signaux, laisser les développeurs les utiliser)
Exemple d'appli générique qu'on
aimerait voir plus souvent (1)
Exemple d'appli générique qu'on
aimerait voir plus souvent (2)
Dans project/settings.py :
WIKIMODEL = 'mywikimodel'
WIKIAPPNAME = 'libe'

Dans wikiapp/__init__.py :
from django.db.models.loading import getmodel
from django.conf import settings

def get_model():
   appname = getattr(settings, 'WIKIAPPNAME', 'wikiapp')
   model = getattr(settings, 'WIKIMODEL', 'WikiModel')
   return getmodel(appname, model)

Et ensuite, utilisation de wikiapp.get_model() partout au lieu de
WikiModel. Le projet implémentant l'application peut utiliser sa
propre modélisation, rajouter des champs, méthodes, etc
Conclusion, futur
●   On pensait avoir fini vite, c'était sans compter les autres
    projets à développer, l'ancienne plateforme à maintenir...
●   Prochaines étapes :
    ●   Finir la partie news
    ●   Finir la partie communautaire
    ●   Finir de mettre en place une vraie architecture
    ●   Ça fait beaucoup de finir, mais ca devrait être prêt en septembre
        si tout va bien
    ●   Une fois que tout est la, un back-office propre coté django

Contenu connexe

En vedette

Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesClaude Falguiere
 
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial WaukeshaBomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukeshabombastetralon
 
Андрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в ПитонеАндрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в Питонеotkds
 
Compressor isento de óleo
Compressor isento de óleoCompressor isento de óleo
Compressor isento de óleojcmora01
 
Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010Harald Fratz
 
State of E-Commerce 2013
State of E-Commerce 2013State of E-Commerce 2013
State of E-Commerce 2013Carpathia AG
 
1) all. classi di concorso triennio scolastico 2014-2017
1) all.   classi di concorso triennio scolastico 2014-20171) all.   classi di concorso triennio scolastico 2014-2017
1) all. classi di concorso triennio scolastico 2014-2017ferrerdavo
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal NetzschComparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzschbombastetralon
 
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração InteligenteDesenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligenteadrianobatista.bh
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba LobularComparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobularbombastetralon
 
Fish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect mealFish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect mealJuliet Abisha
 
Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos Ingrid Bispo
 
Um novo modelo de compressor de parafuso para a simulação do sistema de refri...
Um novo modelo de compressor de parafuso para a simulação do sistema de refri...Um novo modelo de compressor de parafuso para a simulação do sistema de refri...
Um novo modelo de compressor de parafuso para a simulação do sistema de refri...Edú Santana
 

En vedette (19)

Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de Nantes
 
06b compressores
06b compressores06b compressores
06b compressores
 
Cpx dlw 2008
Cpx dlw 2008Cpx dlw 2008
Cpx dlw 2008
 
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial WaukeshaBomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
 
Андрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в ПитонеАндрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в Питоне
 
Compressor isento de óleo
Compressor isento de óleoCompressor isento de óleo
Compressor isento de óleo
 
Ivry Diaporama Intervention Jean Jouzel
Ivry Diaporama Intervention Jean JouzelIvry Diaporama Intervention Jean Jouzel
Ivry Diaporama Intervention Jean Jouzel
 
Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010
 
State of E-Commerce 2013
State of E-Commerce 2013State of E-Commerce 2013
State of E-Commerce 2013
 
1) all. classi di concorso triennio scolastico 2014-2017
1) all.   classi di concorso triennio scolastico 2014-20171) all.   classi di concorso triennio scolastico 2014-2017
1) all. classi di concorso triennio scolastico 2014-2017
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal NetzschComparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
 
Apple Compressor Webinar
Apple Compressor WebinarApple Compressor Webinar
Apple Compressor Webinar
 
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração InteligenteDesenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba LobularComparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
 
CAPITULO 6
CAPITULO 6CAPITULO 6
CAPITULO 6
 
Fish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect mealFish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect meal
 
Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos
 
Apresentação tipo j
Apresentação tipo jApresentação tipo j
Apresentação tipo j
 
Um novo modelo de compressor de parafuso para a simulação do sistema de refri...
Um novo modelo de compressor de parafuso para a simulação do sistema de refri...Um novo modelo de compressor de parafuso para a simulação do sistema de refri...
Um novo modelo de compressor de parafuso para a simulação do sistema de refri...
 

Similaire à Des poneys à Liberation.fr

Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsIdean France
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à GitPierre Templier
 
La migration continue vers Symfony
La migration continue vers SymfonyLa migration continue vers Symfony
La migration continue vers SymfonyFrancois Zaninotto
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketmichael_bailly
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...mbrechet
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Yannick Comte
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsChristophe Villeneuve
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nulsMalk Zameth
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 

Similaire à Des poneys à Liberation.fr (20)

Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outils
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à Git
 
La migration continue vers Symfony
La migration continue vers SymfonyLa migration continue vers Symfony
La migration continue vers Symfony
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 

Des poneys à Liberation.fr

  • 1. DES PONEYS À LIBÉRATION.FR Mathieu Pillard Yohan Boniface Rencontres django-fr, 16 avril 2011
  • 2. Introduction ● Projet lancé en décembre 2009 ● Équipe très réduite (au départ, 2 personnes, ne connaissant ni python ni django :-) ● Toute une (double) plateforme vieillissante (en PHP) et couteuse en place, à maintenir en parallèle du remplacement ● Migration le plus possible brique par brique
  • 3. État des lieux aujourd'hui ● On est loin d'avoir fini ● On utilise django pour : ● Next.liberation.fr (2 millions de pages vues/mois) ● La recherche front (300.000 pages vues/mois) ● La « liseuse » du journal papier sur le web (1 million de pages vues/mois) ● L'API pour accéder à nos données (30 millions de requêtes / mois) ● De la pub et autres trucs divers ● Architecture ultra-simple car besoins ultra-limités : ● Un frontal, une base de données, et un gros CDN devant qui cache tout pour nous
  • 4. Migration et synchronisation ● Le “back”, où sont créées les données, n'est pas encore en django ● Du coup, on synchronise les changements vers notre architecture django en quasi-live ● Fonctionnement : ● Triggers SQL sur toutes les anciennes tables ● Créé des entrées en base dans created/updated/delete_rows ● Vérifié toutes les minutes par un démon ● Table de correspondance anciens modèles <=> nouveaux modèles ● Synchro des fichiers via un autre démon ● On ne synchronise que dans un sens, pas question d'avoir 2 endroits qui écrivent en même temps ● Gère entre 5.000 et 25.000 update/delete/inserts en base par jour
  • 5. API ● On utilise piston – pratiquement le seul choix abouti au moment de la mise en place il y a un an ● On est à peu près REST, mais on triche : c'est du read-only ● On aime : ● Relative simplicité ● Rapide à mettre en place ● On aime pas : ● Pas facile de sortir des clous ● Peu maintenu – c'est en train de changer, un « community fork » est en train de se mettre en place
  • 6. Des petites applis par milliers ● But : refaire notre zone “communautaire” en django - reproduire les fonctionnalités existantes ● Idée : profiter de l'écosystème d'applications django existantes ● Applications séparées plutôt que Pinax ● Pinax est orienté “clé en main”, pas adapté pour notre besoin ● La 0.9 se fait toujours attendre... ● Forks de quasi-toutes les applis concernées (~ une douzaine) sur https://github.com/liberation ● Réactivité tout en gardant un contrôle ● Rajoute de fonctionnements qui nous manquent et re-versement des changements à la communauté ● Presque tout est fait, mais pas encore en prod, les priorités ont changé en cours de route :-)
  • 7. La slide qu'on(g) savait pas ou la mettre (et j'ai pas pensé à proposer le sujet de conf assez tôt) ● La super appli de la mort qu'on adore : django_compressor ● Gère la concaténation, minification etc de vos fichiers css/js automatiquement ● Transparent pour les développeurs, juste des templatetags à rajouter dans les templates, pas de settings compliqués à ajouter ● Commandes de management optionnelles pour remplir le cache en une fois au lieu de générer en live ● Gère automatiquement les modifications, suffixage pour les caches, etc ● Bien maintenu, documenté et testé
  • 8. Minute philosophique: machine à café ou boîte à outils? ● Beaucoup d'applis django sont construites en mode « plug&play » ● Très avantageux pour des petits sites, génériques, rapidement ● Beaucoup plus compliquer pour intégrer les fonctionnalités dans une modélisation déjà existante et plus exigeante ● Pistes: ● Restreindre le périmètre des applis, les contenir à des fonctionnalités cohérentes ● Éviter d'imposer une modélisation (donner le choix du modèle/manager via des settings, et proposer des classes abstraites de base) ● Ne pas tenter de gérer la glue entre les applis à l'intérieur des applis (utiliser les signaux, laisser les développeurs les utiliser)
  • 9. Exemple d'appli générique qu'on aimerait voir plus souvent (1)
  • 10. Exemple d'appli générique qu'on aimerait voir plus souvent (2) Dans project/settings.py : WIKIMODEL = 'mywikimodel' WIKIAPPNAME = 'libe' Dans wikiapp/__init__.py : from django.db.models.loading import getmodel from django.conf import settings def get_model(): appname = getattr(settings, 'WIKIAPPNAME', 'wikiapp') model = getattr(settings, 'WIKIMODEL', 'WikiModel') return getmodel(appname, model) Et ensuite, utilisation de wikiapp.get_model() partout au lieu de WikiModel. Le projet implémentant l'application peut utiliser sa propre modélisation, rajouter des champs, méthodes, etc
  • 11. Conclusion, futur ● On pensait avoir fini vite, c'était sans compter les autres projets à développer, l'ancienne plateforme à maintenir... ● Prochaines étapes : ● Finir la partie news ● Finir la partie communautaire ● Finir de mettre en place une vraie architecture ● Ça fait beaucoup de finir, mais ca devrait être prêt en septembre si tout va bien ● Une fois que tout est la, un back-office propre coté django