Dolmen content-type extension : image
Project description
menhir.contenttype.image provides an image-centered content type for Dolmen based Grok applications.
Schema
The menhir.contenttype.image Image content provides a custom schema, extending the IBaseContent interface, from dolmen.content:
>>> from dolmen.content import IBaseContent >>> from menhir.contenttype.image import IImage >>> IImage.isOrExtends(IBaseContent) True
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 ...>
Factory
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 <dolmen.blob.property.BlobProperty 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 dolmen.app.security right:
>>> from dolmen.content import require >>> print require.bind().get(image) dolmen.content.Add
Icon
The content registers an icon, thanks to the dolmen.app.content 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 ...>
View
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 dolmen.app.layout Page:
>>> from dolmen.app.layout import Page >>> index = getMultiAdapter((image, request), name="index") >>> isinstance(index, Page) True >>> index.update() >>> print index.content() <h1>My Image</h1> <div class="content"> <p class="download"> <a href="http://127.0.0.1/image/++download++image" title="Download">Download</a> — <span>1 KB</span> </p> <div class="image"> <a href="http://127.0.0.1/image/++thumbnail++image.large" class="image-link" title="My Image"> <img src="http://127.0.0.1/image/++thumbnail++image.preview" /> </a> </div> </div>
Changelog
0.1 (2010-07-21)
Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for menhir.contenttype.image-0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bff571fdf25e60e5b747d15dce7a1291035181b033e5a74357b53d2e05674a0 |
|
MD5 | 36cf5db8111851e2e6964c0056e7606c |
|
BLAKE2b-256 | 25fa6ba89a5f4fd3f4a2f57d7bb89b52b153d2120bd0e7e2444aeabae289da19 |