Python Users Netherlands meeting

published Nov 03, 2010, last modified Nov 04, 2010

Summary of the Python Users Nederland meeting in Arnhem, 3 november 2010.

Rob Gietema: Deco

I will talk about Deco and some more of Plone 4. I work for Four Digits, who organized this PUN. Originally four people, now seven. Since a few years we do only Plone. I myself do mostly front-end development, like integration of the TinyMCE visual editor in Plone.

Plone is a CMS. One of the current problems is creating composite pages. There are add-ons for that, but it is still crufty. Deco is meant to improve that a lot. In 2008 several people came with a proposal for that. Deco as front-end, Blocks as back-end.

Deco is a grid-based system. So you create multiple columns that you can style with CSS. The columns can be filled with tiles. We have structure tiles, like rich text. Also field tiles, like a title, description, list of tags. And application tiles, which can be anything: image, discussion forum, table of contents, multi-file upload.

The idea was good, but there were not a lot of people who wanted to write the javascript needed for that. But I do like to do that. :-)

We sprinted a few times on this. Four Digits hosted the Living Statues Sprint, there was a sprint at the Plone Conference in Bristol last week.

We created a demo website using Deco: http://decobrewery.com/. I will demo that now.

This is mostly for Plone 5, but parts will be available in upcoming Plone 4.x versions.

The parts involved in Deco are currently split over about 14 small python packages.

Create your own tile: an interface class with a schema, a class with a __call__ method that returns some html (can be in an html template), and some zcml to register this and glue everything together.

To do: create more templates for content types, fix bugs.

Want to code on it? Use https://svn.plone.org/svn/plone/plone.app.deco/buildouts/dev

It actually works in IE6 as well!

Reinout van Rees: checkoutmanager

checkoutmanager is a small tool to manage all your checkouts on your whole file system. You have 20 personal projects, 30 client projects, some dotfiles in your home dir. Just manage them all. I created checkoutmanager when I switched to a new laptop. Use it to checkout git, subversion, bazaard, mercurial. Every morning I do a checkoutmanager up to update all checkouts. I do checkoutmanager st to see which files in all my checkouts I forgot to commit. Also checkoutmanager out to see which local commits from git or mercurial I have not pushed to the central server yet. (To do: mention this in the docs.)

See http://pypi.python.org/pypi/checkoutmanager

Roel Bruggink: Subversion pre-commit hooks for pyflakes, pep8

I installed pre-commit hooks on our subversion to disallow commits that go against pyflakes and pep8. I wrote some code that made it possible to add a comment in a file to ignore one or more PEP8 style checks. Hooked it up to TextMate to prevent you from saving a file with PEP8 problems, except when you explicitly specify it with that comment. Handy for those times where you really can't help it. If you want the code, mail me.

Lars van de Kerkhof: Hudson and Fabric

Hudson is a Java tool for continuous integration. It basically just runs a shell script for you and reports the results back. Usually those are test results. We use it for deployment as well, but of course only when the test requirements are met. We let it use Fabric for that. It is tricky to get Fabric to use the correct virtualenv, but we got that working. I also made a way to print a shell script that looks like what Fabric would do for real.

Rob Gietema: XDV/Diaza/Deliverance for theming

XDV uses XSLT to get html from for example Plone and transform and push it into an html template that your designer has created. Nice alternative way to do theming. You can also combine multiple sources, not just from Plone, but from other systems as well at the same time.

Varundev Kashimath: Why do certain products succeed?

Working at TU Delft. We did some research into how long it takes to do a project with Rails and with Django. Rails took longer in this case. Some discussion followed, hard to summarize.