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 IDescriptiveSchema interface, from dolmen.app.content:
>>> from dolmen.app.content import IDescriptiveSchema >>> from menhir.contenttype.image import IImage >>> IImage.isOrExtends(IDescriptiveSchema) 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.4 (2011-02-14)
The schema now inherits from IDescriptiveSchema from dolmen.app.content 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
Metadata
Release files for menhir.contenttype.image 0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| menhir.contenttype.image-0.4.tar.gz | 6.9 kB | Without provenance | Details |
Release files / menhir.contenttype.image-0.4.tar.gz
| Download URL | menhir.contenttype.image-0.4.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
28c040d6a010ccd7505c64520de02f816d73a6b77a7b7ebe2fe1afcbdacb781b
|
|
BLAKE2b-256 checksum How to use checksums |
cc30a34bca9e585e1c9e08ad1963b48ac7b5cc1d26f6fa5ada068dcd95a68331
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for menhir.contenttype.image 0.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.