A miniguide to Dolmen packages

I'm finally starting a long-overdue project which I have decided to do with Dolmen. As usual, I start by studying its source code and the packages that are available for it. By itself it can will get me about 60% with the requirements for my project, so it's a pretty good starting base. I plan to also study and use some of the menhir.* packages, which are pretty good as generic CMS content types. [...]

Migrating content (folders) from Plone 3 to Plone 4 via zexp import

I had a need (and a problem) moving some content from a Zope 2.10/ Plone 3.3 instance to a Zope 2.12/Plone 4 instance. The path I have chosen was that of the least resistence, which for me was exporting the folder I was interested as a zexp file from the old instance and importing it in the new Plone instance. According to some members of the #plone IRC channel, this method of getting content from one zope instance to another is not possible, or at least not supported. [...]

Some issues with zc.recipe.egg's python option

I've recently had to integrate a script/package into a Plone 2.5 buildout that runs on top of Python 2.4. Due to that package's dependence of a sane imaplib (and the one in Python 2.4 is buggy), I had to run the script with python2.6. To make a script run on a different python, you need to do: [myscript] recipe = zc.regipe.egg eggs =      myegg      IMAPClient python = python26 The python26 option is actually the name of a buildout part that configures the python executable path [...]

Can you do this on your shiny Mac?

Probably you can, but you have never done it because you have a shiny interface for everything. I'm talking about this discovery of mine: svn diff | kompare - What it does is to take the output from svn diff and pipe it into Kompare, a merge/diff utility from the KDE Project. I can do this from the command line, straight from the directory that I'm in, and bang! I get a nice graphical overview, complete with the tree structure that I can navigate to see what I'm about to commit. [...]

Generating products outside of the Products.* namespace with ArchGenXML

I'm a die hard in regards to ArchGenXML usage. The number of things to know about when creating new content types for Plone is just too high. Package structure, Zope package registration, content types registration, QuickInstaller registration, GenericSetup profiles, skins registration, workflows, etc. I can go in and do changes to the code, and add to it, but generating it from scratch is a gigantic task, especially for my use case, where I need to start a new project with about 7 content types. [...]

Another cause for buildout failures: system distributed Python

I've had a buildout bootstrap process failure, this time a weird one, perhaps I should document the bug and report it. The latest Ubuntu version which I have installed (Lucid Lynx) comes with a package called python-pkg-resources, which packages pkg_resources, which used to be available only through the setuptools distribution. Buildout's bootstrap.py tries to guess if Setuptools or Distribute are installed by checking the availability of pkg_resources; by guessing wrong it all comes to a crash at the end. [...]

Dear PyPi uploaders: don't use a download URL, upload your package instead!

I think this is the Python Index biggest mistake, the one which makes it unreliable for serious development environments: exposing package entries with no real package files and just a download URL. To see what I'm talking about, just examine the PyPI records for BeautifulSoup or IPython, packages that are very common in buildouts. As soon as the author and publisher of that package has a hosting problem, the developer that uses that package also has a problem. [...]

Test if developer mode is set in Zope 3 and Grok

I've started an application that uses Dolmen, a lightweight CMS built on top of Grok, and I want to be able to "rollup" the megrok.resource files based on the devmode setting that was set in the zope.conf file. After a bit of digging, I came up with this code that tells me the current devmode setting for the running instance: from zope.app.applicationcontrol.applicationcontrol import applicationController from zope.app.applicationcontrol.interfaces import IRuntimeInfo def get_debug_mode():     " [...]

A don't do for internationalizing Django templates

I'm internationalizing a Pinax website and I've encountered this piece of code in a template: <input type="submit" value="{% trans "invite" %}"/> {% blocktrans %}{{ other_user }} to be a friend.{% endblocktrans %} The message ids for this code would be two separate blocks: "invite" and " %{other_user}s to be a friend". Both offer very little in terms of context and make the translators job difficult. Correct, in my point of view, would be the more convoluted form of: [...]

Odd thing in Django: the date filter takes PHP as reference instead of Python

I wonder what possible explanation there is for the behaviour of the date template filter. Uses the same format as PHP's date() function (http://php.net/date) with some custom extensions. I understand where Django comes from, but I think this sort of things should be more aligned with the rest of the Python world. [...]