Adaptable string interpolation
Project description
Provides ${id} style string interpolation using named adapters to look up variables. This is meant to provide a trivially simple template system for clients like plone.app.contentrules.
To interpolate a string in context, just follow the pattern:
from plone.stringinterp.interfaces import IStringInterpolator IStringInterpolator(context)("Here is the title: ${title}")
Substitution of variables that are part of the Dublin Core are provided with the package. To provide additional substitutions, provide a named adapter implementing interfaces.IStringSubstitution for your context. The adapter name is used for the lookup.
You can also wrap your context with IContextWrapper adapter if you need to pass custom messages within your substitutions.
Implemented Substitutions
All Content
id
parent_id
url
parent_url
Minimal Dublin Core
title
description
type (content type)
Workflow Aware
review_state
review_state_title
Dublin Core
creator
creator_fullname
creator_email
creators
creators_emails
contributors
contributors_emails
subject
format (mime type)
language
rights
identifier
Catalogable Dublin Core
Everything should be in long local time format
created
effective
expires
modified
Member / Group Information for roles on content
owner_emails
reviewer_emails
manager_emails
member_emails
user_email
Current User Information
user_fullname
user_id
Last Change (workflow or version) Information
change_comment
change_title
change_type
change_authorid
Source Code
Contributors please read the document Process for Plone core’s development
Sources and issue tracker are at the Plone code repository hosted at Github.
Changelog
2.0.0 (2023-03-21)
Breaking changes:
pyupgrade, drop support for Python < 3.8. isort, black, manual edits. Fix deprecation warnings for imports from Products.CMFPlone. Import and depend from plone.base. (#15)
1.3.3 (2020-09-07)
Bug fixes:
Resolve deprecation warning [gforcada] (#14)
1.3.2 (2020-04-22)
Bug fixes:
Minor packaging updates. (#1)
1.3.1 (2018-11-04)
Bug fixes:
The Format accessor should actually return the format attribute (see plone/Products.CMFPlone#2540) [ale-rt]
1.3.0 (2018-09-28)
New features:
Add support for Python 3. [pbauer]
1.2.1 (2016-11-18)
New features:
Removed ZopeTestCase. [maurits]
1.2 (2016-09-20)
New features:
Provide a ContextWrapper adapter in order to easily pass custom messages to StringInterpoator [avoinea]
1.1.4 (2016-08-18)
Bug fixes:
Use zope.interface decorator. [gforcada]
1.1.3 (2016-05-25)
Fixes:
Adapt to changes in SimpleViewClass in zope4. [pbauer]
Fix typo [staeff]
1.1.2 (2015-03-13)
Fixes:
Fixed “RuntimeError: maximum recursion depth exceeded” in recursiveGetGroupUsers when you have a group A containing group B containing group A. [vincentfretin]
1.1.1 (2014-11-01)
Add creator, creator_fullname, creator_email, creators_emails and contributors_emails [avoinea]
1.1 (2014-02-25)
Add portal_url and portal_title. [thomasdesvenain]
Add parent_id. [maartenkling]
Convert tests to plone.app.testing for Plone 5. [davisagli]
1.0.10 (2013-05-30)
Added review_state_title substitution variable. [ichim-david]
1.0.9 (2013-05-26)
Added id substitution variable that works with content events and user events. [thomasdesvenain]
Email substitutions are not restricted to contentish anymore, so we can use them with user events. [thomasdesvenain]
1.0.8 (2013-05-23)
Added editor_emails substitution variable. [thomasdesvenain]
1.0.7 (2012-08-11)
Added parent_title substitution, which gets the title of the container. [thomasdesvenain]
Fixed user_fullname substitution : display user id if fullname is not set. [thomasdesvenain]
Do not restrict string interpolation to IContentish if not necessary. Fixes email content rule related with plone.app.discussion comments. Refs https://dev.plone.org/ticket/13047 [thomasdesvenain]
1.0.6 (2012-08-04)
Added parent_url substitution (the url of the object parent). [thomasdesvenain]
1.0.5 (2012-01-26)
Recursive get members works in a non wrapped context (when getting PloneGroups instead of GroupData from GroupTool) [thomasdesvenain]
Add MANIFEST.in [WouterVH]
1.0.4 - 2011-04-01
Added contributor_emails and reader_emails substitution variables. [thomasdesvenain]
1.0.3 - 2010-11-11
Fix a bug with member email substitutions when a user has been removed from acl_users. [rossp]
1.0.2 - 2010-09-20
Role email substitution works with user that have role through a group. [thomasdesvenain]
1.0.1 - 2010-09-15
Internationalized ${type} substitution. [thomasdesvenain]
Fixed: get emails for role works with local roles. [thomasdesvenain]
1.0 - 2010-07-18
Update license to GPL version 2 only. [hannosch]
1.0b1 - 2009-11-12
Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for plone.stringinterp-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30ce49dcbdf8b55f96a41b7ffa6bf15d49dd1ce9e7d92b3a9b90e7320adfa394 |
|
MD5 | c46836882896e696e581ced1c5224d17 |
|
BLAKE2b-256 | 4fe76bd8b14a76616e52d898031acd0f362709f629317f4284d1046282988f20 |