==============
rer.newsletter
==============
|python| |version| |ci| |license| |number|
.. |python| image:: https://img.shields.io/pypi/pyversions/rer.newsletter.svg
:target: https://pypi.python.org/pypi/rer.newsletter/
.. |version| image:: http://img.shields.io/pypi/v/rer.newsletter.svg
:target: https://pypi.python.org/pypi/rer.newsletter
.. |number| image:: http://img.shields.io/pypi/dm/rer.newsletter.svg
:target: https://pypi.python.org/pypi/rer.newsletter
.. |license| image:: http://img.shields.io/pypi/l/rer.newsletter.svg
:target: https://pypi.python.org/pypi/rer.newsletter
.. |ci| image:: https://github.com/RegioneER/rer.newsletter/actions/workflows/tests.yml/badge.svg
:target: https://github.com/RegioneER/rer.newsletter/actions
This product allows the complete management of a newsletter.
========
Features
========
New Content-type
----------------
- Channel
* Totally customizable because it is possible to set a header, a footer and CSS styles. This fields allows to uniform template of email that will be sent from one channel.
* content type that inherit from folder content.
- Message
* content type that inherit from folder content.
Portlet and Tile
----------------
The product provide a portlet and a tile for user subscribe.
Form for user subscribe have an email field and is protected for spam with `collective.honeypot <https://github.com/plone/collective.honeypot>`__.
User Management
---------------
Allows complete management of user.
- Add user from admin setting
- Delete user from admin setting
- Import users directly from CSV file
- Export users directly to CSV file
- Delete a group of user directly from CSV file
- Subscribe users
- Unsubscribe users
=================
Advanced Features
=================
Customize how to send your newsletter
-------------------------------------
By default, this product send all the emails through the standard plone mailer.
The actual sending mechanism is handled by an adapter (a multi-adapter)::
<adapter
for="rer.newsletter.behaviors.ships.IShippableMarker
zope.publisher.interfaces.browser.IBrowserRequest"
provides=".base_adapter.IChannelSender"
factory=".base_adapter.BaseAdapter"
/>
To change this default activity, you can create a new Plone add-on that
register a new adapter with a more specific layer (e.g. use the browser layer
of the new add-on) and override the ``sendMessage`` method as you wish.
`rer.newsletterplugin.flask <https://github.com/RegioneER/rer.newsletterplugin.flask>`__ is an example
of plugin with a custom sender. It uses an external Flask app to send emails.
Advanced security
-----------------
New permissions have been added for the management of the Newsletter:
- ``rer.newsletter: Add Channel``
- ``rer.newsletter: Add Message``
- ``rer.newsletter: Manage Newsletter``
- ``rer.newsletter: Send Newsletter``
This permission are assigned to Manager and Site Administrator. There is also
a new role, ``Gestore Newsletter``, which has permissions for all possible
operations on newsletter.
Bot protection
==============
This product use `collective.honeypot <https://pypi.org/project/collective.honeypot/>`__ to prevent bot submissions.
You just need to set two environment variables:
- *EXTRA_PROTECTED_ACTIONS customer-satisfaction-add*
- *HONEYPOT_FIELD xxx*
xxx should be a field name that bot should compile.
If you get hacked, you could simply change that variable.
Subscriptions cleanup
----------------------
There is a view (*@@delete_expired_users*) that delete all
users that not have confirmed subscription to a channel in time.
You can set subscription token validity from the product's control panel.
Inside the settings of the product there is a field that allows you to set
validity time of the channel subscription token.
============
Installation
============
Install rer.newsletter by adding it to your buildout::
[buildout]
...
eggs =
rer.newsletter
and then running ``bin/buildout``
============
Dependencies
============
This product has been tested on Plone 6 with volto integration.
=======
Credits
=======
Developed with the support of `Regione Emilia Romagna <http://www.regione.emilia-romagna.it/>`_;
Regione Emilia Romagna supports the `PloneGov initiative <http://www.plonegov.it/>`_.
=======
Authors
=======
This product was developed by **RedTurtle Technology** team.
.. image:: https://avatars1.githubusercontent.com/u/1087171?s=100&v=4
:alt: RedTurtle Technology Site
:target: http://www.redturtle.it/
============
Contributors
============
- RedTurtle Technology, sviluppoplone@redturtle.it
=========
Changelog
=========
3.1.2 (2024-12-05)
------------------
- Handle hr tag in slate blocks.
[cekk]
3.1.1 (2024-10-22)
------------------
- Fixed shippable collection
[eikichi18]
3.1.0 (2024-06-13)
------------------
- Add restapi endpoints to improve Volto compatibility.
[cekk]
- Enable blocks on messages.
[cekk]
3.0.2 (2024-05-06)
------------------
- Added fields for customize header and footer logos in newsletter.
[eikichi18]
- Disable resource not needed in Plone6.
[cekk]
3.0.1 (2023-09-06)
------------------
- newsletter subscribe and unsubscribe email templates
[pnicolli]
3.0.0 (2023-08-09)
------------------
- release
[eikichi18]
2.0.0a4 (2023-07-26)
--------------------
- Fixed resources with module federation for Plone 6 support
[pnicolli,sabrina-bongiovanni,eikichi18]
2.0.0a3 (2023-07-21)
--------------------
- Adapt management buttons for Plone 6
[pnicolli]
2.0.0a2 (2023-03-16)
--------------------
- Updated subheader template
[pnicolli]
2.0.0a1 (2023-03-14)
--------------------
- added restapi services for Volto usage
- fixed results for unsubscribe service
- italian translation
- remove CSRFProtection when call services
- fix email validation when mailinglist are imported
- using preview_image instead of lead image in newsletter shippable collection
- Remove subtitle (h4) in nl template and preview
1.2.0 (2023-01-25)
------------------
- Remove recaptha usage in the channel subscribe form, will be used honeypot instead.
[foxtrot-dfm1]
1.1.2 (2022-05-12)
------------------
- Improve error handling messages in massive user import.
[cekk]
1.1.1 (2021-11-11)
------------------
- Fix encoding in unsubscribe.py.
[cekk]
1.1.0 (2021-06-10)
------------------
- Use mail validator from portal_registration.
[cekk]
1.0.7 (2021-01-28)
------------------
- Fix logic in delete expired users view.
[cekk]
1.0.6 (2020-12-18)
------------------
- Handle "running" state in status table for long queues.
[cekk]
1.0.5 (2020-11-25)
------------------
- Fix upgrade step.
[cekk]
1.0.4 (2020-11-12)
------------------
- Fix encoding for the channel title.
[daniele]
1.0.3 (2020-11-06)
------------------
- Handle mail not found in subscribe form.
[cekk]
1.0.2 (2020-08-18)
------------------
- Styles for newsletter subscription modal
- Fix cancel button moving when in error state
[nzambello]
1.0.1 (2020-07-27)
------------------
- Remove direct dependency to collective.taskqueue.
[cekk]
1.0.0 (2020-07-21)
------------------
- Heavy refactoring to support different send methods from adapters.
[cekk]
0.4.0 (2020-04-21)
------------------
- Fixed subscribers import in Python3.
[daniele]
- Fixed RichText behavior name in types definition.
[daniele]
- Fix initializedModal.js to correctly support tiles loading
[nzambello]
0.3.0 (2020-03-07)
------------------
- Python 3 compatibility.
[cekk]
0.2.0 (2019-04-01)
------------------
- Fix initializedModal.js to support new functionality in tilesmanagement: anonymous always load a static version of tiles list.
[cekk]
0.1.12 (2019-01-30)
-------------------
- Added shippable collection.
- Fixed template for shippable collection.
- Fixed search object for channel history view.
[eikichi18]
- a11y: added role attribute for portalMessage
[nzambello]
0.1.11 (2018-09-27)
-------------------
- Fix ascii encode problem on site name.
[eikichi18]
0.1.10 (2018-09-27)
-------------------
- Added number of removed user on delete_expired_users view.
- Removed layer for delete_expired_users view.
- Fixed view for delete expired users.
[eikichi18]
0.1.9 (2018-09-20)
------------------
- Fixed modal timeout
[eikichi18]
0.1.8 (2018-07-19)
------------------
- Added Redis for asynchronous task
- Fixed label of close button on subscription modal
- Added Translatation
- Fixed the way in which it takes the title of the site
- Added content rules for user subscription and unsubscription
[eikichi18]
0.1.7 (2018-06-19)
------------------
- Fixed buildout
[eikichi18]
0.1.6 (2018-06-19)
------------------
- Fixed some minor label
[eikichi18]
0.1.5 (2018-05-25)
------------------
- fixed default profile in upgrade step
[eikichi18]
0.1.4 (2018-05-23)
------------------
- upgrade step to fix bundle for initializedModal.js
[eikichi18]
0.1.3 (2018-05-23)
------------------
- Fixed accessibility problem on subscribe/unsubscribe modal for IE.
[eikichi18]
0.1.2 (2018-03-15)
------------------
- Fixed accessibility and style for subscribe/unsubscribe modal.
[eikichi18]
0.1.1 (2018-03-02)
------------------
- Fixed doc.
[eikichi18]
0.1.0 (2018-03-02)
------------------
- Initial release.
[eikichi18]
Raw data
{
"_id": null,
"home_page": "https://pypi.python.org/pypi/rer.newsletter",
"name": "rer.newsletter",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "Python Plone",
"author": "Filippo Campi",
"author_email": "filippo.campi@redturtle.it",
"download_url": "https://files.pythonhosted.org/packages/e7/a5/a1304fd5a193b3047ef6d53aa19911c42bac44cf083e66f4d9244e2b5ff4/rer.newsletter-3.1.2.tar.gz",
"platform": null,
"description": "==============\nrer.newsletter\n==============\n\n|python| |version| |ci| |license| |number|\n\n.. |python| image:: https://img.shields.io/pypi/pyversions/rer.newsletter.svg\n :target: https://pypi.python.org/pypi/rer.newsletter/\n\n.. |version| image:: http://img.shields.io/pypi/v/rer.newsletter.svg\n :target: https://pypi.python.org/pypi/rer.newsletter\n\n.. |number| image:: http://img.shields.io/pypi/dm/rer.newsletter.svg\n :target: https://pypi.python.org/pypi/rer.newsletter\n\n.. |license| image:: http://img.shields.io/pypi/l/rer.newsletter.svg\n :target: https://pypi.python.org/pypi/rer.newsletter\n\n.. |ci| image:: https://github.com/RegioneER/rer.newsletter/actions/workflows/tests.yml/badge.svg\n :target: https://github.com/RegioneER/rer.newsletter/actions\n\n\nThis product allows the complete management of a newsletter.\n\n========\nFeatures\n========\n\nNew Content-type\n----------------\n\n- Channel\n\n * Totally customizable because it is possible to set a header, a footer and CSS styles. This fields allows to uniform template of email that will be sent from one channel.\n * content type that inherit from folder content.\n\n- Message\n\n * content type that inherit from folder content.\n\nPortlet and Tile\n----------------\n\nThe product provide a portlet and a tile for user subscribe.\n\nForm for user subscribe have an email field and is protected for spam with `collective.honeypot <https://github.com/plone/collective.honeypot>`__.\n\n\nUser Management\n---------------\n\nAllows complete management of user.\n\n- Add user from admin setting\n- Delete user from admin setting\n- Import users directly from CSV file\n- Export users directly to CSV file\n- Delete a group of user directly from CSV file\n- Subscribe users\n- Unsubscribe users\n\n\n=================\nAdvanced Features\n=================\n\n\nCustomize how to send your newsletter\n-------------------------------------\n\nBy default, this product send all the emails through the standard plone mailer.\nThe actual sending mechanism is handled by an adapter (a multi-adapter)::\n\n <adapter\n for=\"rer.newsletter.behaviors.ships.IShippableMarker\n zope.publisher.interfaces.browser.IBrowserRequest\"\n provides=\".base_adapter.IChannelSender\"\n factory=\".base_adapter.BaseAdapter\"\n />\n\n\nTo change this default activity, you can create a new Plone add-on that\nregister a new adapter with a more specific layer (e.g. use the browser layer\nof the new add-on) and override the ``sendMessage`` method as you wish.\n\n`rer.newsletterplugin.flask <https://github.com/RegioneER/rer.newsletterplugin.flask>`__ is an example\nof plugin with a custom sender. It uses an external Flask app to send emails.\n\n\nAdvanced security\n-----------------\n\nNew permissions have been added for the management of the Newsletter:\n\n- ``rer.newsletter: Add Channel``\n- ``rer.newsletter: Add Message``\n- ``rer.newsletter: Manage Newsletter``\n- ``rer.newsletter: Send Newsletter``\n\nThis permission are assigned to Manager and Site Administrator. There is also\na new role, ``Gestore Newsletter``, which has permissions for all possible\noperations on newsletter.\n\n\nBot protection\n==============\n\nThis product use `collective.honeypot <https://pypi.org/project/collective.honeypot/>`__ to prevent bot submissions.\n\nYou just need to set two environment variables:\n\n- *EXTRA_PROTECTED_ACTIONS customer-satisfaction-add*\n- *HONEYPOT_FIELD xxx*\n\nxxx should be a field name that bot should compile.\n\nIf you get hacked, you could simply change that variable.\n\n\nSubscriptions cleanup\n----------------------\n\nThere is a view (*@@delete_expired_users*) that delete all\nusers that not have confirmed subscription to a channel in time.\n\nYou can set subscription token validity from the product's control panel.\n\nInside the settings of the product there is a field that allows you to set\nvalidity time of the channel subscription token.\n\n\n============\nInstallation\n============\n\nInstall rer.newsletter by adding it to your buildout::\n\n [buildout]\n\n ...\n\n eggs =\n rer.newsletter\n\n\nand then running ``bin/buildout``\n\n============\nDependencies\n============\n\nThis product has been tested on Plone 6 with volto integration.\n\n=======\nCredits\n=======\n\nDeveloped with the support of `Regione Emilia Romagna <http://www.regione.emilia-romagna.it/>`_;\n\nRegione Emilia Romagna supports the `PloneGov initiative <http://www.plonegov.it/>`_.\n\n\n=======\nAuthors\n=======\n\nThis product was developed by **RedTurtle Technology** team.\n\n.. image:: https://avatars1.githubusercontent.com/u/1087171?s=100&v=4\n :alt: RedTurtle Technology Site\n :target: http://www.redturtle.it/\n\n\n============\nContributors\n============\n\n- RedTurtle Technology, sviluppoplone@redturtle.it\n\n\n=========\nChangelog\n=========\n\n3.1.2 (2024-12-05)\n------------------\n\n- Handle hr tag in slate blocks.\n [cekk]\n\n3.1.1 (2024-10-22)\n------------------\n\n- Fixed shippable collection\n [eikichi18]\n\n\n3.1.0 (2024-06-13)\n------------------\n\n- Add restapi endpoints to improve Volto compatibility.\n [cekk]\n- Enable blocks on messages.\n [cekk]\n\n3.0.2 (2024-05-06)\n------------------\n\n- Added fields for customize header and footer logos in newsletter.\n [eikichi18]\n- Disable resource not needed in Plone6.\n [cekk]\n\n3.0.1 (2023-09-06)\n------------------\n\n- newsletter subscribe and unsubscribe email templates\n [pnicolli]\n\n\n3.0.0 (2023-08-09)\n------------------\n\n- release\n [eikichi18]\n\n\n2.0.0a4 (2023-07-26)\n--------------------\n\n- Fixed resources with module federation for Plone 6 support\n [pnicolli,sabrina-bongiovanni,eikichi18]\n\n\n2.0.0a3 (2023-07-21)\n--------------------\n\n- Adapt management buttons for Plone 6\n [pnicolli]\n\n\n2.0.0a2 (2023-03-16)\n--------------------\n\n- Updated subheader template\n [pnicolli]\n\n\n2.0.0a1 (2023-03-14)\n--------------------\n\n- added restapi services for Volto usage\n- fixed results for unsubscribe service\n- italian translation\n- remove CSRFProtection when call services\n- fix email validation when mailinglist are imported\n- using preview_image instead of lead image in newsletter shippable collection\n- Remove subtitle (h4) in nl template and preview\n\n1.2.0 (2023-01-25)\n------------------\n\n- Remove recaptha usage in the channel subscribe form, will be used honeypot instead.\n [foxtrot-dfm1]\n\n\n1.1.2 (2022-05-12)\n------------------\n\n- Improve error handling messages in massive user import.\n [cekk]\n\n\n1.1.1 (2021-11-11)\n------------------\n\n- Fix encoding in unsubscribe.py.\n [cekk]\n\n\n1.1.0 (2021-06-10)\n------------------\n\n- Use mail validator from portal_registration.\n [cekk]\n\n\n1.0.7 (2021-01-28)\n------------------\n\n- Fix logic in delete expired users view.\n [cekk]\n\n\n1.0.6 (2020-12-18)\n------------------\n\n- Handle \"running\" state in status table for long queues.\n [cekk]\n\n\n1.0.5 (2020-11-25)\n------------------\n\n- Fix upgrade step.\n [cekk]\n\n1.0.4 (2020-11-12)\n------------------\n\n- Fix encoding for the channel title.\n [daniele]\n\n\n1.0.3 (2020-11-06)\n------------------\n\n- Handle mail not found in subscribe form.\n [cekk]\n\n\n1.0.2 (2020-08-18)\n------------------\n\n- Styles for newsletter subscription modal\n- Fix cancel button moving when in error state\n [nzambello]\n\n\n1.0.1 (2020-07-27)\n------------------\n\n- Remove direct dependency to collective.taskqueue.\n [cekk]\n\n1.0.0 (2020-07-21)\n------------------\n\n- Heavy refactoring to support different send methods from adapters.\n [cekk]\n\n\n0.4.0 (2020-04-21)\n------------------\n\n- Fixed subscribers import in Python3.\n [daniele]\n- Fixed RichText behavior name in types definition.\n [daniele]\n- Fix initializedModal.js to correctly support tiles loading\n [nzambello]\n\n0.3.0 (2020-03-07)\n------------------\n\n- Python 3 compatibility.\n [cekk]\n\n\n0.2.0 (2019-04-01)\n------------------\n\n- Fix initializedModal.js to support new functionality in tilesmanagement: anonymous always load a static version of tiles list.\n [cekk]\n\n\n0.1.12 (2019-01-30)\n-------------------\n\n- Added shippable collection.\n- Fixed template for shippable collection.\n- Fixed search object for channel history view.\n [eikichi18]\n\n- a11y: added role attribute for portalMessage\n [nzambello]\n\n\n0.1.11 (2018-09-27)\n-------------------\n\n- Fix ascii encode problem on site name.\n [eikichi18]\n\n\n0.1.10 (2018-09-27)\n-------------------\n\n- Added number of removed user on delete_expired_users view.\n- Removed layer for delete_expired_users view.\n- Fixed view for delete expired users.\n [eikichi18]\n\n\n0.1.9 (2018-09-20)\n------------------\n\n- Fixed modal timeout\n [eikichi18]\n\n\n0.1.8 (2018-07-19)\n------------------\n\n- Added Redis for asynchronous task\n- Fixed label of close button on subscription modal\n- Added Translatation\n- Fixed the way in which it takes the title of the site\n- Added content rules for user subscription and unsubscription\n [eikichi18]\n\n\n0.1.7 (2018-06-19)\n------------------\n\n- Fixed buildout\n [eikichi18]\n\n\n0.1.6 (2018-06-19)\n------------------\n\n- Fixed some minor label\n [eikichi18]\n\n\n0.1.5 (2018-05-25)\n------------------\n\n- fixed default profile in upgrade step\n [eikichi18]\n\n\n0.1.4 (2018-05-23)\n------------------\n\n- upgrade step to fix bundle for initializedModal.js\n [eikichi18]\n\n\n0.1.3 (2018-05-23)\n------------------\n\n- Fixed accessibility problem on subscribe/unsubscribe modal for IE.\n [eikichi18]\n\n\n0.1.2 (2018-03-15)\n------------------\n\n- Fixed accessibility and style for subscribe/unsubscribe modal.\n [eikichi18]\n\n\n0.1.1 (2018-03-02)\n------------------\n\n- Fixed doc.\n [eikichi18]\n\n\n0.1.0 (2018-03-02)\n------------------\n\n- Initial release.\n [eikichi18]\n",
"bugtrack_url": null,
"license": "GPL version 2",
"summary": "An add-on for Plone",
"version": "3.1.2",
"project_urls": {
"Homepage": "https://pypi.python.org/pypi/rer.newsletter"
},
"split_keywords": [
"python",
"plone"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3288711d1c9a7ae8d94483c77f3ba87096b0661b7355bcc3c790bd820644fd0c",
"md5": "8ef5104a6860a83a99ed95f3ccf6e22d",
"sha256": "5e875848ea5c8c2af39d17c997f972d41ac6765a3ffc0111150a8d5ff4f1c392"
},
"downloads": -1,
"filename": "rer.newsletter-3.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8ef5104a6860a83a99ed95f3ccf6e22d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 3155097,
"upload_time": "2024-12-05T11:00:12",
"upload_time_iso_8601": "2024-12-05T11:00:12.197305Z",
"url": "https://files.pythonhosted.org/packages/32/88/711d1c9a7ae8d94483c77f3ba87096b0661b7355bcc3c790bd820644fd0c/rer.newsletter-3.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e7a5a1304fd5a193b3047ef6d53aa19911c42bac44cf083e66f4d9244e2b5ff4",
"md5": "cee2dd4cbec295e37842f3f078117888",
"sha256": "48404b093df1d262299be7253c08e850fc7d89a8848e487ca53c3d35b6986295"
},
"downloads": -1,
"filename": "rer.newsletter-3.1.2.tar.gz",
"has_sig": false,
"md5_digest": "cee2dd4cbec295e37842f3f078117888",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 1756922,
"upload_time": "2024-12-05T11:00:13",
"upload_time_iso_8601": "2024-12-05T11:00:13.959393Z",
"url": "https://files.pythonhosted.org/packages/e7/a5/a1304fd5a193b3047ef6d53aa19911c42bac44cf083e66f4d9244e2b5ff4/rer.newsletter-3.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-05 11:00:13",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "rer.newsletter"
}