SlideShare a Scribd company logo
C³: Mixing Plone
   and Django
for explosive results!
The requirements

●   a modern e-commerce
    platform
●   with a good contents
    story
●   and advanced
    community features
Plone alone... will get it done?

a good web CMS like Plone has no clue of:
●   e-commerce needs
●   advanced community features
no known Plone extension could convince
us and...
we didn't want to start any new Plone
project with this needs
The quest for a good solution

The Graal should:
●   be python based
    (we ♥ python!)
●   not reinvent the wheel
●   be open source
●   have a community
    behind
    (we ♥ happy customers)
Attack of the ponies

We looked at Django:
●   good and stable since
    years
●   with a strong and
    passionate community
●   had a proven
    ecommerce solution
    and a proven
    community solution
The evil plan
Satchmo, the e-commerce

http://www.satchmoproject.com/
●   feature rich
●   flexible as we needed
●   with a group of people really
    using and improving it
Pinax, the community

http://pinaxproject.com/
●   a suite of modules for community
    purposes
●   reuse what's already there
●   good working example projects included
Why Plone then?

talking about web CMSs:
●   python based
    (we ♥ python!)
●   not reinvent the wheel
●   open source
●   with a community behind
    (we ♥ happy customers)
●   "nothing compares to you"
It's a long way to the top

●   integration, integration, integration
●   choices, choices, choices
looking for sustainable and elegant
solutions
The Plone and Django dance

a coreographer's job
●   Don't stomp on each
    other's feet
●   Don't do the same
    things twice
The dance steps

●   common theming via Diazo
●   don't store the same data
    twice
●   let one see what the other
    does
Ballet's preview
What about the users?

●   CMS users are content
    editors
    ●   they do not mix with the
        common people
●   Users are common
    across Django apps
    ●   but not across Plone
I'm sure I had it somewhere

●   Plone needs to read from
    the database
●   sqlalchemy? Duplication
    of code
To import or not to import
             django.db.models?
It is nobler in the code to suffer:
●   The thousand errors of
    circular dependencies
●   Or to take arms against
    settings.py, and by fixing that
    end them
Hamlet did it wrong
Syncronizing the dancers

●   Django handles the
    transaction trasparently
    via middleware
●   Hook up the right
    methods to Zope's
    transaction machinery
I've got a fever, and the only cure is...
               less code!
●   Sharing the same logic
    between Django and
    Plone views
●   Using django templates
    in Plone
●   That's the python, baby
    (and you just have to
    enjoy it)
Murphy's impedance

Some things we didn't quite
consider
●   Internationalization and language
    selection syncing
●   Linking content between systems
●   Paster vs nginx
Building the launch ramps

●   Single buildout
●   Paster+SQLite for
    development
    ●   Quick, pain-free setup
●   PostgreSQL+nginx+uwsgi for
    deployment
    ●   More robust but also more
        convoluted
Traps and dark pits

●   The Content-Length
    problem
    ●   Aka “Hello nginx, I have
        some bytes for you”
●   Where's that cookie coming
    from?
    ●   An i18n tale of horrors
The duct-taped parts

●   Static files and media files
●   The slow agony of
    settings.py
And in the end... they all lived on
                  github
●   djc.recipe
●   ~collective/collective.django
Towards the infinite, and beyond

●   Integrating users
    (PAS+repoze.who)
●   Making
    development
    faster
●   Managing themes
    and files easily

More Related Content

PDF
Why Plone Will Die
PDF
State Of Zope Linuxtag 2008
PDF
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
PPTX
What's the "right" PHP Framework?
PDF
Metaprogramming Go
PDF
Running a Plone product on Substance D
PDF
PHP Frameworks Review - Mar 19 2015
PDF
Fast Web Applications with Go
Why Plone Will Die
State Of Zope Linuxtag 2008
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
What's the "right" PHP Framework?
Metaprogramming Go
Running a Plone product on Substance D
PHP Frameworks Review - Mar 19 2015
Fast Web Applications with Go

What's hot (20)

PDF
Migrate PHP E-Commerce Site to Go
PPTX
Go from a PHP Perspective
PDF
Stackato v6
PDF
Functional Programming in Clojure
PDF
Performance and Abstractions
PPTX
How to Supercharge your PHP Web API
PDF
Craft Beer & Clojure
PPTX
Functional Programming in PHP
PDF
Elixir intro
PPTX
Zend con 2016 bdd with behat for beginners
PPTX
CPAN Curation
PDF
Python to go
PDF
ES2015 / ES6: Basics of modern Javascript
PDF
SGCE 2015 REST APIs
PDF
Using Telegram to interact with an LED Matrix
PPTX
Build software like a bag of marbles, not a castle of LEGO®
PPTX
Rubykaigi 2017-nishimotz-v6
PDF
Maven - Taming the Beast
PDF
Ruby in office time reboot
PPTX
Lokalise
Migrate PHP E-Commerce Site to Go
Go from a PHP Perspective
Stackato v6
Functional Programming in Clojure
Performance and Abstractions
How to Supercharge your PHP Web API
Craft Beer & Clojure
Functional Programming in PHP
Elixir intro
Zend con 2016 bdd with behat for beginners
CPAN Curation
Python to go
ES2015 / ES6: Basics of modern Javascript
SGCE 2015 REST APIs
Using Telegram to interact with an LED Matrix
Build software like a bag of marbles, not a castle of LEGO®
Rubykaigi 2017-nishimotz-v6
Maven - Taming the Beast
Ruby in office time reboot
Lokalise
Ad

