Skip to content

Commit d669f9e

Browse files
committed
feat(backend): 单据todo处理人统一化 #6755
1 parent ec9498e commit d669f9e

File tree

18 files changed

+110
-164
lines changed

18 files changed

+110
-164
lines changed

dbm-ui/backend/configuration/models/system.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from backend.bk_web.constants import LEN_LONG, LEN_NORMAL
2020
from backend.bk_web.models import AuditedModel
2121
from backend.configuration import constants
22+
from backend.configuration.constants import BizSettingsEnum
2223
from backend.db_meta.enums import ClusterType
2324

2425
logger = logging.getLogger("root")
@@ -192,3 +193,13 @@ def get_exact_hosting_biz(cls, bk_biz_id: int, cluster_type: str) -> int:
192193
return bk_biz_id
193194

194195
return env.DBA_APP_BK_BIZ_ID
196+
197+
@classmethod
198+
def get_assistance(cls, bk_biz_id: int):
199+
"""
200+
获取业务协助人
201+
"""
202+
assistance_flag = BizSettings.get_setting_value(bk_biz_id, key=BizSettingsEnum.BIZ_ASSISTANCE_SWITCH) or False
203+
if not assistance_flag:
204+
return []
205+
return BizSettings.get_setting_value(bk_biz_id, key=BizSettingsEnum.BIZ_ASSISTANCE_VARS, default=[])

dbm-ui/backend/db_services/bigdata/resources/query.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from backend.db_proxy.models import ClusterExtension
2222
from backend.db_services.dbbase.resources import query
2323
from backend.db_services.ipchooser.query.resource import ResourceQueryHelper
24-
from backend.ticket.constants import TICKET_RUNNING_STATUS
24+
from backend.ticket.constants import TICKET_RUNNING_STATUS_SET
2525
from backend.ticket.models import InstanceOperateRecord
2626
from backend.utils.time import datetime2str
2727

@@ -65,7 +65,7 @@ def _filter_instance_hook(cls, bk_biz_id, query_params, instances, **kwargs):
6565

6666
# 获取实例的操作与实例记录
6767
records = InstanceOperateRecord.objects.filter(
68-
instance_id__in=instance_ids, ticket__status__in=TICKET_RUNNING_STATUS
68+
instance_id__in=instance_ids, ticket__status__in=TICKET_RUNNING_STATUS_SET
6969
)
7070
instance_operate_records_map: Dict[int, List] = defaultdict(list)
7171
for record in records:

dbm-ui/backend/db_services/mysql/dumper/handlers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from backend.db_meta.enums import InstanceInnerRole
1616
from backend.db_meta.models import Cluster
1717
from backend.db_services.mysql.dumper.models import DumperSubscribeConfig
18-
from backend.ticket.constants import TICKET_RUNNING_STATUS, FlowType, TicketFlowStatus, TicketStatus, TicketType
18+
from backend.ticket.constants import TICKET_RUNNING_STATUS_SET, FlowType, TicketFlowStatus, TicketStatus, TicketType
1919
from backend.ticket.models import Flow, Ticket
2020

2121

