Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Plone Logo

Cookieplone 🍪

PyPIPyPI - Python VersionPyPI - WheelPyPI - LicensePyPI - Status

Tests

GitHub contributorsGitHub Repo stars

Static Badge

Welcome to Cookieplone, your starting point for every Plone project. Whether you're building an add-on, starting a new project, or even creating your own Plone Distribution, Cookieplone simplifies the process by using templates maintained by the Plone Community.

Key features 🌟

Cookieplone offers the following key features for each audience.

For users

  • One stop for all Plone templates: Cookieplone helps you find the correct template to start your new Plone project.
  • Simplified usage: Cookieplone provides an enhanced experience over standard Cookiecutter usage by offering predefined sane defaults and a unified approach to generating various Plone projects.
  • Batteries included: No need to install lots of dependencies. Run uvx cookieplone, and you will quickly generate your codebase.

For template creators

  • Built-in validators: Includes built-in validators to ensure user inputs are correct.
  • Jinja2 filters: Includes Jinja2 filters for advanced template control.
  • Subtemplates: Mechanism to easily instantiate subtemplates within cookiecutter hooks -- i.e. post_gen_hook -- , facilitating greater code reuse.

Installation 💾

Set up your system with Plone's Prerequisites for installation.

Usage 🛠️

Use uvx (command installed by uv) to run cookieplone and see all available template options:

uvx cookieplone

It is also possible to run a specific version of Cookieplone:

uvx cookieplone@1.0.0

Cookieplone will walk you through the necessary steps, using sensible defaults and offering customization options where needed.

Try a prerelease version

Plain uvx cookieplone (and uvx cookieplone@latest) always picks the latest stable release — prerelease versions (aN, bN, rcN, .devN) are excluded by default, following PEP 440 and the uv resolver defaults.

To opt in to a prerelease — for example, 2.0.0a1 — pin the exact version:

uvx cookieplone@2.0.0a1

Or allow the resolver to consider any prerelease:

uvx --prerelease=allow cookieplone

If you previously installed Cookieplone with uv tool install, upgrade the tool explicitly so the cached stable install is replaced:

uv tool install --reinstall --prerelease=allow cookieplone

You can confirm which version is active with:

uvx cookieplone --version

Use options to avoid prompts

Cookieplone will ask a lot of questions. You can use some of its options to avoid repeatedly entering the same values.

--answers

You can use the --answers to point to a file containing the answers you want to use to pre-populate default values.

--no-input

You can use the --no-input option to make Cookieplone not prompt for parameters and only use default values.

--replay and --replay-file

You can use the options --replay and --replay-file to not prompt for parameters and only use information entered previously or from a specified file. See Replay Project Generation in the cookiecutter documentation for more information.

Specify a template

You can also specify other templates.

TemplateDescriptionCommand
backend_addonCreate a Plone add-on to be used with the backend.uvx cookieplone backend_addon
frontend_addonCreate a Plone add-on to be used with the frontend.uvx cookieplone frontend_addon

The updated list of templates can be found at the cookieplone-templates repository.

Configure Cookieplone

Environment VariableDescriptionExample
COOKIEPLONE_REPOSITORYWhere to look for templates to be used.COOKIEPLONE_REPOSITORY=/home/plone/cookieplone-templates/ uvx cookieplone
COOKIEPLONE_REPOSITORY_TAGWhich tag/branch to use from a remote repository.COOKIEPLONE_REPOSITORY_TAG=experimental uvx cookieplone
COOKIEPLONE_REPO_PASSWORDPassword to use when using a remote repository that is password protected.COOKIEPLONE_REPO_PASSWORD=very-secure uvx cookieplone

Contribute 🤝

We welcome contributions to Cookieplone.

You can create an issue in the issue tracker, or contact a maintainer.

Branches

BranchTarget versionStatus
main2.0.0 (next major)Active development
1.x1.x (patch and minor)Maintenance only

All new feature development targets the main branch and will be released as version 2.0.0. The 1.x branch is in maintenance mode and only receives bug fixes and minor improvements released as 1.x versions.

Development requirements

See Installation.

Setup

Create a local Python virtual environment with the following command.

make install

Run the checked out branch of Cookieplone

uv run cookieplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_run_sanity_checks_fail with the following command.

uv run pytest -k test_run_sanity_checks_fail

Run only tests that match test_run_sanity_checks_fail, but stop on the first error and open a pdb session with the following command.

uv run pytest -k test_run_sanity_checks_fail -x --pdb

Support 📢

For support, questions, or more detailed documentation, visit the official Cookieplone repository.

Thank you for choosing Cookieplone for your Plone development needs!

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

About

Create Plone projects, addons, documentation with ease!

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

184 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages