summaryrefslogtreecommitdiff
path: root/src/mailman/model/workflow.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/model/workflow.py')
-rw-r--r--src/mailman/model/workflow.py19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/mailman/model/workflow.py b/src/mailman/model/workflow.py
index d9f23f53b..6ac3fa76a 100644
--- a/src/mailman/model/workflow.py
+++ b/src/mailman/model/workflow.py
@@ -51,15 +51,18 @@ class WorkflowStateManager:
@dbconnection
def save(self, store, name, token, step=None, data=None):
"""See `IWorkflowStateManager`."""
- state = store.query(WorkflowState).get((name, token))
- if state is None:
- state = WorkflowState(name=name, token=token, step=step, data=data)
- store.add(state)
- else:
- state.step = step
- state.data = data
+ state = WorkflowState(name=name, token=token, step=step, data=data)
+ store.add(state)
@dbconnection
def restore(self, store, name, token):
"""See `IWorkflowStateManager`."""
- return store.query(WorkflowState).get((name, token))
+ state = store.query(WorkflowState).get((name, token))
+ if state is not None:
+ store.delete(state)
+ return state
+
+ @dbconnection
+ def count(self, store):
+ """See `IWorkflowStateManager`."""
+ return store.query(WorkflowState).count()