@@ -66,7 +66,7 @@ def patch_dumper_list_info(cls, dumper_results: List[Dict], bk_biz_id: int = 0,
6666
dumper_ticket_types.remove(TicketType.TBINLOGDUMPER_INSTALL)
6767
dumper_ticket_types.extend([TicketType.MYSQL_MASTER_SLAVE_SWITCH, TicketType.MYSQL_MASTER_FAIL_OVER])
6868
active_tickets = Ticket.objects.filter(
69-
bk_biz_id=bk_biz_id, status__in=TICKET_RUNNING_STATUS, ticket_type__in=dumper_ticket_types
69+
bk_biz_id=bk_biz_id, status__in=TICKET_RUNNING_STATUS_SET, ticket_type__in=dumper_ticket_types
7070
)
7171
# 获取每个dumper单据状态与id的映射
7272
dumper_inst_id__ticket: Dict[int, str] = {}

dbm-ui/backend/iam_app/handlers/drf_perm/storage.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,15 @@ def __init__(self, actions: List[ActionMeta] = None, resource_meta: ResourceMeta
3939
def instance_id_getter(self, request, view):
4040
file_path = get_request_key_id(request, "file_path")
4141
file_path_list = get_request_key_id(request, "file_path_list") or [file_path]
42+
medium_types = MediumEnum.get_values()
43+
44+
# 解析路径下的文件类型
45+
try:
46+
is_all_pkg = set([(path.strip("/").split("/")[1] in medium_types) for path in file_path_list])
47+
except IndexError:
48+
raise PermissionDeniedError(_("文件操作路径{}不合法,请联系管理员").format(file_path_list))
4249

4350
# 保证文件列表都是同种类型,即不允许同时操作介质文件和业务文件(一般也无此需求)
44-
medium_types = MediumEnum.get_values()
45-
is_all_pkg = set([(path.strip("/").split("/")[1] in medium_types) for path in file_path_list])
4651
if len(is_all_pkg) > 1:
4752
raise PermissionDeniedError(_("不允许同时操作业务临时文件和介质文件"))
4853

dbm-ui/backend/ticket/builders/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def get_params(self):
142142
{"key": "domain", "value": "\n".join(cluster_domains)},
143143
{"key": "summary", "value": self.ticket.remark},
144144
{"key": "approver", "value": self.get_approvers()},
145-
{"key": "ticket_url", "value": f"{self.ticket.url}&isFullscreen=true"},
145+
{"key": "ticket_url", "value": self.ticket.iframe_url},
146146
],
147147
"dynamic_fields": [],
148148
"meta": {

dbm-ui/backend/ticket/builders/mysql/mysql_ha_full_backup.py

Lines changed: 0 additions & 67 deletions
This file was deleted.

dbm-ui/backend/ticket/builders/redis/redis_toolbox_redis_scale_updown.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
class RedisScaleUpDownDetailSerializer(SkipToRepresentationMixin, serializers.Serializer):
2929
"""redis集群容量变更"""
3030

31-
class InfoSerializer(DisplayInfoSerializer, ClusterValidateMixin, serializers.Serializer):
31+
class InfoSerializer(DisplayInfoSerializer, ClusterValidateMixin):
3232
class ResourceSpecSerializer(serializers.Serializer):
3333
class BackendGroupSerializer(serializers.Serializer):
3434
spec_id = serializers.IntegerField(help_text=_("规格ID"))

dbm-ui/backend/ticket/constants.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,23 @@ class TicketStatus(str, StructuredEnum):
9696

9797

9898
# 单据[正在进行]的状态合集
99-
TICKET_RUNNING_STATUS = [
99+
TICKET_RUNNING_STATUS_SET = [
100100
TicketStatus.APPROVE,
101101
TicketStatus.TODO,
102102
TicketStatus.RESOURCE_REPLENISH,
103103
TicketStatus.RUNNING,
104104
TicketStatus.TIMER,
105105
]
106106
# 单据[包含TODO]的状态合集
107-
TICKET_TODO_STATUS = [
107+
TICKET_TODO_STATUS_SET = [
108108
TicketStatus.APPROVE,
109109
TicketStatus.TODO,
110110
TicketStatus.RESOURCE_REPLENISH,
111111
TicketStatus.FAILED,
112112
TicketStatus.RUNNING,
113113
]
114114
# 单据[失败]的状态合集
115-
TICKET_FAILED_STATUS = [TicketStatus.REVOKED, TicketStatus.TERMINATED, TicketStatus.FAILED]
115+
TICKET_FAILED_STATUS_SET = [TicketStatus.REVOKED, TicketStatus.TERMINATED, TicketStatus.FAILED]
116116

117117

118118
class TicketFlowStatus(str, StructuredEnum):

dbm-ui/backend/ticket/flow_manager/inner.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
from backend.ticket.constants import (
2828
BAMBOO_STATE__TICKET_STATE_MAP,
2929
FlowCallbackType,
30-
FlowMsgType,
3130
FlowErrCode,
31+
FlowMsgType,
3232
TicketFlowStatus,
3333
TicketType,
3434
TodoStatus,
@@ -122,13 +122,11 @@ def _url(self) -> str:
122122
return f"{env.BK_SAAS_HOST}/{self.ticket.bk_biz_id}/task-history/detail/{self.root_id}"
123123

124124
def create_failed_todo(self):
125-
# 创建一条todo失败记录,在失败时变更为TODO状态
126125
Todo.objects.create(
127126
name=_("【{}】单据任务执行失败,待处理").format(self.ticket.get_ticket_type_display()),
128127
flow=self.flow_obj,
129128
ticket=self.ticket,
130129
type=TodoType.INNER_FAILED,
131-
operators=[self.ticket.creator],
132130
context=BaseTodoContext(self.flow_obj.id, self.ticket.id).to_dict(),
133131
status=TodoStatus.DONE_SUCCESS,
134132
)
@@ -280,7 +278,7 @@ def _raw_status(self) -> str:
280278
@property
281279
def _status(self) -> str:
282280
status = self._raw_status
283-
if status in [constants.TicketFlowStatus.SUCCEEDED, *constants.TICKET_FAILED_STATUS]:
281+
if status in [constants.TicketFlowStatus.SUCCEEDED, *constants.TICKET_FAILED_STATUS_SET]:
284282
return constants.TicketFlowStatus.SUCCEEDED
285283

286284
return status

dbm-ui/backend/ticket/flow_manager/itsm.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,11 @@ def _url(self) -> str:
113113

114114
def _run(self) -> str:
115115
itsm_fields = {f["key"]: f["value"] for f in self.flow_obj.details["fields"]}
116-
# 创建审批todo
117-
operators = itsm_fields["approver"].split(",")
118116
Todo.objects.create(
119117
name=_("【{}】单据等待审批").format(self.ticket.get_ticket_type_display()),
120118
flow=self.flow_obj,
121119
ticket=self.ticket,
122120
type=TodoType.ITSM,
123-
operators=operators,
124121
context=ItsmTodoContext(self.flow_obj.id, self.ticket.id).to_dict(),
125122
)
126123
# 创建单据

0 commit comments

Comments
 (0)