@name 批量删除项目 @author baozi<2023-3-2> @param get { project_names: list[string] <项目名称>所组成的列表 } @return dict
(self, get)
| 4582 | # ———————————— |
| 4583 | |
| 4584 | def multi_remove_project(self, get): |
| 4585 | ''' |
| 4586 | @name 批量删除项目 |
| 4587 | @author baozi<2023-3-2> |
| 4588 | @param get<dict_obj>{ |
| 4589 | project_names: list[string] <项目名称>所组成的列表 |
| 4590 | } |
| 4591 | @return dict |
| 4592 | ''' |
| 4593 | project_names = get.project_names |
| 4594 | if isinstance(project_names, list): |
| 4595 | pjnames = [i.strip() for i in project_names] |
| 4596 | else: |
| 4597 | pjnames = [] |
| 4598 | |
| 4599 | projects = public.M('sites').where( |
| 4600 | f'project_type=? AND name in ({",".join(["?"] * len(pjnames))})', |
| 4601 | ('Java', *pjnames) |
| 4602 | ).select() |
| 4603 | if not projects: |
| 4604 | return public.returnMsg(False, "未选中要删除的站点") |
| 4605 | |
| 4606 | _duli, _neizh, _springboot, _error_type = [], [], [], [] |
| 4607 | for project in projects: |
| 4608 | project['project_config'] = json.loads(project['project_config']) |
| 4609 | if project['project_config']['java_type'] == 'duli': |
| 4610 | _duli.append(project) |
| 4611 | elif project['project_config']['java_type'] == 'neizhi': |
| 4612 | _neizh.append(project) |
| 4613 | elif project['project_config']['java_type'] == 'springboot': |
| 4614 | _springboot.append(project) |
| 4615 | else: |
| 4616 | _error_type.append("项目:[{}], 项目类型错误\n".format(project["name"])) |
| 4617 | if _error_type: |
| 4618 | return public.return_error(data = _error_type) |
| 4619 | |
| 4620 | # 执行每种删除的独特操作 |
| 4621 | if _duli: |
| 4622 | self._multi_remove_duli(_duli) |
| 4623 | if _neizh: |
| 4624 | self._multi_remove_neizhi(_neizh) |
| 4625 | if _springboot: |
| 4626 | self._multi_remove_springboot(_springboot) |
| 4627 | |
| 4628 | # 清除Nginx, Apache 配置文件,并重起服务 |
| 4629 | self._multi_clear_config(projects) |
| 4630 | # 从面板数据库删除信息 |
| 4631 | project_ids = tuple([i["id"] for i in projects]) |
| 4632 | public.M('domain').where('pid IN ({})'.format(",".join(["?"] * len(projects))), project_ids).delete() |
| 4633 | public.M('sites').where( |
| 4634 | f'project_type=? AND name in ({",".join(["?"] * len(pjnames))})', |
| 4635 | ('Java', *pjnames) |
| 4636 | ).delete() |
| 4637 | public.WriteLog(self._log_name, f'批量删除Java项目:[{"; ".join([i["name"] for i in projects])}]') |
| 4638 | # 获取域名列表 并删除host |
| 4639 | for project in projects: |
| 4640 | self.del_crontab(project["name"]) |
| 4641 | for i in project['project_config']['domains']: |
nothing calls this directly
no test coverage detected