Similar to Mixing Plone and Django for explosive results (20)

PDF
Python in Industry
PDF
Python Django Intro V0.1
PDF
PDF
Pentester++
PDF
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
PPTX
Python Django Basics
PDF
OpenNebulaConf2018 - Our Journey to OpenNebula - Germán Gutierrez - Booking.com
ODP
Introduce Python
PPTX
Prototype4Production Presented at FOSSASIA2015 at Singapore
PDF
Devops For Drupal
ODP
Presentasi jlp
PDF
Super lazy side projects - Hamik Mukelyan
PDF
Devops Devops Devops, at Froscon
PDF
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
PDF
Drupal and Devops , the Survey Results
PPTX
DevOps, Performance Optimization and the Green Life with Magento
PDF
Devops, the future is here, it's just not evenly distributed yet.
ODP
Plomino plone conf2010
PDF
Build, deploy and scale: Django, GraphQL and SPA (DjangoCon EU 2021)
PDF
An introduction to_golang.avi
Python in Industry
Python Django Intro V0.1
Pentester++
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
Python Django Basics
OpenNebulaConf2018 - Our Journey to OpenNebula - Germán Gutierrez - Booking.com
Introduce Python
Prototype4Production Presented at FOSSASIA2015 at Singapore
Devops For Drupal
Presentasi jlp
Super lazy side projects - Hamik Mukelyan
Devops Devops Devops, at Froscon
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Drupal and Devops , the Survey Results
DevOps, Performance Optimization and the Green Life with Magento
Devops, the future is here, it's just not evenly distributed yet.
Plomino plone conf2010
Build, deploy and scale: Django, GraphQL and SPA (DjangoCon EU 2021)
An introduction to_golang.avi
Ad

Mixing Plone and Django for explosive results

  • 1. C³: Mixing Plone and Django for explosive results!
  • 2. The requirements ● a modern e-commerce platform ● with a good contents story ● and advanced community features
  • 3. Plone alone... will get it done? a good web CMS like Plone has no clue of: ● e-commerce needs ● advanced community features no known Plone extension could convince us and... we didn't want to start any new Plone project with this needs
  • 4. The quest for a good solution The Graal should: ● be python based (we ♥ python!) ● not reinvent the wheel ● be open source ● have a community behind (we ♥ happy customers)
  • 5. Attack of the ponies We looked at Django: ● good and stable since years ● with a strong and passionate community ● had a proven ecommerce solution and a proven community solution
  • 7. Satchmo, the e-commerce http://www.satchmoproject.com/ ● feature rich ● flexible as we needed ● with a group of people really using and improving it
  • 8. Pinax, the community http://pinaxproject.com/ ● a suite of modules for community purposes ● reuse what's already there ● good working example projects included
  • 9. Why Plone then? talking about web CMSs: ● python based (we ♥ python!) ● not reinvent the wheel ● open source ● with a community behind (we ♥ happy customers) ● "nothing compares to you"
  • 10. It's a long way to the top ● integration, integration, integration ● choices, choices, choices looking for sustainable and elegant solutions
  • 11. The Plone and Django dance a coreographer's job ● Don't stomp on each other's feet ● Don't do the same things twice
  • 12. The dance steps ● common theming via Diazo ● don't store the same data twice ● let one see what the other does
  • 14. What about the users? ● CMS users are content editors ● they do not mix with the common people ● Users are common across Django apps ● but not across Plone
  • 15. I'm sure I had it somewhere ● Plone needs to read from the database ● sqlalchemy? Duplication of code
  • 16. To import or not to import django.db.models? It is nobler in the code to suffer: ● The thousand errors of circular dependencies ● Or to take arms against settings.py, and by fixing that end them Hamlet did it wrong
  • 17. Syncronizing the dancers ● Django handles the transaction trasparently via middleware ● Hook up the right methods to Zope's transaction machinery
  • 18. I've got a fever, and the only cure is... less code! ● Sharing the same logic between Django and Plone views ● Using django templates in Plone ● That's the python, baby (and you just have to enjoy it)
  • 19. Murphy's impedance Some things we didn't quite consider ● Internationalization and language selection syncing ● Linking content between systems ● Paster vs nginx
  • 20. Building the launch ramps ● Single buildout ● Paster+SQLite for development ● Quick, pain-free setup ● PostgreSQL+nginx+uwsgi for deployment ● More robust but also more convoluted
  • 21. Traps and dark pits ● The Content-Length problem ● Aka “Hello nginx, I have some bytes for you” ● Where's that cookie coming from? ● An i18n tale of horrors
  • 22. The duct-taped parts ● Static files and media files ● The slow agony of settings.py
  • 23. And in the end... they all lived on github ● djc.recipe ● ~collective/collective.django
  • 24. Towards the infinite, and beyond ● Integrating users (PAS+repoze.who) ● Making development faster ● Managing themes and files easily