Skip to main content

eea.stringinterp

Develop Master

Extends plone.stringinterp functionallity with a generic fallback string substitution adapter that lookup context properties if no explicit named IStringSubstitution is defined.

Main features

  1. Generic string substitution adapter to easily grab custom properties from context

Install

Usage

  • Via Site Setup > Dexterity Content Types > Page > Fields Tab add new Field, e.g.: custom_field

  • Via Site Setup > Content Rules add a rule to send email on Workflow change

  • Within Message add some Custom: ${custom_field}

  • Add new Page and fill the custom_field

  • Publish your Page

  • Check your email

Code usage

>>> from plone.stringinterp.interfaces import IStringSubstitution
>>> substitute = IStringSubstitution(sandbox)
>>> substitute
<eea.stringinterp.adapters.GenericContextAttributeSubstitution object at...>
>>> substitute('title')
'Sandbox'
>>> substitute('effective')
'Oct 10, 2021 12:00 AM'
>>> substitute('Subject')
'air, pollution'

Buildout installation

Source code

Eggs repository

Plone versions

It has been developed and tested for Plone 4 and 5. See buildouts section above.

How to contribute

See the contribution guidelines (CONTRIBUTING.md).

Funding

EEA - European Environment Agency (EU)

Secret Scanning

This repository uses the Betterleaks GitHub Action to scan the current repository content on every push and pull request. The scan uses the rules in .gitleaks.toml and uploads a betterleaks-report artifact when a finding is detected.

If the optional SMTP secrets are configured, failed scans also send an email to the last commit committer. The workflow expects these repository or organization secrets:

  • SMTP_URL

  • SMTP_PORT (optional, defaults to 25)

  • SMTP_EMAIL

  • SMTP_PASSWORD (optional if the SMTP server does not require authentication)

Port 465 is sent with direct TLS; other ports use the default SMTP handshake. The email includes a short finding summary from the redacted Betterleaks report, including the redacted matched line from each finding.

There are three common outcomes:

  1. Everything is OK. The Betterleaks / Scan for secrets check is green and no action is needed. Regular references to runtime values are OK, for example:

    token_from_cookie = request.cookies.get("auth_token")
  2. A real secret was found. The check is red and the workflow log asks you to download the betterleaks-report artifact. Open the artifact from the GitHub Actions run and check the reported file, line and rule. Remove the committed value, move it to the proper secret store, and rotate it if it was exposed. A report entry looks like this:

    {
      "RuleID": "secret-literal-assignment",
      "File": "src/config.py",
      "StartLine": 12,
      "Secret": "[REDACTED]"
    }
  3. The finding is a false positive. Keep the value only if it is clearly not sensitive, such as a test fixture, placeholder, or public example. Add betterleaks:allow on the same line and include a short explanation in the pull request:

    test_password = "admin"  #betterleaks:allow

Do not add betterleaks:allow to real credentials.

Changelog

1.3 - (2026-07-13)

  • Change: fix: SonarQube report - refs #305404 [avoinea]

1.2 - (2025-11-18)

  • Change: Replace Python linting to ruff [mihaidobrescu1111 = refs #286821]

  • Change: Add plone6 tests [mihaidobrescu1111 = refs #293593]

1.1 - (2023-08-31)

  • remove python_requires from setup.py [valipod - refs #161113]

1.0 - (2021-05-28)

  • Add ‘Generic string substitution’ adapter to easily grab properties from context [avoinea - refs #134513]

Release files for eea.stringinterp 1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eea.stringinterp 1.3
File Size Uploaded
eea_stringinterp-1.3.tar.gz 25.5 kB Details

Release files / eea_stringinterp-1.3.tar.gz

Download URL eea_stringinterp-1.3.tar.gz
Size 25.5 kB
Tags Source
SHA-256 checksum
How to use checksums
18173e82ec18ae2a3bb438c3753d62dfc150eb63a3fe664edb33607149a271ca
BLAKE2b-256 checksum
How to use checksums
46579583d2ee962d5121f8521c94fa84859eda73bad8a48107810b97e3e17f4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

1.3 This release

1 release file

1.2

1 release file

1.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page