rer.newsletter


Namerer.newsletter JSON
Version 3.1.0 PyPI version JSON
download
home_pagehttps://pypi.python.org/pypi/rer.newsletter
SummaryAn add-on for Plone
upload_time2024-06-13 12:35:07
maintainerNone
docs_urlNone
authorFilippo Campi
requires_python>=3.8
licenseGPL version 2
keywords python plone
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ==============
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.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/11/fa/4783a01d7b57dceea9aa087ba2ad08db647ee1c0586e650d9b5a2a4b545d/rer.newsletter-3.1.0.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.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.0",
    "project_urls": {
        "Homepage": "https://pypi.python.org/pypi/rer.newsletter"
    },
    "split_keywords": [
        "python",
        "plone"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "84c1063003c15b913d07f60690bed11603d446b8b02a4c7f7691f9e16541c413",
                "md5": "cb646b388335be52a241778f8858e756",
                "sha256": "46bd8da480a556d87f3e7196324c5f504cbba6325ad9fd55e2c2fd80c75a997c"
            },
            "downloads": -1,
            "filename": "rer.newsletter-3.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cb646b388335be52a241778f8858e756",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 3153514,
            "upload_time": "2024-06-13T12:35:04",
            "upload_time_iso_8601": "2024-06-13T12:35:04.982374Z",
            "url": "https://files.pythonhosted.org/packages/84/c1/063003c15b913d07f60690bed11603d446b8b02a4c7f7691f9e16541c413/rer.newsletter-3.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "11fa4783a01d7b57dceea9aa087ba2ad08db647ee1c0586e650d9b5a2a4b545d",
                "md5": "5c19cfb205c5551d7f691d7dd169f06b",
                "sha256": "70e8108146fe5c3520d8340d08dadcd2e10932acc8acdae2959795f65dc5c501"
            },
            "downloads": -1,
            "filename": "rer.newsletter-3.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5c19cfb205c5551d7f691d7dd169f06b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1756610,
            "upload_time": "2024-06-13T12:35:07",
            "upload_time_iso_8601": "2024-06-13T12:35:07.877177Z",
            "url": "https://files.pythonhosted.org/packages/11/fa/4783a01d7b57dceea9aa087ba2ad08db647ee1c0586e650d9b5a2a4b545d/rer.newsletter-3.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-13 12:35:07",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "rer.newsletter"
}
        
Elapsed time: 0.49073s