Skip to content. | Skip to navigation

Personal tools
Log in
You are here: Home

Latest Plone Posts

Morepath 0.5(.1) and friends released!

From Planet Plone. Published on Aug 28, 2014.

I've just released a whole slew things of things, the most important is Morepath 0.5, your friendly neighborhood Python web framework with superpowers!

What's new?

There are a a bunch of new things in the documentation, in particular:

Also available is @reg.classgeneric. This depends on a new feature in the Reg library.

There are a few bug fixes as well.

For more details, see the full changelog.

Morepath mailing list

I've documented how to get in touch with the Morepath community. In particular, there's a new Morepath mailing list!

Please do get in touch!

Other releases

I've also released:

  • Reg 0.8. This is the generic function library behind some of Morepath's flexibility and power.
  • BowerStatic 0.3. This is a WSGI framework for including static resources in HTML pages automatically, using components installed with Bower.
  • more.static 0.2. This is a little library integrating BowerStatic with Morepath.

Morepath videos!

You may have noticed I linked to Morepath 0.5.1 before, not Morepath 0.5. This is because I had to as I was using a new youtube extension that gave me a bit too much on readthedocs. I replaced that with raw HTML, which works better. The Morepath docs now include two videos.

  • On the homepage is my talk about Morepath at EuroPython 2014 in July. It's a relatively short talk, and gives a good idea on what makes Morepath different.
  • If you're interested in the genesis and history behind Morepath, and general ideas on what it means to be a creative developer, you can find another, longer, video on the Morepath history page. This was taken last year at PyCon DE, where I had the privilege to be invited to give a keynote speech.

eGenix PyRun - One file Python Runtime 2.0.1 GA

From Planet Plone. Published on Aug 27, 2014.


eGenix PyRun is our open source, one file, no installation version of Python, making the distribution of a Python interpreter to run based scripts and applications to Unix based systems as simple as copying a single file.

eGenix PyRun's executable only needs 11MB for Python 2 and 13MB for Python 3, but still supports most Python application and scripts - and it can be compressed to just 3-4MB using upx, if needed.

Compared to a regular Python installation of typically 100MB on disk, eGenix PyRun is ideal for applications and scripts that need to be distributed to several target machines, client installations or customers.

It makes "installing" Python on a Unix based system as simple as copying a single file.

eGenix has been using the product internally in the mxODBC Connect Server since 2008 with great success and decided to make it available as a stand-alone open-source product.

We provide both the source archive to build your own eGenix PyRun, as well as pre-compiled binaries for Linux, FreeBSD and Mac OS X, as 32- and 64-bit versions. The binaries can be downloaded manually, or you can let our automatic install script install-pyrun take care of the installation: ./install-pyrun dir and you're done.

Please see the product page for more details:

    >>> eGenix PyRun - One file Python Runtime


This is a patch level release of eGenix PyRun 2.0. The major new feature in 2.0 is the added Python 3.4 support.

New Features

  • Upgraded eGenix PyRun to work with and use Python 2.7.8 per default.

Enhancements / Changes

  • Fixed a bug in the license printer to show the correct license URL.

install-pyrun Quick Install Enhancements

