Upload
simone-deponti
View
3.951
Download
1
Embed Size (px)
DESCRIPTION
How to integrate Plone, Satchmo and Pinax to obtain a single integrated system that
Citation preview
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