update import tickets script

This commit is contained in:
burnettk 2022-07-06 22:59:44 -04:00
parent 1dcfe2e453
commit 7249fa69e1

View File

@ -12,38 +12,50 @@
<bpmn:scriptTask id="Activity_17wwliq" name="Import tickets from csv inside backend" scriptFormat="python"> <bpmn:scriptTask id="Activity_17wwliq" name="Import tickets from csv inside backend" scriptFormat="python">
<bpmn:incoming>Flow_0pvp5mz</bpmn:incoming> <bpmn:incoming>Flow_0pvp5mz</bpmn:incoming>
<bpmn:outgoing>Flow_04qc4ur</bpmn:outgoing> <bpmn:outgoing>Flow_04qc4ur</bpmn:outgoing>
<bpmn:script>import os <bpmn:script>"""Import tickets, for use in script task."""
from flask_bpmn.models.db import db
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
import csv
from spiffworkflow_backend import create_app
from spiffworkflow_backend.models.user import UserModel
from spiffworkflow_backend.services.process_instance_processor import ProcessInstanceProcessor
from spiffworkflow_backend.services.process_instance_service import ProcessInstanceService
from flask import current_app
from spiffworkflow_backend.services.process_model_service import ProcessModelService
process_model_identifier_ticket = "ticket" def main():
db.session.query(ProcessInstanceModel).filter(ProcessInstanceModel.process_model_identifier == process_model_identifier_ticket).delete() """Use main to avoid global namespace."""
db.session.commit() import csv
"""Print process instance count.""" from flask_bpmn.models.db import db
process_instances = ProcessInstanceModel.query.filter_by(process_model_identifier=process_model_identifier_ticket).all()
process_instance_count = len(process_instances)
print(f"process_instance_count: {process_instance_count}")
process_model = ProcessModelService().get_process_model(process_model_identifier_ticket) from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
columns_to_data_key_mappings = {"Month": "month", "MS": "milestone", "ID": "req_id", "Dev Days": "dev_days", "Feature": "feature", "Priority": "priority"} from spiffworkflow_backend.models.user import UserModel
columns_to_header_index_mappings = {} from spiffworkflow_backend.services.process_instance_processor import (
ProcessInstanceProcessor,
)
from spiffworkflow_backend.services.process_instance_service import (
ProcessInstanceService,
)
user = UserModel.query.filter_by(username='test_user1').first() process_model_identifier_ticket = "ticket"
db.session.query(ProcessInstanceModel).filter(
ProcessInstanceModel.process_model_identifier == process_model_identifier_ticket
).delete()
db.session.commit()
with open("tests/files/tickets.csv") as infile: """Print process instance count."""
process_instances = ProcessInstanceModel.query.filter_by(
process_model_identifier=process_model_identifier_ticket
).all()
process_instance_count = len(process_instances)
print(f"process_instance_count: {process_instance_count}")
columns_to_data_key_mappings = {
"Month": "month",
"MS": "milestone",
"ID": "req_id",
"Dev Days": "dev_days",
"Feature": "feature",
"Priority": "priority",
}
columns_to_header_index_mappings = {}
user = UserModel.query.filter_by(username="test_user1").first()
with open("tests/files/tickets.csv") as infile:
reader = csv.reader(infile, delimiter=",") reader = csv.reader(infile, delimiter=",")
# first row is garbage # first row is garbage
@ -54,15 +66,18 @@ with open("tests/files/tickets.csv") as infile:
columns_to_header_index_mappings[column_name] = header.index(column_name) columns_to_header_index_mappings[column_name] = header.index(column_name)
id_index = header.index("ID") id_index = header.index("ID")
priority_index = header.index("Priority") priority_index = header.index("Priority")
month_index = header.index("Month")
print(f"header: {header}") print(f"header: {header}")
for row in reader: for row in reader:
ticket_identifier = row[id_index] ticket_identifier = row[id_index]
priority = row[priority_index] priority = row[priority_index]
month = row[month_index]
print(f"ticket_identifier: {ticket_identifier}") print(f"ticket_identifier: {ticket_identifier}")
print(f"priority: {priority}") print(f"priority: {priority}")
# if there is no month, who cares about it.
if month:
process_instance = ProcessInstanceService.create_process_instance( process_instance = ProcessInstanceService.create_process_instance(
process_model_identifier_ticket, user process_model_identifier=process_model_identifier_ticket, user=user, process_group_identifier='sartography-admin'
) )
processor = ProcessInstanceProcessor(process_instance) processor = ProcessInstanceProcessor(process_instance)
@ -72,7 +87,9 @@ with open("tests/files/tickets.csv") as infile:
for column_name, desired_data_key in columns_to_data_key_mappings.items(): for column_name, desired_data_key in columns_to_data_key_mappings.items():
appropriate_index = columns_to_header_index_mappings[column_name] appropriate_index = columns_to_header_index_mappings[column_name]
print(f"appropriate_index: {appropriate_index}") print(f"appropriate_index: {appropriate_index}")
processor.bpmn_process_instance.data[desired_data_key] = row[appropriate_index] processor.bpmn_process_instance.data[desired_data_key] = row[
appropriate_index
]
# you at least need a month, or else this row in the csv is considered garbage # you at least need a month, or else this row in the csv is considered garbage
month_value = processor.bpmn_process_instance.data["month"] month_value = processor.bpmn_process_instance.data["month"]
@ -85,6 +102,12 @@ with open("tests/files/tickets.csv") as infile:
process_instance_data = processor.get_data() process_instance_data = processor.get_data()
print(f"process_instance_data: {process_instance_data}") print(f"process_instance_data: {process_instance_data}")
main()
# to avoid serialization issues
del main
</bpmn:script> </bpmn:script>
</bpmn:scriptTask> </bpmn:scriptTask>
</bpmn:process> </bpmn:process>