some support to interpolate form data w/ burnettk

This commit is contained in:
jasquat 2022-06-30 17:11:50 -04:00
parent 1f7a35de50
commit 80696f5f23
4 changed files with 17 additions and 7 deletions

View File

@ -1,8 +1,8 @@
"""empty message """empty message
Revision ID: 86509963c525 Revision ID: e7557de20067
Revises: Revises:
Create Date: 2022-06-30 11:55:54.677991 Create Date: 2022-06-30 16:28:51.558359
""" """
from alembic import op from alembic import op
@ -10,7 +10,7 @@ import sqlalchemy as sa
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = '86509963c525' revision = 'e7557de20067'
down_revision = None down_revision = None
branch_labels = None branch_labels = None
depends_on = None depends_on = None
@ -95,7 +95,7 @@ def upgrade():
sa.Column('spiffworkflow_task_id', sa.String(length=50), nullable=False), sa.Column('spiffworkflow_task_id', sa.String(length=50), nullable=False),
sa.Column('process_instance_id', sa.Integer(), nullable=False), sa.Column('process_instance_id', sa.Integer(), nullable=False),
sa.Column('assigned_principal_id', sa.Integer(), nullable=True), 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('status', sa.String(length=20), nullable=False),
sa.Column('form_file_name', sa.String(length=50), nullable=True), sa.Column('form_file_name', sa.String(length=50), nullable=True),
sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True), sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True),

View File

@ -35,7 +35,7 @@ class ActiveTaskModel(SpiffworkflowBaseDBModel):
ForeignKey(ProcessInstanceModel.id), nullable=False # type: ignore ForeignKey(ProcessInstanceModel.id), nullable=False # type: ignore
) )
assigned_principal_id: int = db.Column(ForeignKey(PrincipalModel.id)) 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) status: str = db.Column(db.String(20), nullable=False)
form_file_name: str | None = db.Column(db.String(50)) form_file_name: str | None = db.Column(db.String(50))

View File

@ -474,8 +474,18 @@ def task_show(task_id: int) -> flask.wrappers.Response:
file_contents = SpecFileService.get_data( file_contents = SpecFileService.get_data(
process_model, active_task_assigned_to_me.form_file_name 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) return make_response(jsonify(active_task_assigned_to_me), 200)

View File

@ -354,7 +354,7 @@ class ProcessInstanceProcessor:
process_instance_id=self.process_instance_model.id, process_instance_id=self.process_instance_model.id,
# FIXME: look for the correct principal based on ready_or_waiting_task.lane # FIXME: look for the correct principal based on ready_or_waiting_task.lane
assigned_principal_id=PrincipalModel.query.first().id, 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, status=ready_or_waiting_task.state.name,
form_file_name=form_file_name, form_file_name=form_file_name,
) )