eGenix PyRun includes a shell script called install-pyrun, which greatly simplifies installation of PyRun. It works much like the virtualenv shell script used for creating new virtual environments (except that there's nothing virtual about PyRun environments).

With the script, an eGenix PyRun installation is as simple as running:

./install-pyrun targetdir

This will automatically detect the platform, download and install the right pyrun version into targetdir.

We have updated this script since the last release:

  • Updated install-pyrun to default to eGenix PyRun 2.0.1 and its feature set.

For a complete list of changes, please see the eGenix PyRun Changelog.

Please see the eGenix PyRun 2.0.0 announcement for more details about eGenix PyRun 2.0.


Please visit the eGenix PyRun product page for downloads, instructions on installation and documentation of the product.

More Information

For more information on eGenix PyRun, licensing and download instructions, please write to

Enjoy !

Marc-Andre Lemburg,

How to add or change your site's portal tabs

By nguyen from Planet Plone. Published on Aug 26, 2014.

for the UW Oshkosh standard theme

"Mastering Plone" Documentation - A Great Online Resource

By Chrissy Wainwright from Planet Plone. Published on Aug 26, 2014.

MasteringPlone.pngRecently, Philip Bauer and Patrick Gerken of took the outline from their Mastering Plone training and put it online as a training resource.

The great thing about this is that instead of documentation that lists what is available to use, this training walks you through the process of creating a Plone site and setting up custom content.

I am primarily a front-end developer, but have recently been learning python and how to do more back-end development with Plone.  I went through the bits of this Plone Training that I didn’t already know how to do, and found it to be a great resource.  I have already gone back to it a few times to use as a reference.

I did find some small mistakes and typos while working through the training, but fortunately, the code for the training is on Github in the Plone repo. I was able to commit the fixes and see the training updated right away. Anyone that is a Plone Core Contributor can make changes like this.  Philip and Patrick do request that any larger changes be made as a pull-request.

Our new developer, Rob, has also been going through the training, and he was not already familiar with Plone. Since the training is currently more of an outline, it’s not perfect.  But this has allowed Rob to learn even more while working through the parts that didn’t work as expected.

Check out the training at

Tech Behind Search Improvements

By Ed Woodward ( from Planet Plone. Published on Aug 22, 2014.

Over the summer, we have made several improvements to the new version of the site (Rewrite),. One of the biggest improvements was with search. Since we released Rewrite, the performance of search has been a concern.  We did little to improve the speed before the release because of time constraints. It was decided that we needed to revisit it this summer to get things in great shape for the Fall semester.

We implemented the following changes:
  • Cache single word and subject searches - we added Memcached to store some searches.  A cron job is reloading the subject searches into the cache on a regular basis.
  • Pagination on Search Result page - previously we were displaying all of the search results on the same page. This caused a long page render time which made the slow search even slower. We are now displaying 10 items on each page. Books are displayed first since most users are looking for books. When possible, we use the cached search results to return the next page.
  • Improved SQL performance - we tweaked the SQL used for the queries to optimize them.
All of these changes are no-brainers, but have vastly improved search.

Netsight is Recruiting: SysAdmin

By from Planet Plone. Published on Aug 22, 2014.

Netsight are looking for a new full-time Systems Administrator.

Based in the UK, we are one of Bristol's longest running web design and development firms. This is a great opportunity for the right candidate to build a successful career in web software systems administration, and work with a great local company. Find out more about us here.

We are looking for someone with a keen interest in technology, who enjoys spending their time working with computers and operating systems and has no fear of the command line. You'll enjoy solving problems and need to be happy to look things up. You're likely to be working in small teams, so you'll need to be also need to be happy asking colleagues for help when you need it or want to bounce ideas off someone.

You’ll need a good working knowledge of Unix variants and an instinctual awareness of system security considerations (i.e. the ability to understand how an attacker would compromise a system and implement countermeasures), but at the same time balance this with the developers’ and customers’ needs.

On a day-to-day basis you’ll be working alongside our experienced sysadmin, reporting to senior management and the company directors.

We are a pretty relaxed company and have an informal, open-plan office, with a variety of ways to get away from the machines. That said, we need people who can manage their time effectively and take responsibility for the work they are doing.


Required Skills:

Basic pre-requisites:

  • At least 2 years systems administration experience in a commercial web development environment.
  • Good communication skills – this role will become client facing to at least some degree, as you clarify requirements and report progress to members of the clients' organisations. You will also need the ability to work well in small, closely-knit teams (typically of 2 to 4 people) and effectively argue your case when needed.
  • Ability to remain calm when under pressure (i.e. when things break).
  • Based in Bristol with easy transport into the centre. In due course this role may require occasional out-of-hours work.

 General Unix experience - GNU/Linux/FreeBSD/OpenBSD/Solaris etc.:

  • Comfortable with command line only!

  • Remote admin via SSH

  • Mindful of system security (permissions, file system ACLs, passwords, restricted user accounts etc)

  • Shell scripting

  • Must like emacs and dislike vi… j/k ;)

GNU/Linux (preferably apt-based such as Debian/Ubuntu):

  • Installing OS and software, setting up, administering user accounts etc


  • Able to undertake basic network/security maintenance tasks, as and when required

Apache web server:

  • Creating new virtual hosts

  • RewriteRules

  • Setting up a reverse proxy

  • Optional knowledge of optimising Apache for large workloads

Mail server:

  • Experience with SMTP daemons (e.g, Exim)

  • Cyrus Imap daemon

  • SASL auth

  • Spam assassin

  • Mail filtering (e.g. Sieve filters)

Experience with high-uptime server hardware:

  • Knowledge of RAID levels and best application of different RAID set ups.

  • Diagnosing hardware faults

  • IPMI

  • Building and maintaining PCs and servers: Installing memory, CPUs (applying thermal paste, heatsinks etc)


  • DNS - administering DNS records (A, CNAME, MX, TXT etc)

  • IP Subnets

  • Switch management (HP/Cisco)

  • Experience of routing protocols (eg. BGP, OSPF, etc)

  • WiFi

  • OpenVPN

Programming experience:

  • Shell scripting

  • Python scripts

Desirable additional skills/experience:

Experience with the following is desirable but not essential. These technologies form a significant part of our infrastructure, so a willingness (and ability) to learn them is important:

  • Ansible

  • Asterisk

  • Bareos/Bacula

  • Ceph

  • Ejabberd

  • Exim

  • Ganeti

  • HAProxy

  • MySQL/MariaDB/PostgreSQL

  • Nagios

  • Nginx

  • Python

  • Plone


  • Varnish

  • Zope

Bonus Points:

  • 8/16 bit computer games / arcade cabinets:-  maintenance and operation

  • Good working knowledge of scalextric:-  performance optimisation

  • Eating burgers and pizza:-  willingness to accept the Netsight Sysadmin Challenge*

(* Details will be included in successful applicant’s induction pack)


What's in it for you?

  • Starting salary in the region of £20-30K (depending on experience).
  • Laptop and mobile phone.
  • Conference attendance allowance.
  • A relaxed working environment.
  • Share options as you progress (and associated dividends).

Please send your CV to

Sorry, no agents

It's nothing personal. If we need you, we'll call.

Announcing the Plone Conference 2015 selection process

From Planet Plone. Published on Aug 21, 2014.

With Plone Conference 2014 drawing near, it is time to begin planning for our next conference in 2015.

PyDDF Python Sprint 2014

From Planet Plone. Published on Aug 21, 2014.

The following text is in German, since we're announcing a Python sprint in Düsseldorf, Germany.


Der erste PyDDF Python Sprint 2014 in Düsseldorf:

Samstag, 27.09.2014, 10:00-18:00 Uhr
Sonntag, 28.09.2014, 10:00-18:00 Uhr
(Gebäude 25.41, Erdgeschoss, Raum 45) des
ZIM der HHU Düsseldorf


Das Python Meeting Düsseldorf (PyDDF) veranstaltet zusammen mit dem ZIM der Heinrich-Heine-Universität Düsseldorf ein Python Sprint Wochenende im September.

Der Sprint findet am Wochenende 27/28.09.2013 im Seminarraum (Gebäude 25.41, Erdgeschoss, Raum 45) des ZIM der HHU Düsseldorf stattfinden:
Folgende Themengebiete haben wir als Anregung angedacht:
  • Openpyxl
Openpyxl ist eine Python Bibliothek, mit der man Excel 2010 XLSX/XLSM Dateien lesen und schreiben kann.

Charlie ist Co-Maintainer des Pakets und würde gerne an folgenden Themen arbeiten:

- ElementTree Implementation des lxml.etree.xmlfile Moduls (context manager)
- Co-Routines für die Serialisierung
- Python Code-Object-Generierung anhand des Schemas
  • HTTP Audio Streaming für Mopidy
Mopidy ist ein MPD Musikserver, der viele Internet-Streaming-Dienste abonnieren kann, diese jedoch nur über lokale Audiogeräte ausgibt.

Es wäre schön, wenn man auch Internetradios anschließen könnte, wie z.B. die Squeezebox. Es gibt dazu schon ein Ticket, auf dem man vermutlich aufbauen könnte:


Ziel wäre es, eine Mopidy Extension zu schreiben, die dieses Feature umsetzt.
Natürlich kann jeder Teilnehmer weitere Themen vorschlagen, z.B.
  • Kivy (Python auf Android/iOS)
  • RaspberryPi (wir werden ein paar davon mitbringen)
  • FritzConnection (Python API für die Fritzbox)
  • OpenCV (Bilder von Webcams mit Python verarbeiten)
  • u.a.
Alles weitere und die Anmeldung findet Ihr auf der Sprint Seite:
Teilnehmer sollten sich zudem auf der PyDDF Liste anmelden, da wir uns dort koordinieren:
Wir haben nur begrenzten Platz im Seminarraum, daher wäre es gut, wenn wir die ungefähre Anzahl Teilnehmer schon in Vorfeld einplanen könnten. Platz ist für max. 30 Teilnehmer.

Über das Python Meeting Düsseldorf

Das Python Meeting Düsseldorf ist eine regelmäßige Veranstaltung in Düsseldorf, die sich an Python Begeisterte aus der Region wendet.

Einen guten Überblick über die Vorträge bietet unser PyDDF YouTube-Kanal, auf dem wir Videos der Vorträge nach den Meetings veröffentlichen.

Veranstaltet wird das Meeting von der GmbH, Langenfeld, in Zusammenarbeit mit Clark Consulting & Research, Düsseldorf.

Viel Spaß !

Marc-Andre Lemburg,

Published: 2013-03-20
<noscript> <div style="border-top: 1px solid; text-align: center;">Please enable JavaScript to make full use of our web-site. Thank you.</div> </noscript>

How to allow downloading of PloneFormGen saved data

By nguyen from Planet Plone. Published on Aug 20, 2014.

getting around permission issues

How to clone a PloneFormGen form onto another site

By nguyen from Planet Plone. Published on Aug 19, 2014.

There is a not-so-well known feature of PloneFormGen that lets you clone a form easily onto another site. (Cloning a form within the same site is easy via the Actions -> Copy and Actions -> Paste menu items).

The Actions menu contains an "Export" item that creates a .tgz file representing the contents (fields, adapters, etc.) of a form.  

  1. Use the Actions -> Export menu item to create a .tgz file downloaded to your local disk.
  2. On the site where you want to clone this form, create a new form (Add New -> Form Folder)
  3. In the new form, use the Actions -> Import menu item.  
  4. Browse to the .tgz file you created in Step 1, and check the "Remove existing form items?" box to replace everything in the current form with what's in the .tgz file.
  5. Press the Import button.
  6. Review the resulting form; it should be identical to the original form.  You may have to edit date/time fields and uncheck/check the box to show the time fields. 

screen shot of PloneFormGen export-import feature

Note to self: update the PloneFormGen docs with this! at

How to add a simple "captcha" to your /contact-info form

By nguyen from Planet Plone. Published on Aug 19, 2014.

...without having to install a product

Plone News for July

From Planet Plone. Published on Aug 19, 2014.

Summary of Plone News from around the world for the month of July.

New HTTP 1.1 RFCs versus WSGI

From Planet Plone. Published on Aug 19, 2014.

Recently new HTTP 1.1 RFCs were published that obsolete the old HTTP 1.1 RFCs. They are extensively rewritten.

Unfortunately the WSGI PEP 3333 refers to something only made explicit in the old version of the RFCs, but which is much harder to find in the new versions of the RFCs. I thought I'd leave a report of my investigations here so that others who may run into this in the future can find it.

WSGI is a protocol that's like HTTP but isn't quite HTTP. In particular WSGI defines its own iterator-based way to send larger responses out in smaller parts. It therefore cannot deal with so-called "hop-by-hop" headers, which try to control this behavior on a HTTP level. The WSGI spec says a WSGI application must not generate such headers.

This is relevant when you're dealing with a WSGI-over-HTTP proxy. This is a special WSGI application that talks to an underlying HTTP server. It presents itself as a normal WSGI application.

The underlying HTTP server could very well be sending out stuff like such as Transfer-Encoding: chunked. The WSGI spec does not allow a WSGI application to send them out though, so a WSGI proxy must strip these headers out.

So what headers are to be stripped out? The WSGI spec refers to section 13.5.1 in now-obsolete RFC 2616.

This nicely lists hop-by-hop headers:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailers
  • Transfer-Encoding
  • Upgrade

That RFC also says:

"All other headers defined by HTTP/1.1 are end-to-end headers."

and then confusingly:

"Other hop-by-hop headers MUST be listed in a Connection header, (section 14.10) to be introduced into HTTP/1.1 (or later)."

which one is it, HTTP 1.1? I guess that's one of the reasons this text got rewritten.

In the new rewritten version of HTTP 1.1, this list is gone. Instead it specifies for some headers (such as TE and Upgrade) that these should be added to the Connection field. A HTTP proxy can then strip out the headers listed in Connection, and then also strip out Connection itself.

Confusingly, while the new RFC 7230 refers to the concept of 'hop-by-hop' early on, and also say this in the change notes in A.2:

"Also, "hop-by-hop" header fields are required to appear in the Connection header field; just because they're defined as hop- by-hop in this specification doesn't exempt them."

it doesn't actually say any headers are hop-by-hop anywhere else. Instead it mandates some headers should be added to Connection.

But wait: Transfer-Encoding is not to be listed in the Connection header, as it's not hop-by-hop. At least, not anymore. I've seen it described as 'hopX-by-hopY', but not in the RFC. This is, I think, because a HTTP proxy could let these through without having to remove them. But not for a WSGI over HTTP proxy: it MUST remove Transfer-Encoding, as WSGI applications have no such concept.

I think the WSGI PEP should be updated in terms of the new HTTP RFC. It should make explicit that some headers such as Transfer-Encoding must not be specified by a WSGI app, and that no headers that must be listed in Connection can be specified by a WSGI app, or something like that.

Relevant mailing list thread:

Turbocharge your Python prompt and Django shell with IPython Notebook

By Mikko Ohtamaa from Planet Plone. Published on Aug 13, 2014.

IPython is an enhanced Python shell, the shell being the prompt which appears when you start python command in your terminal. IPython comes with notebook flavour, where IPython Notebook presents the modern HTML-based shell for Python. 1. Introduction Python is … Continue reading

Beware of uppercase letters in your config files

By Laurent Lasudry from Planet Plone. Published on Aug 12, 2014.

We got a surprise using a [theme:parameters] variable in the manifest.cfg of one of our Diazo theme. We were defining a parameter like that : isFrontPage = context/@@isFrontPage and then we were using it in the rules : But we got an error after having the Theme installed. And we found […]