<p align="center">
<img alt="kitconcept GmbH" width="200px" src="https://kitconcept.com/logo.svg">
</p>
<h1 align="center">collective.listmonk</h1>
<h3 align="center">Listmonk newsletter integration for Plone</h3>
<div align="center">
[![PyPI](https://img.shields.io/pypi/v/collective.listmonk)](https://pypi.org/project/collective.listmonk/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/collective.listmonk)](https://pypi.org/project/collective.listmonk/)
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/collective.listmonk)](https://pypi.org/project/collective.listmonk/)
[![PyPI - License](https://img.shields.io/pypi/l/collective.listmonk)](https://pypi.org/project/collective.listmonk/)
[![PyPI - Status](https://img.shields.io/pypi/status/collective.listmonk)](https://pypi.org/project/collective.listmonk/)
[![PyPI - Plone Versions](https://img.shields.io/pypi/frameworkversions/plone/collective.listmonk)](https://pypi.org/project/collective.listmonk/)
[![Meta](https://github.com/collective/collective.listmonk/actions/workflows/meta.yml/badge.svg)](https://github.com/collective/collective.listmonk/actions/workflows/meta.yml)
![Code Style](https://img.shields.io/badge/Code%20Style-Black-000000)
[![GitHub contributors](https://img.shields.io/github/contributors/collective/collective.listmonk)](https://github.com/collective/collective.listmonk)
[![GitHub Repo stars](https://img.shields.io/github/stars/collective/collective.listmonk?style=social)](https://github.com/collective/collective.listmonk)
</div>
## Features
`collective.listmonk` adds the ability to send email newsletters from a [Plone](https://plone.org/) site.
### Content Types
| name | context |
| ------------ | ---------------------------------- |
| `Newsletter` | Represents a Listmonk mailing list |
## Installation
Add `collective.listmonk` as a dependency in your package's `setup.py`
```python
install_requires = [
"collective.listmonk",
"Plone",
"plone.restapi",
"setuptools",
],
```
Also, add `collective.listmonk` to your package's `configure.zcml` (or `dependencies.zcml`):
```xml
<include package="collective.listmonk" />
```
### Generic Setup
To automatically enable this package when your add-on is installed, add the following line inside the package's `profiles/default/metadata.xml` `dependencies` element:
```xml
<dependency>profile-collective.listmonk:default</dependency>
```
## Source Code and Contributions
We welcome contributions to `collective.listmonk`.
You can create an issue in the issue tracker, or contact a maintainer.
- [Issue Tracker](https://github.com/collective/collective.listmonk/issues)
- [Source Code](https://github.com/collective/collective.listmonk/)
### Development requirements
- Python 3.11 or later
- Docker
### Setup
Install all development dependencies -- including Plone -- and create a new instance using:
```bash
make install
```
### Start Listmonk
```bash
make start-listmonk
```
This runs Listmonk at http://localhost:9000 and Mailhog at http://localhost:8025
### Start Plone
```bash
make start
```
### Update translations
```bash
make i18n
```
### Format codebase
```bash
make format
```
### Run tests
Testing of this package is done with [`pytest`](https://docs.pytest.org/) and [`tox`](https://tox.wiki/).
Run all tests with:
```bash
make test
```
Run all tests but stop on the first error and open a `pdb` session:
```bash
./bin/tox -e test -- -x --pdb
```
Run only tests that match `TestVocabAuthors`:
```bash
./bin/tox -e test -- -k TestVocabAuthors
```
Run only tests that match `TestVocabAuthors`, but stop on the first error and open a `pdb` session:
```bash
./bin/tox -e test -- -k TestVocabAuthors -x --pdb
```
## Credits
The development of this add-on has been kindly sponsored by [German Aerospace Center (DLR)](https://www.dlr.de).
<img alt="German Aerospace Center (DLR)" width="200px" src="https://raw.githubusercontent.com/collective/collective.listmonk/main/docs/dlr.svg" style="background-color:white">
Developed by [kitconcept](https://www.kitconcept.com/)
## License
The project is licensed under GPLv2.
# Contributors
- David Glick [@davisagli]
- Érico Andrei [@ericof]
# Changelog
<!--
You should *NOT* be adding new change log entries to this file.
You should create a file in the news directory instead.
For helpful instructions, please see:
https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst
-->
<!-- towncrier release notes start -->
## 1.0.0a7 (2024-04-24)
### Bug fixes:
- If a subscriber unsubscribes but still has an unconfirmed subscription to another list, don't delete the subscriber. @davisagli #16
- Fix translation of unsubscribe link. @davisagli #17
## 1.0.0a6 (2024-04-22)
### New features:
- Unsubscribe links now include a subscriber UUID, so it's not possible to unsubscribe a different subscriber.
Also, if the user is unsubscribed from all lists, the listmonk subscriber will be deleted, to avoid retaining private data. @davisagli #14
- Add options to customize the confirmation email for a newsletter. @davisagli #15
## 1.0.0a5 (2024-04-15)
### Bug fixes:
- Make @mailings GET service available on any content where the user has Send Newsletter permission. @davisagli #13
## 1.0.0a4 (2024-04-09)
### New features:
- Send an email confirmation of a new subscription. @davisagli #12
## 1.0.0a3 (2024-04-07)
### Bug fixes:
- Don't add header and footer to the email automatically, so the editor has control. @davisagli #11
## 1.0.0a2 (2024-04-07)
### Bug fixes:
- Avoid runtime dependency on plone.app.robotframework. @davisagli #10
## 1.0.0a1 (2024-04-07)
No significant changes.
## 1.0a1 (unreleased)
- Initial development. @davisagli
Raw data
{
"_id": null,
"home_page": "https://github.com/collective/collective.listmonk",
"name": "collective.listmonk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "Python Plone CMS",
"author": "kitconcept GmbH",
"author_email": "info@kitconcept.com",
"download_url": "https://files.pythonhosted.org/packages/12/d6/fb74186f841a96373d0aaf31ae346617e07d5dd2ea49c141d819927e272c/collective.listmonk-1.0.0a7.tar.gz",
"platform": null,
"description": "\n<p align=\"center\">\n <img alt=\"kitconcept GmbH\" width=\"200px\" src=\"https://kitconcept.com/logo.svg\">\n</p>\n\n<h1 align=\"center\">collective.listmonk</h1>\n<h3 align=\"center\">Listmonk newsletter integration for Plone</h3>\n\n<div align=\"center\">\n\n[![PyPI](https://img.shields.io/pypi/v/collective.listmonk)](https://pypi.org/project/collective.listmonk/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/collective.listmonk)](https://pypi.org/project/collective.listmonk/)\n[![PyPI - Wheel](https://img.shields.io/pypi/wheel/collective.listmonk)](https://pypi.org/project/collective.listmonk/)\n[![PyPI - License](https://img.shields.io/pypi/l/collective.listmonk)](https://pypi.org/project/collective.listmonk/)\n[![PyPI - Status](https://img.shields.io/pypi/status/collective.listmonk)](https://pypi.org/project/collective.listmonk/)\n\n[![PyPI - Plone Versions](https://img.shields.io/pypi/frameworkversions/plone/collective.listmonk)](https://pypi.org/project/collective.listmonk/)\n\n[![Meta](https://github.com/collective/collective.listmonk/actions/workflows/meta.yml/badge.svg)](https://github.com/collective/collective.listmonk/actions/workflows/meta.yml)\n![Code Style](https://img.shields.io/badge/Code%20Style-Black-000000)\n\n[![GitHub contributors](https://img.shields.io/github/contributors/collective/collective.listmonk)](https://github.com/collective/collective.listmonk)\n[![GitHub Repo stars](https://img.shields.io/github/stars/collective/collective.listmonk?style=social)](https://github.com/collective/collective.listmonk)\n\n</div>\n\n## Features\n\n`collective.listmonk` adds the ability to send email newsletters from a [Plone](https://plone.org/) site.\n\n### Content Types\n\n| name | context |\n| ------------ | ---------------------------------- |\n| `Newsletter` | Represents a Listmonk mailing list |\n\n## Installation\n\nAdd `collective.listmonk` as a dependency in your package's `setup.py`\n\n```python\n install_requires = [\n \"collective.listmonk\",\n \"Plone\",\n \"plone.restapi\",\n \"setuptools\",\n ],\n```\n\nAlso, add `collective.listmonk` to your package's `configure.zcml` (or `dependencies.zcml`):\n\n```xml\n<include package=\"collective.listmonk\" />\n```\n\n### Generic Setup\n\nTo automatically enable this package when your add-on is installed, add the following line inside the package's `profiles/default/metadata.xml` `dependencies` element:\n\n```xml\n <dependency>profile-collective.listmonk:default</dependency>\n```\n\n## Source Code and Contributions\n\nWe welcome contributions to `collective.listmonk`.\n\nYou can create an issue in the issue tracker, or contact a maintainer.\n\n- [Issue Tracker](https://github.com/collective/collective.listmonk/issues)\n- [Source Code](https://github.com/collective/collective.listmonk/)\n\n### Development requirements\n\n- Python 3.11 or later\n- Docker\n\n### Setup\n\nInstall all development dependencies -- including Plone -- and create a new instance using:\n\n```bash\nmake install\n```\n\n### Start Listmonk\n\n```bash\nmake start-listmonk\n```\n\nThis runs Listmonk at http://localhost:9000 and Mailhog at http://localhost:8025\n\n### Start Plone\n\n```bash\nmake start\n```\n\n### Update translations\n\n```bash\nmake i18n\n```\n\n### Format codebase\n\n```bash\nmake format\n```\n\n### Run tests\n\nTesting of this package is done with [`pytest`](https://docs.pytest.org/) and [`tox`](https://tox.wiki/).\n\nRun all tests with:\n\n```bash\nmake test\n```\n\nRun all tests but stop on the first error and open a `pdb` session:\n\n```bash\n./bin/tox -e test -- -x --pdb\n```\n\nRun only tests that match `TestVocabAuthors`:\n\n```bash\n./bin/tox -e test -- -k TestVocabAuthors\n```\n\nRun only tests that match `TestVocabAuthors`, but stop on the first error and open a `pdb` session:\n\n```bash\n./bin/tox -e test -- -k TestVocabAuthors -x --pdb\n```\n\n## Credits\n\nThe development of this add-on has been kindly sponsored by [German Aerospace Center (DLR)](https://www.dlr.de).\n\n<img alt=\"German Aerospace Center (DLR)\" width=\"200px\" src=\"https://raw.githubusercontent.com/collective/collective.listmonk/main/docs/dlr.svg\" style=\"background-color:white\">\n\nDeveloped by [kitconcept](https://www.kitconcept.com/)\n\n## License\n\nThe project is licensed under GPLv2.\n\n\n# Contributors\n\n- David Glick [@davisagli]\n- \u00c9rico Andrei [@ericof]\n\n\n# Changelog\n\n<!--\n You should *NOT* be adding new change log entries to this file.\n You should create a file in the news directory instead.\n For helpful instructions, please see:\n https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n-->\n\n<!-- towncrier release notes start -->\n\n## 1.0.0a7 (2024-04-24)\n\n\n### Bug fixes:\n\n- If a subscriber unsubscribes but still has an unconfirmed subscription to another list, don't delete the subscriber. @davisagli #16\n- Fix translation of unsubscribe link. @davisagli #17\n\n## 1.0.0a6 (2024-04-22)\n\n\n### New features:\n\n- Unsubscribe links now include a subscriber UUID, so it's not possible to unsubscribe a different subscriber.\n Also, if the user is unsubscribed from all lists, the listmonk subscriber will be deleted, to avoid retaining private data. @davisagli #14\n- Add options to customize the confirmation email for a newsletter. @davisagli #15\n\n## 1.0.0a5 (2024-04-15)\n\n\n### Bug fixes:\n\n- Make @mailings GET service available on any content where the user has Send Newsletter permission. @davisagli #13\n\n## 1.0.0a4 (2024-04-09)\n\n\n### New features:\n\n- Send an email confirmation of a new subscription. @davisagli #12\n\n## 1.0.0a3 (2024-04-07)\n\n\n### Bug fixes:\n\n- Don't add header and footer to the email automatically, so the editor has control. @davisagli #11\n\n## 1.0.0a2 (2024-04-07)\n\n\n### Bug fixes:\n\n- Avoid runtime dependency on plone.app.robotframework. @davisagli #10\n\n## 1.0.0a1 (2024-04-07)\n\nNo significant changes.\n\n\n## 1.0a1 (unreleased)\n\n- Initial development. @davisagli\n\n\n",
"bugtrack_url": null,
"license": "GPL version 2",
"summary": "A Listmonk newsletter integration for Plone.",
"version": "1.0.0a7",
"project_urls": {
"Homepage": "https://github.com/collective/collective.listmonk",
"PyPI": "https://pypi.python.org/pypi/collective.listmonk",
"Source": "https://github.com/collective/collective.listmonk",
"Tracker": "https://github.com/collective/collective.listmonk/issues"
},
"split_keywords": [
"python",
"plone",
"cms"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "708d6dcc11ddfc9cde9eccb7dadf328c5b7d781acf2eb9a138b288692b1fb765",
"md5": "16b22c0772933957199cd1b78e77eb3b",
"sha256": "8a16788ae6a25543ebc5ba5dc7fe8bb0c00cbe64998344ed82f041662f91aaf9"
},
"downloads": -1,
"filename": "collective.listmonk-1.0.0a7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "16b22c0772933957199cd1b78e77eb3b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 33667,
"upload_time": "2024-04-24T17:57:11",
"upload_time_iso_8601": "2024-04-24T17:57:11.848937Z",
"url": "https://files.pythonhosted.org/packages/70/8d/6dcc11ddfc9cde9eccb7dadf328c5b7d781acf2eb9a138b288692b1fb765/collective.listmonk-1.0.0a7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12d6fb74186f841a96373d0aaf31ae346617e07d5dd2ea49c141d819927e272c",
"md5": "853954cb6784264f3a791fccb6325829",
"sha256": "5e117e58188aea1dff851cdb9adc53f3e1c9e5452d517a3b7cae1d2740faa491"
},
"downloads": -1,
"filename": "collective.listmonk-1.0.0a7.tar.gz",
"has_sig": false,
"md5_digest": "853954cb6784264f3a791fccb6325829",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 42535,
"upload_time": "2024-04-24T17:57:14",
"upload_time_iso_8601": "2024-04-24T17:57:14.080463Z",
"url": "https://files.pythonhosted.org/packages/12/d6/fb74186f841a96373d0aaf31ae346617e07d5dd2ea49c141d819927e272c/collective.listmonk-1.0.0a7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-24 17:57:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "collective",
"github_project": "collective.listmonk",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "collective.listmonk"
}