remove the publish button if backend is not configured to publish w/ burnettk (#473)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
This commit is contained in:
parent
f0fdf51a87
commit
a7556dc958
|
@ -53,6 +53,8 @@ class ProcessModelInfo:
|
||||||
# TODO: delete these once they no no longer mentioned in current process_model.json files
|
# TODO: delete these once they no no longer mentioned in current process_model.json files
|
||||||
display_order: int | None = 0
|
display_order: int | None = 0
|
||||||
|
|
||||||
|
actions: dict | None = None
|
||||||
|
|
||||||
def __post_init__(self) -> None:
|
def __post_init__(self) -> None:
|
||||||
self.sort_index = self.id
|
self.sort_index = self.id
|
||||||
|
|
||||||
|
|
|
@ -157,6 +157,14 @@ def process_model_show(modified_process_model_identifier: str, include_file_refe
|
||||||
current_git_revision = ""
|
current_git_revision = ""
|
||||||
|
|
||||||
process_model.bpmn_version_control_identifier = current_git_revision
|
process_model.bpmn_version_control_identifier = current_git_revision
|
||||||
|
|
||||||
|
available_actions = {}
|
||||||
|
if GitService.check_for_publish_configs(raise_on_missing=False):
|
||||||
|
available_actions = {
|
||||||
|
"publish": {"path": f"/process-model-publish/{modified_process_model_identifier}", "method": "POST"}
|
||||||
|
}
|
||||||
|
process_model.actions = available_actions
|
||||||
|
|
||||||
return make_response(jsonify(process_model), 200)
|
return make_response(jsonify(process_model), 200)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -84,26 +84,35 @@ class GitService:
|
||||||
return cls.run_shell_command_to_get_stdout(shell_command)
|
return cls.run_shell_command_to_get_stdout(shell_command)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_for_basic_configs(cls) -> None:
|
def check_for_basic_configs(cls, raise_on_missing: bool = True) -> bool:
|
||||||
if current_app.config["SPIFFWORKFLOW_BACKEND_GIT_SOURCE_BRANCH"] is None:
|
if current_app.config["SPIFFWORKFLOW_BACKEND_GIT_SOURCE_BRANCH"] is None:
|
||||||
raise MissingGitConfigsError(
|
if raise_on_missing:
|
||||||
"Missing config for SPIFFWORKFLOW_BACKEND_GIT_SOURCE_BRANCH. "
|
raise MissingGitConfigsError(
|
||||||
"This is required for publishing process models"
|
"Missing config for SPIFFWORKFLOW_BACKEND_GIT_SOURCE_BRANCH. "
|
||||||
)
|
"This is required for publishing process models"
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_for_publish_configs(cls) -> None:
|
def check_for_publish_configs(cls, raise_on_missing: bool = True) -> bool:
|
||||||
cls.check_for_basic_configs()
|
if not cls.check_for_basic_configs(raise_on_missing=raise_on_missing):
|
||||||
|
return False
|
||||||
if current_app.config["SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_TARGET_BRANCH"] is None:
|
if current_app.config["SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_TARGET_BRANCH"] is None:
|
||||||
raise MissingGitConfigsError(
|
if raise_on_missing:
|
||||||
"Missing config for SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_TARGET_BRANCH. "
|
raise MissingGitConfigsError(
|
||||||
"This is required for publishing process models"
|
"Missing config for SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_TARGET_BRANCH. "
|
||||||
)
|
"This is required for publishing process models"
|
||||||
|
)
|
||||||
|
return False
|
||||||
if current_app.config["SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_CLONE_URL"] is None:
|
if current_app.config["SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_CLONE_URL"] is None:
|
||||||
raise MissingGitConfigsError(
|
if raise_on_missing:
|
||||||
"Missing config for SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_CLONE_URL."
|
raise MissingGitConfigsError(
|
||||||
" This is required for publishing process models"
|
"Missing config for SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_CLONE_URL."
|
||||||
)
|
" This is required for publishing process models"
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def run_shell_command_as_boolean(cls, command: list[str]) -> bool:
|
def run_shell_command_as_boolean(cls, command: list[str]) -> bool:
|
||||||
|
|
|
@ -3,6 +3,14 @@ export interface User {
|
||||||
username: string;
|
username: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ApiAction {
|
||||||
|
path: string;
|
||||||
|
method: string;
|
||||||
|
}
|
||||||
|
export interface ApiActions {
|
||||||
|
[key: string]: ApiAction;
|
||||||
|
}
|
||||||
|
|
||||||
export interface Secret {
|
export interface Secret {
|
||||||
id: number;
|
id: number;
|
||||||
key: string;
|
key: string;
|
||||||
|
@ -265,6 +273,7 @@ export interface ProcessModel {
|
||||||
fault_or_suspend_on_exception?: string;
|
fault_or_suspend_on_exception?: string;
|
||||||
exception_notification_addresses?: string[];
|
exception_notification_addresses?: string[];
|
||||||
bpmn_version_control_identifier?: string;
|
bpmn_version_control_identifier?: string;
|
||||||
|
actions?: ApiActions;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ProcessGroup {
|
export interface ProcessGroup {
|
||||||
|
|
|
@ -680,21 +680,23 @@ export default function ProcessModelShow() {
|
||||||
confirmButtonLabel="Delete"
|
confirmButtonLabel="Delete"
|
||||||
/>
|
/>
|
||||||
</Can>
|
</Can>
|
||||||
<Can
|
{!processModel.actions || processModel.actions.publish ? (
|
||||||
I="POST"
|
<Can
|
||||||
a={targetUris.processModelPublishPath}
|
I="POST"
|
||||||
ability={ability}
|
a={targetUris.processModelPublishPath}
|
||||||
>
|
ability={ability}
|
||||||
<Button
|
>
|
||||||
kind="ghost"
|
<Button
|
||||||
data-qa="publish-process-model-button"
|
kind="ghost"
|
||||||
renderIcon={Upload}
|
data-qa="publish-process-model-button"
|
||||||
iconDescription="Publish Changes"
|
renderIcon={Upload}
|
||||||
hasIconOnly
|
iconDescription="Publish Changes"
|
||||||
onClick={publishProcessModel}
|
hasIconOnly
|
||||||
disabled={publishDisabled}
|
onClick={publishProcessModel}
|
||||||
/>
|
disabled={publishDisabled}
|
||||||
</Can>
|
/>
|
||||||
|
</Can>
|
||||||
|
) : null}
|
||||||
<Can I="POST" a={targetUris.processModelTestsPath} ability={ability}>
|
<Can I="POST" a={targetUris.processModelTestsPath} ability={ability}>
|
||||||
{hasTestCaseFiles ? (
|
{hasTestCaseFiles ? (
|
||||||
<ProcessModelTestRun titleText="Run all BPMN unit tests for this process model" />
|
<ProcessModelTestRun titleText="Run all BPMN unit tests for this process model" />
|
||||||
|
|
Loading…
Reference in New Issue