move helpers where they belong
This commit is contained in:
parent
67086c2b40
commit
7436a6fc23
|
@ -2,7 +2,6 @@
|
||||||
import json
|
import json
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
import connexion # type: ignore
|
import connexion # type: ignore
|
||||||
import flask.wrappers
|
import flask.wrappers
|
||||||
|
@ -33,11 +32,9 @@ from spiffworkflow_backend.models.process_instance import (
|
||||||
)
|
)
|
||||||
from spiffworkflow_backend.models.process_model import ProcessModelInfo
|
from spiffworkflow_backend.models.process_model import ProcessModelInfo
|
||||||
from spiffworkflow_backend.models.spec_reference import SpecReferenceCache
|
from spiffworkflow_backend.models.spec_reference import SpecReferenceCache
|
||||||
from spiffworkflow_backend.models.spec_reference import SpecReferenceNotFoundError
|
|
||||||
from spiffworkflow_backend.models.spec_reference import SpecReferenceSchema
|
from spiffworkflow_backend.models.spec_reference import SpecReferenceSchema
|
||||||
from spiffworkflow_backend.routes.user import verify_token
|
from spiffworkflow_backend.routes.user import verify_token
|
||||||
from spiffworkflow_backend.services.authorization_service import AuthorizationService
|
from spiffworkflow_backend.services.authorization_service import AuthorizationService
|
||||||
from spiffworkflow_backend.services.git_service import GitCommandError
|
|
||||||
from spiffworkflow_backend.services.git_service import GitService
|
from spiffworkflow_backend.services.git_service import GitService
|
||||||
from spiffworkflow_backend.services.process_instance_processor import (
|
from spiffworkflow_backend.services.process_instance_processor import (
|
||||||
ProcessInstanceProcessor,
|
ProcessInstanceProcessor,
|
||||||
|
@ -45,7 +42,6 @@ from spiffworkflow_backend.services.process_instance_processor import (
|
||||||
from spiffworkflow_backend.services.process_model_service import ProcessModelService
|
from spiffworkflow_backend.services.process_model_service import ProcessModelService
|
||||||
from spiffworkflow_backend.services.secret_service import SecretService
|
from spiffworkflow_backend.services.secret_service import SecretService
|
||||||
from spiffworkflow_backend.services.service_task_service import ServiceTaskService
|
from spiffworkflow_backend.services.service_task_service import ServiceTaskService
|
||||||
from spiffworkflow_backend.services.spec_file_service import SpecFileService
|
|
||||||
|
|
||||||
|
|
||||||
process_api_blueprint = Blueprint("process_api", __name__)
|
process_api_blueprint = Blueprint("process_api", __name__)
|
||||||
|
@ -166,20 +162,6 @@ def process_data_show(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _find_principal_or_raise() -> PrincipalModel:
|
|
||||||
"""Find_principal_or_raise."""
|
|
||||||
principal = PrincipalModel.query.filter_by(user_id=g.user.id).first()
|
|
||||||
if principal is None:
|
|
||||||
raise (
|
|
||||||
ApiError(
|
|
||||||
error_code="principal_not_found",
|
|
||||||
message=f"Principal not found from user id: {g.user.id}",
|
|
||||||
status_code=400,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return principal # type: ignore
|
|
||||||
|
|
||||||
|
|
||||||
# sample body:
|
# sample body:
|
||||||
# {"ref": "refs/heads/main", "repository": {"name": "sample-process-models",
|
# {"ref": "refs/heads/main", "repository": {"name": "sample-process-models",
|
||||||
# "full_name": "sartography/sample-process-models", "private": False .... }}
|
# "full_name": "sartography/sample-process-models", "private": False .... }}
|
||||||
|
@ -340,69 +322,6 @@ def _find_process_instance_by_id_or_raise(
|
||||||
return process_instance # type: ignore
|
return process_instance # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def _get_process_instance(
|
|
||||||
modified_process_model_identifier: str,
|
|
||||||
process_instance: ProcessInstanceModel,
|
|
||||||
process_identifier: Optional[str] = None,
|
|
||||||
) -> flask.wrappers.Response:
|
|
||||||
"""_get_process_instance."""
|
|
||||||
process_model_identifier = modified_process_model_identifier.replace(":", "/")
|
|
||||||
try:
|
|
||||||
current_version_control_revision = GitService.get_current_revision()
|
|
||||||
except GitCommandError:
|
|
||||||
current_version_control_revision = ""
|
|
||||||
|
|
||||||
process_model_with_diagram = None
|
|
||||||
name_of_file_with_diagram = None
|
|
||||||
if process_identifier:
|
|
||||||
spec_reference = SpecReferenceCache.query.filter_by(
|
|
||||||
identifier=process_identifier, type="process"
|
|
||||||
).first()
|
|
||||||
if spec_reference is None:
|
|
||||||
raise SpecReferenceNotFoundError(
|
|
||||||
f"Could not find given process identifier in the cache: {process_identifier}"
|
|
||||||
)
|
|
||||||
|
|
||||||
process_model_with_diagram = ProcessModelService.get_process_model(
|
|
||||||
spec_reference.process_model_id
|
|
||||||
)
|
|
||||||
name_of_file_with_diagram = spec_reference.file_name
|
|
||||||
else:
|
|
||||||
process_model_with_diagram = _get_process_model(process_model_identifier)
|
|
||||||
if process_model_with_diagram.primary_file_name:
|
|
||||||
name_of_file_with_diagram = process_model_with_diagram.primary_file_name
|
|
||||||
|
|
||||||
if process_model_with_diagram and name_of_file_with_diagram:
|
|
||||||
if (
|
|
||||||
process_instance.bpmn_version_control_identifier
|
|
||||||
== current_version_control_revision
|
|
||||||
):
|
|
||||||
bpmn_xml_file_contents = SpecFileService.get_data(
|
|
||||||
process_model_with_diagram, name_of_file_with_diagram
|
|
||||||
).decode("utf-8")
|
|
||||||
else:
|
|
||||||
bpmn_xml_file_contents = GitService.get_instance_file_contents_for_revision(
|
|
||||||
process_model_with_diagram,
|
|
||||||
process_instance.bpmn_version_control_identifier,
|
|
||||||
file_name=name_of_file_with_diagram,
|
|
||||||
)
|
|
||||||
process_instance.bpmn_xml_file_contents = bpmn_xml_file_contents
|
|
||||||
|
|
||||||
return make_response(jsonify(process_instance), 200)
|
|
||||||
|
|
||||||
|
|
||||||
def _get_file_from_request() -> Any:
|
|
||||||
"""Get_file_from_request."""
|
|
||||||
request_file = connexion.request.files.get("file")
|
|
||||||
if not request_file:
|
|
||||||
raise ApiError(
|
|
||||||
error_code="no_file_given",
|
|
||||||
message="Given request does not contain a file",
|
|
||||||
status_code=400,
|
|
||||||
)
|
|
||||||
return request_file
|
|
||||||
|
|
||||||
|
|
||||||
# process_model_id uses forward slashes on all OSes
|
# process_model_id uses forward slashes on all OSes
|
||||||
# this seems to return an object where process_model.id has backslashes on windows
|
# this seems to return an object where process_model.id has backslashes on windows
|
||||||
def _get_process_model(process_model_id: str) -> ProcessModelInfo:
|
def _get_process_model(process_model_id: str) -> ProcessModelInfo:
|
||||||
|
@ -420,3 +339,17 @@ def _get_process_model(process_model_id: str) -> ProcessModelInfo:
|
||||||
) from exception
|
) from exception
|
||||||
|
|
||||||
return process_model
|
return process_model
|
||||||
|
|
||||||
|
|
||||||
|
def _find_principal_or_raise() -> PrincipalModel:
|
||||||
|
"""Find_principal_or_raise."""
|
||||||
|
principal = PrincipalModel.query.filter_by(user_id=g.user.id).first()
|
||||||
|
if principal is None:
|
||||||
|
raise (
|
||||||
|
ApiError(
|
||||||
|
error_code="principal_not_found",
|
||||||
|
message=f"Principal not found from user id: {g.user.id}",
|
||||||
|
status_code=400,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return principal # type: ignore
|
||||||
|
|
|
@ -27,6 +27,8 @@ from spiffworkflow_backend.models.process_instance_metadata import (
|
||||||
from spiffworkflow_backend.models.process_instance_report import (
|
from spiffworkflow_backend.models.process_instance_report import (
|
||||||
ProcessInstanceReportModel,
|
ProcessInstanceReportModel,
|
||||||
)
|
)
|
||||||
|
from spiffworkflow_backend.models.spec_reference import SpecReferenceCache
|
||||||
|
from spiffworkflow_backend.models.spec_reference import SpecReferenceNotFoundError
|
||||||
from spiffworkflow_backend.models.spiff_logging import SpiffLoggingModel
|
from spiffworkflow_backend.models.spiff_logging import SpiffLoggingModel
|
||||||
from spiffworkflow_backend.models.spiff_step_details import SpiffStepDetailsModel
|
from spiffworkflow_backend.models.spiff_step_details import SpiffStepDetailsModel
|
||||||
from spiffworkflow_backend.models.user import UserModel
|
from spiffworkflow_backend.models.user import UserModel
|
||||||
|
@ -36,11 +38,13 @@ from spiffworkflow_backend.routes.process_api_blueprint import (
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import (
|
from spiffworkflow_backend.routes.process_api_blueprint import (
|
||||||
_find_process_instance_for_me_or_raise,
|
_find_process_instance_for_me_or_raise,
|
||||||
)
|
)
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import _get_process_instance
|
from spiffworkflow_backend.routes.process_api_blueprint import _get_process_model
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import (
|
from spiffworkflow_backend.routes.process_api_blueprint import (
|
||||||
_un_modify_modified_process_model_id,
|
_un_modify_modified_process_model_id,
|
||||||
)
|
)
|
||||||
from spiffworkflow_backend.services.error_handling_service import ErrorHandlingService
|
from spiffworkflow_backend.services.error_handling_service import ErrorHandlingService
|
||||||
|
from spiffworkflow_backend.services.git_service import GitCommandError
|
||||||
|
from spiffworkflow_backend.services.git_service import GitService
|
||||||
from spiffworkflow_backend.services.message_service import MessageService
|
from spiffworkflow_backend.services.message_service import MessageService
|
||||||
from spiffworkflow_backend.services.process_instance_processor import (
|
from spiffworkflow_backend.services.process_instance_processor import (
|
||||||
ProcessInstanceProcessor,
|
ProcessInstanceProcessor,
|
||||||
|
@ -54,6 +58,8 @@ from spiffworkflow_backend.services.process_instance_report_service import (
|
||||||
from spiffworkflow_backend.services.process_instance_service import (
|
from spiffworkflow_backend.services.process_instance_service import (
|
||||||
ProcessInstanceService,
|
ProcessInstanceService,
|
||||||
)
|
)
|
||||||
|
from spiffworkflow_backend.services.process_model_service import ProcessModelService
|
||||||
|
from spiffworkflow_backend.services.spec_file_service import SpecFileService
|
||||||
|
|
||||||
|
|
||||||
def process_instance_create(
|
def process_instance_create(
|
||||||
|
@ -551,3 +557,54 @@ def process_instance_task_list(
|
||||||
tasks.append(task)
|
tasks.append(task)
|
||||||
|
|
||||||
return make_response(jsonify(tasks), 200)
|
return make_response(jsonify(tasks), 200)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_process_instance(
|
||||||
|
modified_process_model_identifier: str,
|
||||||
|
process_instance: ProcessInstanceModel,
|
||||||
|
process_identifier: Optional[str] = None,
|
||||||
|
) -> flask.wrappers.Response:
|
||||||
|
"""_get_process_instance."""
|
||||||
|
process_model_identifier = modified_process_model_identifier.replace(":", "/")
|
||||||
|
try:
|
||||||
|
current_version_control_revision = GitService.get_current_revision()
|
||||||
|
except GitCommandError:
|
||||||
|
current_version_control_revision = ""
|
||||||
|
|
||||||
|
process_model_with_diagram = None
|
||||||
|
name_of_file_with_diagram = None
|
||||||
|
if process_identifier:
|
||||||
|
spec_reference = SpecReferenceCache.query.filter_by(
|
||||||
|
identifier=process_identifier, type="process"
|
||||||
|
).first()
|
||||||
|
if spec_reference is None:
|
||||||
|
raise SpecReferenceNotFoundError(
|
||||||
|
f"Could not find given process identifier in the cache: {process_identifier}"
|
||||||
|
)
|
||||||
|
|
||||||
|
process_model_with_diagram = ProcessModelService.get_process_model(
|
||||||
|
spec_reference.process_model_id
|
||||||
|
)
|
||||||
|
name_of_file_with_diagram = spec_reference.file_name
|
||||||
|
else:
|
||||||
|
process_model_with_diagram = _get_process_model(process_model_identifier)
|
||||||
|
if process_model_with_diagram.primary_file_name:
|
||||||
|
name_of_file_with_diagram = process_model_with_diagram.primary_file_name
|
||||||
|
|
||||||
|
if process_model_with_diagram and name_of_file_with_diagram:
|
||||||
|
if (
|
||||||
|
process_instance.bpmn_version_control_identifier
|
||||||
|
== current_version_control_revision
|
||||||
|
):
|
||||||
|
bpmn_xml_file_contents = SpecFileService.get_data(
|
||||||
|
process_model_with_diagram, name_of_file_with_diagram
|
||||||
|
).decode("utf-8")
|
||||||
|
else:
|
||||||
|
bpmn_xml_file_contents = GitService.get_instance_file_contents_for_revision(
|
||||||
|
process_model_with_diagram,
|
||||||
|
process_instance.bpmn_version_control_identifier,
|
||||||
|
file_name=name_of_file_with_diagram,
|
||||||
|
)
|
||||||
|
process_instance.bpmn_xml_file_contents = bpmn_xml_file_contents
|
||||||
|
|
||||||
|
return make_response(jsonify(process_instance), 200)
|
||||||
|
|
|
@ -5,6 +5,7 @@ from typing import Dict
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
|
import connexion # type: ignore
|
||||||
import flask.wrappers
|
import flask.wrappers
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from flask import g
|
from flask import g
|
||||||
|
@ -17,7 +18,6 @@ from spiffworkflow_backend.models.file import FileSchema
|
||||||
from spiffworkflow_backend.models.process_model import ProcessModelInfo
|
from spiffworkflow_backend.models.process_model import ProcessModelInfo
|
||||||
from spiffworkflow_backend.models.process_model import ProcessModelInfoSchema
|
from spiffworkflow_backend.models.process_model import ProcessModelInfoSchema
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import _commit_and_push_to_git
|
from spiffworkflow_backend.routes.process_api_blueprint import _commit_and_push_to_git
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import _get_file_from_request
|
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import _get_process_model
|
from spiffworkflow_backend.routes.process_api_blueprint import _get_process_model
|
||||||
from spiffworkflow_backend.routes.process_api_blueprint import (
|
from spiffworkflow_backend.routes.process_api_blueprint import (
|
||||||
_un_modify_modified_process_model_id,
|
_un_modify_modified_process_model_id,
|
||||||
|
@ -301,3 +301,15 @@ def process_model_file_show(
|
||||||
file.process_model_id = process_model.id
|
file.process_model_id = process_model.id
|
||||||
# file.process_group_id = process_model.process_group_id
|
# file.process_group_id = process_model.process_group_id
|
||||||
return FileSchema().dump(file)
|
return FileSchema().dump(file)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_file_from_request() -> Any:
|
||||||
|
"""Get_file_from_request."""
|
||||||
|
request_file = connexion.request.files.get("file")
|
||||||
|
if not request_file:
|
||||||
|
raise ApiError(
|
||||||
|
error_code="no_file_given",
|
||||||
|
message="Given request does not contain a file",
|
||||||
|
status_code=400,
|
||||||
|
)
|
||||||
|
return request_file
|
||||||
|
|
Loading…
Reference in New Issue