diff options
| author | Aurélien Bompard | 2015-03-25 19:21:38 +0100 |
|---|---|---|
| committer | Aurélien Bompard | 2015-03-25 19:21:38 +0100 |
| commit | 035d023662e1347e7dc3a5347d17932bfbe8c7e3 (patch) | |
| tree | 492ed913e0dd5df2c819261d358c73c4ea989873 /src/mailman/model/workflowstate.py | |
| parent | 990f3c63814bcfddef2e661248c44e67e945de04 (diff) | |
| download | mailman-035d023662e1347e7dc3a5347d17932bfbe8c7e3.tar.gz mailman-035d023662e1347e7dc3a5347d17932bfbe8c7e3.tar.zst mailman-035d023662e1347e7dc3a5347d17932bfbe8c7e3.zip | |
Diffstat (limited to 'src/mailman/model/workflowstate.py')
| -rw-r--r-- | src/mailman/model/workflowstate.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mailman/model/workflowstate.py b/src/mailman/model/workflowstate.py index 5e3301dcf..ee0226d61 100644 --- a/src/mailman/model/workflowstate.py +++ b/src/mailman/model/workflowstate.py @@ -19,11 +19,14 @@ __all__ = [ 'WorkflowState', + 'WorkflowStateManager', ] from mailman.database.model import Model -from mailman.interfaces.workflowstate import IWorkflowState +from mailman.database.transaction import dbconnection +from mailman.interfaces.workflowstate import ( + IWorkflowState, IWorkflowStateManager) from sqlalchemy import Column, Unicode from zope.interface import implementer @@ -39,3 +42,25 @@ class WorkflowState(Model): key = Column(Unicode, primary_key=True) step = Column(Unicode, nullable=False) data = Column(Unicode) + + + +@implementer(IWorkflowStateManager) +class WorkflowStateManager: + """See `IWorkflowStateManager`.""" + + @dbconnection + def save(self, store, name, key, step, data=None): + """See `IWorkflowStateManager`.""" + state = store.query(WorkflowState).get((name, key)) + if state is None: + state = store.add(WorkflowState( + name=name, key=key, step=step, data=data)) + else: + state.step = step + state.data = data + + @dbconnection + def restore(self, store, name, key): + """See `IWorkflowStateManager`.""" + return store.query(WorkflowState).get((name, key)) |
