Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Dolmen content-type extension : image

Project Description

menhir.contenttype.image provides an image-centered content type for Dolmen based Grok applications.


The menhir.contenttype.image Image content provides a custom schema, extending the IDescriptiveSchema interface, from

>>> from import IDescriptiveSchema
>>> from menhir.contenttype.image import IImage

>>> IImage.isOrExtends(IDescriptiveSchema)

The IImage interface describes the image field, that is to store the uploaded image data. The field comes from dolmen.file:

>>> for attr, doc in IImage.namesAndDescriptions():
...   print attr, ':', doc
image : <dolmen.file.field.ImageField object at ...>


The menhir.contenttype.image Image content uses a ZODB Blob to store the data. The image attribute of the factory class, Image, is a blob property from dolmen.blob:

>>> from menhir.contenttype.image import Image
>>> Image.image
< object at ...>

The instanciation is fairly straightforward:

>>> import os.path
>>> path = os.path.join(os.path.dirname(__file__), 'image.png')

>>> imagefile = open(path)
>>> image = Image(title=u"My Image", image=imagefile)
>>> imagefile.close()

The factory is protected by a common right:

>>> from dolmen.content import require
>>> print require.bind().get(image)


The content registers an icon, thanks to the package:

>>> from zope.component import getMultiAdapter
>>> from zope.publisher.browser import TestRequest

>>> request = TestRequest()
>>> icon = getMultiAdapter((image, request), name="icon")
>>> print icon
<zope.browserresource.icon.IconView object at ...>


The content registers its own index view. It displays the image and a download link. To be able to display the content, we need it persisted in a locatable tree, as the links depend on the urls:

>>> from zope.component.hooks import getSite
>>> site = getSite()
>>> site['image'] = image

We can now summon the view and render it. The view is a Page:

>>> from import Page
>>> index = getMultiAdapter((image, request), name="index")
>>> isinstance(index, Page)

>>> index.update()
>>> print index.content()
<h1>My Image</h1>
<div class="content">
  <p class="download">
    <a href=""
    <span>1 KB</span>
  <div class="image">
    <a href=""
       class="image-link" title="My Image">
      <img src="" />


0.4 (2011-02-14)

  • The schema now inherits from IDescriptiveSchema from and no longer from IBaseContent from dolmen.content. This adds a description attribute along with the already existing title.

0.3 (2011-01-13)

  • Resources are now registered and declared thanks to fanstatic.

0.2 (2010-07-27)

  • Packaging corrections.

0.1 (2010-07-21)

  • Initial release
Release History

Release History

This version
History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
menhir.contenttype.image-0.4.tar.gz (6.9 kB) Copy SHA256 Checksum SHA256 Source Feb 14, 2011

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting