diff --git a/migrations/versions/86509963c525_.py b/migrations/versions/e7557de20067_.py similarity index 98% rename from migrations/versions/86509963c525_.py rename to migrations/versions/e7557de20067_.py index 624bc38d..a41d1ca1 100644 --- a/migrations/versions/86509963c525_.py +++ b/migrations/versions/e7557de20067_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: 86509963c525 +Revision ID: e7557de20067 Revises: -Create Date: 2022-06-30 11:55:54.677991 +Create Date: 2022-06-30 16:28:51.558359 """ from alembic import op @@ -10,7 +10,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision = '86509963c525' +revision = 'e7557de20067' down_revision = None branch_labels = None depends_on = None @@ -95,7 +95,7 @@ def upgrade(): sa.Column('spiffworkflow_task_id', sa.String(length=50), nullable=False), sa.Column('process_instance_id', sa.Integer(), nullable=False), sa.Column('assigned_principal_id', sa.Integer(), nullable=True), - sa.Column('process_instance_data', sa.Text(), nullable=True), + sa.Column('spiffworkflow_task_data', sa.Text(), nullable=True), sa.Column('status', sa.String(length=20), nullable=False), sa.Column('form_file_name', sa.String(length=50), nullable=True), sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True), diff --git a/src/spiffworkflow_backend/models/active_task.py b/src/spiffworkflow_backend/models/active_task.py index 2a78fc61..1f4f0a88 100644 --- a/src/spiffworkflow_backend/models/active_task.py +++ b/src/spiffworkflow_backend/models/active_task.py @@ -35,7 +35,7 @@ class ActiveTaskModel(SpiffworkflowBaseDBModel): ForeignKey(ProcessInstanceModel.id), nullable=False # type: ignore ) assigned_principal_id: int = db.Column(ForeignKey(PrincipalModel.id)) - process_instance_data: str = db.Column(db.Text) + spiffworkflow_task_data: str = db.Column(db.Text) status: str = db.Column(db.String(20), nullable=False) form_file_name: str | None = db.Column(db.String(50)) diff --git a/src/spiffworkflow_backend/routes/process_api_blueprint.py b/src/spiffworkflow_backend/routes/process_api_blueprint.py index b747789b..131c844c 100644 --- a/src/spiffworkflow_backend/routes/process_api_blueprint.py +++ b/src/spiffworkflow_backend/routes/process_api_blueprint.py @@ -474,8 +474,18 @@ def task_show(task_id: int) -> flask.wrappers.Response: file_contents = SpecFileService.get_data( process_model, active_task_assigned_to_me.form_file_name + ).decode("utf-8") + + spiffworkflow_data_json = json.loads( + active_task_assigned_to_me.spiffworkflow_task_data ) - active_task_assigned_to_me.form_json = file_contents.decode("utf-8") + + # trade out pieces like "{{variable_name}}" for the corresponding form data value + for key, value in spiffworkflow_data_json.items(): + if isinstance(value, str) or isinstance(value, int): + file_contents = file_contents.replace("{{" + key + "}}", str(value)) + + active_task_assigned_to_me.form_json = file_contents return make_response(jsonify(active_task_assigned_to_me), 200) diff --git a/src/spiffworkflow_backend/services/process_instance_processor.py b/src/spiffworkflow_backend/services/process_instance_processor.py index 205144a7..5710bd98 100644 --- a/src/spiffworkflow_backend/services/process_instance_processor.py +++ b/src/spiffworkflow_backend/services/process_instance_processor.py @@ -354,7 +354,7 @@ class ProcessInstanceProcessor: process_instance_id=self.process_instance_model.id, # FIXME: look for the correct principal based on ready_or_waiting_task.lane assigned_principal_id=PrincipalModel.query.first().id, - process_instance_data=json.dumps(self.get_data()), + spiffworkflow_task_data=json.dumps(ready_or_waiting_task.data), status=ready_or_waiting_task.state.name, form_file_name=form_file_name, )