Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits:
46e7315c by Mark Sapiro at 2021-04-11T13:40:24-07:00
Deletion of a pending request deletes associated workflow.
- - - - -
2e7e53e3 by Mark Sapiro at 2021-04-11T21:07:52+00:00
Merge branch 'wf' into 'master'
Deletion of a pending request deletes associated workflow.
See merge request mailman/mailman!825
- - - - -
3 changed files:
- src/mailman/docs/NEWS.rst
- src/mailman/model/pending.py
- src/mailman/model/tests/test_pending.py
Changes:
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -27,6 +27,8 @@ Bugs
triggering DSN. (Closes #737)
* Handling a held message now also removes the poster's pending
``held message`` from the pending db. (Closes #257)
+* Deleting a pending request now also deletes any associated workflow.
+ (See #853)
Command line
------------
=====================================
src/mailman/model/pending.py
=====================================
@@ -26,11 +26,13 @@ from mailman.database.transaction import dbconnection
from mailman.database.types import SAUnicode, SAUnicodeXL
from mailman.interfaces.pending import (
IPendable, IPended, IPendedKeyValue, IPendings)
+from mailman.interfaces.workflow import IWorkflowStateManager
from mailman.utilities.datetime import now
from mailman.utilities.uid import TokenFactory
from public import public
from sqlalchemy import Column, DateTime, ForeignKey, Index, Integer, and_
from sqlalchemy.orm import aliased, relationship
+from zope.component import getUtility
from zope.interface import implementer
from zope.interface.verify import verifyObject
@@ -146,6 +148,8 @@ class Pendings:
pendable[keyvalue.key] = value
if expunge:
store.delete(pending)
+ # Discard associated workflow if any.
+ getUtility(IWorkflowStateManager).discard(token)
return pendable
@dbconnection
=====================================
src/mailman/model/tests/test_pending.py
=====================================
@@ -23,6 +23,7 @@ from mailman.app.lifecycle import create_list
from mailman.config import config
from mailman.interfaces.pending import IPendable, IPendings
from mailman.interfaces.subscriptions import TokenOwner
+from mailman.interfaces.workflow import IWorkflowStateManager
from mailman.model.pending import PendedKeyValue
from mailman.testing.layers import ConfigLayer
from zope.component import getUtility
@@ -54,6 +55,22 @@ class TestPendings(unittest.TestCase):
self.assertEqual(pendingdb.count(), 0)
self.assertEqual(config.db.store.query(PendedKeyValue).count(), 0)
+ def test_delete_workflow(self):
+ # Deleting a pending should delete any associated workflow state.
+ pendingdb = getUtility(IPendings)
+ wsmanager = getUtility(IWorkflowStateManager)
+ subscription = SimplePendable(
+ type='subscription',
+ address='[email protected]',
+ display_name='Anne Person',
+ language='en',
+ password='xyz')
+ token = pendingdb.add(subscription)
+ wsmanager.save(token, step='step1', data='data')
+ self.assertEqual(wsmanager.count, 1)
+ pendingdb.confirm(token)
+ self.assertEqual(wsmanager.count, 0)
+
def test_find(self):
# Test getting pendables for a mailing-list.
mlist = create_list('[email protected]')
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/2b05e8441265ae5edb14a5896c45f4c20213df69...2e7e53e381a49f78b289d8a359e28f4e0e16089d
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/2b05e8441265ae5edb14a5896c45f4c20213df69...2e7e53e381a49f78b289d8a359e28f4e0e16089d
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]