diff options
| author | J08nY | 2017-08-07 19:00:49 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-07 19:00:49 +0200 |
| commit | ee9da27283ffb7adc836f764f1442cd06e3fb2a5 (patch) | |
| tree | 2b687f39714580b1de70baf9e3dd9957326c4989 /src/mailman/interfaces | |
| parent | d107fd41f03b57f7731b60bb7ba921febc3ce3b9 (diff) | |
| parent | b902d7858d8302d248add89a5983c521c3581c4c (diff) | |
| download | mailman-plugin.tar.gz mailman-plugin.tar.zst mailman-plugin.zip | |
Diffstat (limited to 'src/mailman/interfaces')
| -rw-r--r-- | src/mailman/interfaces/subscriptions.py | 33 | ||||
| -rw-r--r-- | src/mailman/interfaces/workflows.py (renamed from src/mailman/interfaces/workflow.py) | 71 |
2 files changed, 68 insertions, 36 deletions
diff --git a/src/mailman/interfaces/subscriptions.py b/src/mailman/interfaces/subscriptions.py index 8de517c09..4a82da096 100644 --- a/src/mailman/interfaces/subscriptions.py +++ b/src/mailman/interfaces/subscriptions.py @@ -78,33 +78,6 @@ class TokenOwner(Enum): @public -class SubscriptionConfirmationNeededEvent: - """Triggered when a subscription needs confirmation. - - Addresses must be verified before they can receive messages or post - to mailing list. The confirmation message is sent to the user when - this event is triggered. - """ - def __init__(self, mlist, token, email): - self.mlist = mlist - self.token = token - self.email = email - - -@public -class UnsubscriptionConfirmationNeededEvent: - """Triggered when an unsubscription request needs confirmation. - - The confirmation message is sent to the user when this event is - triggered. - """ - def __init__(self, mlist, token, email): - self.mlist = mlist - self.token = token - self.email = email - - -@public class ISubscriptionService(Interface): """General subscription services.""" @@ -218,8 +191,7 @@ class ISubscriptionManager(Interface): To use this, adapt an ``IMailingList`` to this interface. """ - def register(subscriber=None, *, - pre_verified=False, pre_confirmed=False, pre_approved=False): + def register(subscriber=None, **kwargs): """Subscribe an address or user according to subscription policies. The mailing list's subscription policy is used to subscribe @@ -270,8 +242,7 @@ class ISubscriptionManager(Interface): appears in the global or list-centric bans. """ - def unregister(subscriber=None, *, - pre_confirmed=False, pre_approved=False): + def unregister(subscriber=None, **kwargs): """Unsubscribe an address or user according to subscription policies. The mailing list's unsubscription policy is used to unsubscribe diff --git a/src/mailman/interfaces/workflow.py b/src/mailman/interfaces/workflows.py index 5b3582b58..0fad52cca 100644 --- a/src/mailman/interfaces/workflow.py +++ b/src/mailman/interfaces/workflows.py @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License along with # GNU Mailman. If not, see <http://www.gnu.org/licenses/>. -"""Interfaces describing the state of a workflow.""" +"""Interfaces describing the a workflow, it's state and it's state manager.""" from public import public from zope.interface import Attribute, Interface @@ -27,7 +27,7 @@ class IWorkflowState(Interface): token = Attribute('A unique key identifying the workflow instance.') - step = Attribute("This workflow's next step.") + steps = Attribute("This workflow's next steps.") data = Attribute('Additional data (may be JSON-encoded).') @@ -36,13 +36,13 @@ class IWorkflowState(Interface): class IWorkflowStateManager(Interface): """The workflow states manager.""" - def save(token, step, data=None): + def save(token, steps, data=None): """Save the state of a workflow. :param token: A unique token identifying this workflow instance. :type token: str - :param step: The next step for this workflow. - :type step: str + :param steps: The next steps for this workflow. + :type steps: str :param data: Additional data (workflow-specific). :type data: str """ @@ -65,3 +65,64 @@ class IWorkflowStateManager(Interface): """ count = Attribute('The number of saved workflows in the database.') + + +@public +class IWorkflow(Interface): + """A workflow.""" + + name = Attribute('The name of the workflow, must be unique.') + description = Attribute('A brief description of the workflow.') + initial_state = Attribute('The state in which the workflow starts.') + save_attributes = Attribute('The sequence of attributes of the workflow, ' + 'which are saved.') + + def __iter__(): + """Return an iterator over the steps.""" + + def __next__(): + """Run the next step from the queue. + + :return: The result of the step run. + """ + + def push(step): + """Push a step to this workflows queue.""" + + def run_thru(stop_after): + """Run the state machine through and including the given step. + + :param stop_after: Name of method, sans prefix to run the + state machine through. In other words, the state machine runs + until the named method completes. + """ + + def run_until(stop_before): + """Run the state machine until (not including) the given step. + + :param stop_before: Name of method, sans prefix that the + state machine is run until the method is reached. Unlike + `run_thru()` the named method is not run. + """ + + def save(): + """Save the workflow in it's current state. + + Needs to have the `token` attribute set. + """ + + def restore(): + """Restore the workflow from the database. + + Needs to have the `token` attribute set. + """ + + +@public +class ISubscriptionWorkflow(IWorkflow): + """A workflow used for subscription.""" + + +@public +class IUnsubscriptionWorkflow(IWorkflow): + """A workflow used for unsubscription.""" |
