Skip to content

Commit

Permalink
add upgrade-step
Browse files Browse the repository at this point in the history
  • Loading branch information
cekk committed Apr 24, 2024
1 parent 49a526d commit f1f1567
Show file tree
Hide file tree
Showing 10 changed files with 70 additions and 60 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/black.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,4 @@ jobs:

# run black
- name: run black
run: black src/ --check --diff --line-length 79
run: black src/
2 changes: 1 addition & 1 deletion .github/workflows/flake8.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,4 @@ jobs:

# run flake8
- name: run flake8
run: flake8 src/ setup.py --ignore E203,W503
run: flake8 src/ setup.py
10 changes: 9 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ ignore =
.coveragerc
.editorconfig
.gitattributes
bootstrap-buildout.py

[isort]
# for details see
Expand All @@ -14,3 +13,12 @@ force_single_line = True
lines_after_imports = 2
line_length = 200
not_skip = __init__.py

[flake8]
exclude = bootstrap.py,docs,*.egg.,omelette
max-complexity = 15
max-line-length = 100000
extend-ignore =
E203,
C901,
C101
8 changes: 8 additions & 0 deletions src/rer/newsletter/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@
directory="profiles/uninstall"
post_handler=".setuphandlers.uninstall"
/>

<genericsetup:registerProfile
name="to_1005"
title="rer.newsletter: disable bundle"
description="Disable the rer.newsletter bundle."
provides="Products.GenericSetup.interfaces.EXTENSION"
directory="profiles/to_1005"
/>

<!-- registro l'utility per la coda dei messaggi -->
<utility
Expand Down
2 changes: 1 addition & 1 deletion src/rer/newsletter/profiles/default/metadata.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<version>1004</version>
<version>1005</version>
<dependencies>
<dependency>profile-plone.app.tiles:default</dependency>
</dependencies>
Expand Down
13 changes: 13 additions & 0 deletions src/rer/newsletter/profiles/to_1005/registry.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<registry xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="rer.newsletter"
>

<!-- disabled because breaks javascripts in plone6 -->
<records interface="Products.CMFPlone.interfaces.IResourceRegistry"
prefix="plone.resources/initializedModal"
remove="True" />
<records interface="Products.CMFPlone.interfaces.IBundleRegistry"
prefix="plone.bundles/initializedModal"
remove="True" />
</registry>
2 changes: 1 addition & 1 deletion src/rer/newsletter/setuphandlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
class HiddenProfiles(object):
def getNonInstallableProfiles(self):
"""Hide uninstall profile from site-creation and quickinstaller"""
return ["rer.newsletter:uninstall"]
return ["rer.newsletter:uninstall", "rer.newsletter:to_1005"]


def post_install(context):
Expand Down
68 changes: 17 additions & 51 deletions src/rer/newsletter/tests/test_subscriptions_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,23 +81,17 @@ def test_emails_are_stored_lowered(self):
def test_subscribe_email_twice_return_error(self):
self.subscribers_adapter.subscribe("[email protected]")

self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)
status, token = self.subscribers_adapter.subscribe("[email protected]")

self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)
self.assertEqual(token, None)
self.assertEqual(status, ALREADY_SUBSCRIBED)

# also if we try with capital letters
status, token = self.subscribers_adapter.subscribe("[email protected]")

self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)
self.assertEqual(token, None)
self.assertEqual(status, ALREADY_SUBSCRIBED)

Expand All @@ -123,49 +117,35 @@ def test_activate_subscription_with_token(self):

def test_cant_delete_subscription_with_wrong_token(self):
status, token = self.subscribers_adapter.subscribe("[email protected]")
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)

status, res = self.subscribers_adapter.deleteUserWithSecret("xyz")
self.assertEqual(res, None)
self.assertEqual(status, INVALID_SECRET)

def test_cant_delete_subscription_with_wrong_email(self):
status, token = self.subscribers_adapter.subscribe("[email protected]")
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)

status = self.subscribers_adapter.deleteUser("[email protected]")
self.assertEqual(status, MAIL_NOT_PRESENT)

def test_delete_subscription_with_email(self):
status, token = self.subscribers_adapter.subscribe("[email protected]")
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)

status = self.subscribers_adapter.deleteUser("[email protected]")
self.assertEqual(status, OK)
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 0
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 0)

def test_delete_subscription_with_token(self):
status, token = self.subscribers_adapter.subscribe("[email protected]")
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)

status, res = self.subscribers_adapter.deleteUserWithSecret(
secret=token
)
status, res = self.subscribers_adapter.deleteUserWithSecret(secret=token)
self.assertEqual(res, "[email protected]")
self.assertEqual(status, OK)
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 0
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 0)

def test_add_user_required_mail(self):
self.assertRaises(TypeError, self.subscribers_adapter.addUser)
Expand All @@ -183,9 +163,7 @@ def test_unsubscribe_user_required_mail(self):

def test_unsubscribe_user_with_mail(self):
self.subscribers_adapter.addUser("[email protected]")
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)
subscribers = self.subscribers_adapter.channel_subscriptions
status, token = self.subscribers_adapter.unsubscribe("[email protected]")

Expand All @@ -194,9 +172,7 @@ def test_unsubscribe_user_with_mail(self):

def test_unsubscribe_user_with_wrong_mail(self):
self.subscribers_adapter.addUser("[email protected]")
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)

status, token = self.subscribers_adapter.unsubscribe("[email protected]")

Expand All @@ -214,21 +190,11 @@ def test_export_users_list(self):
self.assertEqual(len(res_json), 2)

def test_import_users_list(self):
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 0
)
self.subscribers_adapter.importUsersList(
["[email protected]", "[email protected]"]
)
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 2
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 0)
self.subscribers_adapter.importUsersList(["[email protected]", "[email protected]"])
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 2)

def test_import_users_list_with_wrong_mail(self):
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 0
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 0)
self.subscribers_adapter.importUsersList(["[email protected]", "bar"])
self.assertEqual(
len(self.subscribers_adapter.channel_subscriptions.keys()), 1
)
self.assertEqual(len(self.subscribers_adapter.channel_subscriptions.keys()), 1)
14 changes: 11 additions & 3 deletions src/rer/newsletter/upgrades.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
KEY = "rer.newsletter.channel.history"


def extract_send_history(item):
history = ContentHistoryView(item, item.REQUEST).fullHistory()
return [x for x in history if x["action"] == "Invio"]


def migrate_to_1001(context):
setup_tool = api.portal.get_tool("portal_setup")
setup_tool.runImportStepFromProfile(default_profile, "plone.app.registry")
Expand Down Expand Up @@ -83,6 +88,9 @@ def migrate_to_1004(context):
)


def extract_send_history(item):
history = ContentHistoryView(item, item.REQUEST).fullHistory()
return [x for x in history if x["action"] == "Invio"]
def migrate_to_1005(context):
setup_tool = api.portal.get_tool("portal_setup")
setup_tool.runImportStepFromProfile(
"profile-rer.newsletter:to_1005", "plone.app.registry"
)
logger.info("Updated to 1005")
9 changes: 8 additions & 1 deletion src/rer/newsletter/upgrades.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,12 @@
destination="1004"
handler=".upgrades.migrate_to_1004"
/>

<genericsetup:upgradeStep
title="Upgrade rer.newsletter to 1005"
description="Disable bundle"
profile="rer.newsletter:default"
source="1004"
destination="1005"
handler=".upgrades.migrate_to_1005"
/>
</configure>

0 comments on commit f1f1567

Please sign in to comment.