Skip to content

Commit

Permalink
add node approver type department (#135)
Browse files Browse the repository at this point in the history
  • Loading branch information
QSummerY authored Nov 10, 2022
1 parent 32354f1 commit 52e3fbd
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 1 deletion.
1 change: 1 addition & 0 deletions frontend/pages/policy/_id/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ export default {
{"name": "指定人", "value": "people"},
{"name": "用户组", "value": "group"},
{"name": "dae应用owner", "value": "app_owner"},
{"name": "部门负责人", "value": "department"},
],
approverTips: []
};
Expand Down
10 changes: 10 additions & 0 deletions helpdesk/libs/approver_provider.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import traceback
from helpdesk.models.db.policy import GroupUser
from helpdesk.models.provider.errors import InitProviderError
from helpdesk.config import DEPARTMENT_OWNERS


class ApproverProvider:
Expand Down Expand Up @@ -28,11 +29,20 @@ async def get_approver_members(self, approver):
return ",".join(members)


class DepartmentProvider(ApproverProvider):
source = "department"

async def get_approver_members(self, approver):
member = DEPARTMENT_OWNERS.get(approver)
return member or ""


from bridge import BridgeOwnerProvider
users_providers = {
'people': PeopleProvider,
'group': GroupProvider,
'app_owner': BridgeOwnerProvider,
'department': DepartmentProvider,
}


Expand Down
6 changes: 5 additions & 1 deletion helpdesk/models/db/ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ async def get_node_approvers(self, node_name):
# 如果节点approvers为空 根据参数获取 app name 从而判断取哪个应用的负责人审批
if approver_type == ApproverType.APP_OWNER and approvers == "":
approvers = self.params.get("app")
if approver_type == ApproverType.DEPARTMENT and approvers == "":
approvers = self.params.get("department")
provider = get_approver_provider(approver_type)
return await provider.get_approver_members(approvers)
return ""
Expand All @@ -184,7 +186,9 @@ async def all_flow_approvers(self):
node_approvers = node.get("approvers")
# 如果节点approvers为空 根据参数获取 app name 从而判断取哪个应用的负责人审批
if approver_type == ApproverType.APP_OWNER and node_approvers == "":
node_approvers = self.params.get("app")
node_approvers = self.params.get("app")
if approver_type == ApproverType.DEPARTMENT and approvers == "":
approvers = self.params.get("department")
provider = get_approver_provider(approver_type)
approvers = await provider.get_approver_members(node_approvers)
for approver in approvers.split(","):
Expand Down
1 change: 1 addition & 0 deletions helpdesk/views/api/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class ApproverType(str, Enum):
APP_OWNER = "app_owner"
GROUP = "group"
PEOPLE = "people"
DEPARTMENT = "department"


class Node(BaseModel):
Expand Down

0 comments on commit 52e3fbd

Please sign in to comment.