mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-21 20:28:10 +00:00
Adds task counts
This commit is contained in:
parent
e91d7aff2f
commit
f1b6718068
@ -749,6 +749,12 @@ components:
|
||||
type: string
|
||||
is_latest_spec:
|
||||
type: boolean
|
||||
num_tasks_total:
|
||||
type: integer
|
||||
num_tasks_complete:
|
||||
type: integer
|
||||
num_tasks_incomplete:
|
||||
type: integer
|
||||
|
||||
example:
|
||||
id: 291234
|
||||
|
@ -61,7 +61,6 @@ def delete_workflow_specification(spec_id):
|
||||
|
||||
session.query(WorkflowModel).filter_by(workflow_spec_id=spec_id).delete()
|
||||
session.query(WorkflowSpecModel).filter_by(id=spec_id).delete()
|
||||
|
||||
session.commit()
|
||||
|
||||
|
||||
@ -94,6 +93,7 @@ def delete(workflow_id):
|
||||
session.query(WorkflowModel).filter_by(id=workflow_id).delete()
|
||||
session.commit()
|
||||
|
||||
|
||||
def get_task(workflow_id, task_id):
|
||||
workflow = session.query(WorkflowModel).filter_by(id=workflow_id).first()
|
||||
return workflow.bpmn_workflow().get_task(task_id)
|
||||
@ -111,5 +111,6 @@ def update_task(workflow_id, task_id, body):
|
||||
workflow_model.bpmn_workflow_json = processor.serialize()
|
||||
session.add(workflow_model)
|
||||
session.commit()
|
||||
return WorkflowApiSchema().dump(__get_workflow_api_model(processor)
|
||||
)
|
||||
return WorkflowApiSchema().dump(__get_workflow_api_model(processor))
|
||||
|
||||
|
||||
|
@ -108,17 +108,44 @@ class WorkflowApi(object):
|
||||
class WorkflowApiSchema(ma.Schema):
|
||||
class Meta:
|
||||
model = WorkflowApi
|
||||
fields = ["id", "status",
|
||||
"user_tasks", "last_task", "next_task",
|
||||
"workflow_spec_id",
|
||||
"spec_version", "is_latest_spec"]
|
||||
fields = ["id", "status", "user_tasks", "last_task", "next_task",
|
||||
"workflow_spec_id", "spec_version", "is_latest_spec",
|
||||
"num_tasks_total", "num_tasks_complete", "num_tasks_incomplete"]
|
||||
unknown = INCLUDE
|
||||
|
||||
status = EnumField(WorkflowStatus)
|
||||
user_tasks = marshmallow.fields.List(marshmallow.fields.Nested(TaskSchema, dump_only=True))
|
||||
last_task = marshmallow.fields.Nested(TaskSchema, dump_only=True)
|
||||
next_task = marshmallow.fields.Nested(TaskSchema, dump_only=True, required=False)
|
||||
num_tasks_total = marshmallow.fields.Method('get_num_tasks_total')
|
||||
num_tasks_complete = marshmallow.fields.Method('get_num_tasks_complete')
|
||||
num_tasks_incomplete = marshmallow.fields.Method('get_num_tasks_incomplete')
|
||||
|
||||
@marshmallow.post_load
|
||||
def make_workflow(self, data, **kwargs):
|
||||
return WorkflowApi(**data)
|
||||
keys = [
|
||||
'id',
|
||||
'status',
|
||||
'user_tasks',
|
||||
'last_task',
|
||||
'next_task',
|
||||
'workflow_spec_id',
|
||||
'spec_version',
|
||||
'is_latest_spec'
|
||||
]
|
||||
filtered_fields = {key: data[key] for key in keys}
|
||||
return WorkflowApi(**filtered_fields)
|
||||
|
||||
def get_num_tasks_total(self, obj):
|
||||
tasks = list(obj.user_tasks)
|
||||
return len(tasks)
|
||||
|
||||
def get_num_tasks_complete(self, obj):
|
||||
complete_states = ['CANCELLED', 'COMPLETED']
|
||||
tasks = list(obj.user_tasks)
|
||||
return sum(1 for t in tasks if t.state in complete_states)
|
||||
|
||||
def get_num_tasks_incomplete(self, obj):
|
||||
incomplete_states = ['MAYBE', 'LIKELY', 'FUTURE', 'WAITING', 'READY']
|
||||
tasks = list(obj.user_tasks)
|
||||
return sum(1 for t in tasks if t.state in incomplete_states)
|
||||
|
Loading…
x
Reference in New Issue
Block a user