process group move api endpoint
This commit is contained in:
parent
9c08e70d6a
commit
03e454c685
|
@ -238,6 +238,33 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/ProcessModelCategory"
|
$ref: "#/components/schemas/ProcessModelCategory"
|
||||||
|
|
||||||
|
/process-groups/{modified_process_group_id}/move:
|
||||||
|
parameters:
|
||||||
|
- name: modified_process_group_id
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
description: The unique id of an existing process group.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- name: new_location
|
||||||
|
in: query
|
||||||
|
required: true
|
||||||
|
description: the new location, as an existing process group id
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
put:
|
||||||
|
operationId: spiffworkflow_backend.routes.process_api_blueprint.process_group_move
|
||||||
|
summary: returns the new group
|
||||||
|
tags:
|
||||||
|
- Process Groups
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: Process Group
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ProcessModelCategory"
|
||||||
|
|
||||||
/process-models:
|
/process-models:
|
||||||
parameters:
|
parameters:
|
||||||
- name: process_group_identifier
|
- name: process_group_identifier
|
||||||
|
|
|
@ -234,6 +234,14 @@ def process_group_show(
|
||||||
return make_response(jsonify(process_group), 200)
|
return make_response(jsonify(process_group), 200)
|
||||||
|
|
||||||
|
|
||||||
|
def process_group_move(
|
||||||
|
modified_process_group_id: str, new_location: str
|
||||||
|
) -> flask.wrappers.Response:
|
||||||
|
original_process_group_id = un_modify_modified_process_model_id(modified_process_group_id)
|
||||||
|
new_process_group = ProcessModelService().process_group_move(original_process_group_id, new_location)
|
||||||
|
return make_response(jsonify(new_process_group), 201)
|
||||||
|
|
||||||
|
|
||||||
def process_model_create(
|
def process_model_create(
|
||||||
modified_process_group_id: str, body: Dict[str, Union[str, bool, int]]
|
modified_process_group_id: str, body: Dict[str, Union[str, bool, int]]
|
||||||
) -> flask.wrappers.Response:
|
) -> flask.wrappers.Response:
|
||||||
|
|
|
@ -231,6 +231,19 @@ class ProcessModelService(FileSystemService):
|
||||||
self.write_json_file(json_path, serialized_process_group)
|
self.write_json_file(json_path, serialized_process_group)
|
||||||
return process_group
|
return process_group
|
||||||
|
|
||||||
|
def process_group_move(self, original_process_group_id, new_location) -> ProcessGroup:
|
||||||
|
original_group_path = self.process_group_path(original_process_group_id)
|
||||||
|
original_root, original_group_id = os.path.split(original_group_path)
|
||||||
|
new_root = f"{FileSystemService.root_path()}/{new_location}"
|
||||||
|
new_relative_path = f"{new_location}/{original_group_id}"
|
||||||
|
new_group_path = os.path.abspath(
|
||||||
|
os.path.join(FileSystemService.root_path(), new_root, original_group_id)
|
||||||
|
)
|
||||||
|
destination = shutil.move(original_group_path, new_group_path)
|
||||||
|
new_process_group = self.get_process_group(destination)
|
||||||
|
print("process_group_move")
|
||||||
|
return new_process_group
|
||||||
|
|
||||||
def __get_all_nested_models(self, group_path: str) -> list:
|
def __get_all_nested_models(self, group_path: str) -> list:
|
||||||
"""__get_all_nested_models."""
|
"""__get_all_nested_models."""
|
||||||
all_nested_models = []
|
all_nested_models = []
|
||||||
|
|
|
@ -2369,3 +2369,67 @@ class TestProcessApi(BaseTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
print("test_script_unit_test_run")
|
print("test_script_unit_test_run")
|
||||||
|
|
||||||
|
def test_move_model(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
def test_move_group(
|
||||||
|
self,
|
||||||
|
app: Flask,
|
||||||
|
client: FlaskClient,
|
||||||
|
with_db_and_bpmn_file_cleanup: None,
|
||||||
|
with_super_admin_user: UserModel,
|
||||||
|
) -> None:
|
||||||
|
groups = [
|
||||||
|
'group_a', 'group_b', 'group_b/group_bb'
|
||||||
|
]
|
||||||
|
# setup initial groups
|
||||||
|
for group in groups:
|
||||||
|
self.create_process_group(
|
||||||
|
client,
|
||||||
|
with_super_admin_user,
|
||||||
|
group,
|
||||||
|
display_name=group
|
||||||
|
)
|
||||||
|
# make sure initial groups exist
|
||||||
|
for group in groups:
|
||||||
|
persisted = ProcessModelService().get_process_group(group)
|
||||||
|
assert persisted is not None
|
||||||
|
assert persisted.id == group
|
||||||
|
|
||||||
|
# add sub group to `group_a`
|
||||||
|
sub_group_id = 'sub_group'
|
||||||
|
original_location = 'group_a'
|
||||||
|
original_sub_path = f"{original_location}/{sub_group_id}"
|
||||||
|
self.create_process_group(
|
||||||
|
client,
|
||||||
|
with_super_admin_user,
|
||||||
|
original_sub_path,
|
||||||
|
display_name=sub_group_id
|
||||||
|
)
|
||||||
|
# make sure original subgroup exists
|
||||||
|
persisted = ProcessModelService().get_process_group(original_sub_path)
|
||||||
|
assert persisted is not None
|
||||||
|
assert persisted.id == original_sub_path
|
||||||
|
|
||||||
|
# move sub_group to `group_b/group_bb`
|
||||||
|
new_location = 'group_b/group_bb'
|
||||||
|
new_sub_path = f"{new_location}/{sub_group_id}"
|
||||||
|
modified_original_process_group_id = original_sub_path.replace("/", ":")
|
||||||
|
response = client.put(
|
||||||
|
f"/v1.0/process-groups/{modified_original_process_group_id}/move?new_location={new_location}",
|
||||||
|
headers=self.logged_in_headers(with_super_admin_user),
|
||||||
|
)
|
||||||
|
assert response.status_code == 201
|
||||||
|
assert response.json['id'] == new_sub_path
|
||||||
|
|
||||||
|
# make sure the original subgroup does not exist
|
||||||
|
with pytest.raises(ProcessEntityNotFoundError) as e:
|
||||||
|
ProcessModelService().get_process_group(original_sub_path)
|
||||||
|
|
||||||
|
assert e.value.args[0] == 'process_group_not_found'
|
||||||
|
assert e.value.args[1] == f"Process Group Id: {original_sub_path}"
|
||||||
|
|
||||||
|
# make sure the new subgroup does exist
|
||||||
|
new_process_group = ProcessModelService().get_process_group(new_sub_path)
|
||||||
|
assert new_process_group.id == new_sub_path
|
||||||
|
|
Loading…
Reference in New Issue