Metadata-Version: 2.1
Name: collective.listmonk
Version: 1.0.0a6
Summary: A Listmonk newsletter integration for Plone.
Home-page: https://github.com/collective/collective.listmonk
Author: kitconcept GmbH
Author-email: info@kitconcept.com
License: GPL version 2
Project-URL: PyPI, https://pypi.python.org/pypi/collective.listmonk
Project-URL: Source, https://github.com/collective/collective.listmonk
Project-URL: Tracker, https://github.com/collective/collective.listmonk/issues
Keywords: Python Plone CMS
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: Addon
Classifier: Framework :: Plone :: 6.0
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.GPL
License-File: LICENSE.md
Requires-Dist: setuptools
Requires-Dist: annotated-types
Requires-Dist: Products.CMFPlone
Requires-Dist: plone.api
Requires-Dist: plone.restapi
Requires-Dist: pydantic
Requires-Dist: pydantic-settings
Requires-Dist: requests
Requires-Dist: souper.plone
Provides-Extra: test
Requires-Dist: zest.releaser[recommended]; extra == "test"
Requires-Dist: zestreleaser.towncrier; extra == "test"
Requires-Dist: plone.app.testing; extra == "test"
Requires-Dist: plone.restapi[test]; extra == "test"
Requires-Dist: plone.volto; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-plone>=0.2.0; extra == "test"


<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.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


