added script to get the group members w/ burnettk
This commit is contained in:
parent
6a15bee2be
commit
35eb15b793
|
@ -14,6 +14,10 @@ if TYPE_CHECKING:
|
|||
from spiffworkflow_backend.models.user import UserModel # noqa: F401
|
||||
|
||||
|
||||
class GroupNotFoundError(Exception):
|
||||
"""GroupNotFoundError."""
|
||||
|
||||
|
||||
class GroupModel(FlaskBpmnGroupModel):
|
||||
"""GroupModel."""
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
"""Get_env."""
|
||||
from typing import Any
|
||||
from spiffworkflow_backend.models.group import GroupModel, GroupNotFoundError
|
||||
|
||||
from spiffworkflow_backend.models.script_attributes_context import (
|
||||
ScriptAttributesContext,
|
||||
)
|
||||
from spiffworkflow_backend.scripts.script import Script
|
||||
|
||||
|
||||
class GetGroupMembers(Script):
|
||||
"""GetGroupMembers."""
|
||||
|
||||
def get_description(self) -> str:
|
||||
"""Get_description."""
|
||||
return """Return the current user."""
|
||||
|
||||
def run(
|
||||
self,
|
||||
script_attributes_context: ScriptAttributesContext,
|
||||
*args: Any,
|
||||
**kwargs: Any
|
||||
) -> Any:
|
||||
"""Run."""
|
||||
group_identifier = args[0]
|
||||
group = GroupModel.query.filter_by(identifier=group_identifier).first()
|
||||
if group is None:
|
||||
raise GroupNotFoundError(
|
||||
f"Script 'get_group_members' could not find group with identifier '{group_identifier}'.")
|
||||
|
||||
usernames = [u.username for u in group.users]
|
||||
return usernames
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_96f6665" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev">
|
||||
<bpmn:process id="test_groups" isExecutable="true">
|
||||
<bpmn:startEvent id="Event_0r6oru6">
|
||||
<bpmn:outgoing>Flow_1j4jzft</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1j4jzft" sourceRef="Event_0r6oru6" targetRef="get_group_a" />
|
||||
<bpmn:endEvent id="Event_1s123jg">
|
||||
<bpmn:incoming>Flow_01xr2ac</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:scriptTask id="get_group_a">
|
||||
<bpmn:incoming>Flow_1j4jzft</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_10xyk22</bpmn:outgoing>
|
||||
<bpmn:script>members_a = get_group_members("GroupA")</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_10xyk22" sourceRef="get_group_a" targetRef="get_group_b" />
|
||||
<bpmn:scriptTask id="get_group_b">
|
||||
<bpmn:incoming>Flow_10xyk22</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_01xr2ac</bpmn:outgoing>
|
||||
<bpmn:script>members_b = get_group_members("GroupB")</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_01xr2ac" sourceRef="get_group_b" targetRef="Event_1s123jg" />
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="test_groups">
|
||||
<bpmndi:BPMNShape id="Event_0r6oru6_di" bpmnElement="Event_0r6oru6">
|
||||
<dc:Bounds x="162" y="162" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0zfzev2_di" bpmnElement="get_group_a">
|
||||
<dc:Bounds x="250" y="140" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0d1q8x4_di" bpmnElement="get_group_b">
|
||||
<dc:Bounds x="410" y="140" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1s123jg_di" bpmnElement="Event_1s123jg">
|
||||
<dc:Bounds x="582" y="162" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1j4jzft_di" bpmnElement="Flow_1j4jzft">
|
||||
<di:waypoint x="198" y="180" />
|
||||
<di:waypoint x="250" y="180" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_10xyk22_di" bpmnElement="Flow_10xyk22">
|
||||
<di:waypoint x="350" y="180" />
|
||||
<di:waypoint x="410" y="180" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_01xr2ac_di" bpmnElement="Flow_01xr2ac">
|
||||
<di:waypoint x="510" y="180" />
|
||||
<di:waypoint x="582" y="180" />
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -81,7 +81,7 @@
|
|||
<bpmn:scriptTask id="Activity_1s1855p" scriptFormat="python">
|
||||
<bpmn:incoming>Flow_0bgkfue</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1ivhu7x</bpmn:outgoing>
|
||||
<bpmn:script>approver = get_user()
|
||||
<bpmn:script>approver = get_current_user()
|
||||
lane_owners["Finance Team"].remove(approver)</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
</bpmn:process>
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
"""Test_get_localtime."""
|
||||
from spiffworkflow_backend.services.user_service import UserService
|
||||
from flask_bpmn.models.db import db
|
||||
from spiffworkflow_backend.models.group import GroupModel
|
||||
|
||||
from flask.app import Flask
|
||||
from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
||||
from tests.spiffworkflow_backend.helpers.test_data import load_test_spec
|
||||
|
||||
from spiffworkflow_backend.services.process_instance_processor import (
|
||||
ProcessInstanceProcessor,
|
||||
)
|
||||
|
||||
|
||||
class TestGetGroupMembers(BaseTest):
|
||||
"""TestGetGroupMembers."""
|
||||
|
||||
def test_can_get_members_of_a_group(
|
||||
self,
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
) -> None:
|
||||
"""Test_can_get_members_of_a_group."""
|
||||
initiator_user = self.find_or_create_user("initiator_user")
|
||||
testuser1 = self.find_or_create_user("testuser1")
|
||||
testuser2 = self.find_or_create_user("testuser2")
|
||||
testuser3 = self.find_or_create_user("testuser3")
|
||||
groupA = GroupModel(identifier="groupA")
|
||||
groupB = GroupModel(identifier="groupB")
|
||||
db.session.add(groupA)
|
||||
db.session.add(groupB)
|
||||
db.session.commit()
|
||||
|
||||
UserService.add_user_to_group(testuser1, groupA)
|
||||
UserService.add_user_to_group(testuser2, groupA)
|
||||
UserService.add_user_to_group(testuser3, groupB)
|
||||
|
||||
process_model = load_test_spec(
|
||||
process_model_id="get_group_members", bpmn_file_name="get_group_members.bpmn"
|
||||
)
|
||||
process_instance = self.create_process_instance_from_process_model(
|
||||
process_model=process_model, user=initiator_user
|
||||
)
|
||||
processor = ProcessInstanceProcessor(process_instance)
|
||||
processor.do_engine_steps(save=True)
|
||||
|
||||
assert processor.bpmn_process_instance.data
|
||||
assert processor.bpmn_process_instance.data['members_a'] == ['testuser1', 'testuser2']
|
||||
assert processor.bpmn_process_instance.data['members_b'] == ['testuser3']
|
Loading…
Reference in New Issue