@name 批量删除项目 @author baozi<2023-3-2> @param get { project_names: list[string] <项目名称>所组成的列表 } @return dict
(self, get)
| 3167 | return json_response(False, "项目类型错误") |
| 3168 | |
| 3169 | def multi_remove_project(self, get): |
| 3170 | """ |
| 3171 | @name 批量删除项目 |
| 3172 | @author baozi<2023-3-2> |
| 3173 | @param get<dict_obj>{ |
| 3174 | project_names: list[string] <项目名称>所组成的列表 |
| 3175 | } |
| 3176 | @return dict |
| 3177 | """ |
| 3178 | try: |
| 3179 | project_names = get.project_names |
| 3180 | if isinstance(project_names, list): |
| 3181 | project_names = [i.strip() for i in project_names] |
| 3182 | else: |
| 3183 | project_names = [] |
| 3184 | except: |
| 3185 | return json_response(False, "参数错误") |
| 3186 | if not project_names: |
| 3187 | return json_response(False, "未选中要删除的站点") |
| 3188 | |
| 3189 | projects = public.M('sites').where( |
| 3190 | 'project_type=? AND name in ({})'.format(",".join(["?"] * len(project_names))), |
| 3191 | ('Java', *project_names) |
| 3192 | ).select() |
| 3193 | |
| 3194 | if not projects: |
| 3195 | return public.returnMsg(False, "未选中要删除的站点") |
| 3196 | |
| 3197 | _duli, _neizh, _springboot = [], [], [] |
| 3198 | for project in projects: |
| 3199 | project['project_config'] = json.loads(project['project_config']) |
| 3200 | if project['project_config']['java_type'] == 'duli': |
| 3201 | _duli.append(project) |
| 3202 | elif project['project_config']['java_type'] == 'neizhi': |
| 3203 | _neizh.append(project) |
| 3204 | elif project['project_config']['java_type'] == 'springboot': |
| 3205 | _springboot.append(project) |
| 3206 | |
| 3207 | # 执行每种删除的独特操作 |
| 3208 | if _duli: |
| 3209 | self._multi_remove_duli(_duli) |
| 3210 | if _neizh: |
| 3211 | self._multi_remove_neizhi(_neizh) |
| 3212 | if _springboot: |
| 3213 | self._multi_remove_springboot(_springboot) |
| 3214 | |
| 3215 | # 清除Nginx, Apache 配置文件,并重起服务 |
| 3216 | for i in projects: |
| 3217 | remove_sites_service_config(i["name"], config_prefix = "java_") |
| 3218 | |
| 3219 | # 从面板数据库删除信息 |
| 3220 | project_ids = tuple([i["id"] for i in projects]) |
| 3221 | public.M('domain').where('pid IN ({})'.format(",".join(["?"] * len(projects))), project_ids).delete() |
| 3222 | public.M('sites').where('id IN ({})'.format(",".join(["?"] * len(project_ids))), project_ids).delete() |
| 3223 | self.write_project_log('批量删除Java项目:[{}]'.format("; ".join([i["name"] for i in projects]))) |
| 3224 | |
| 3225 | for project in projects: |
| 3226 | self.del_crontab(project["name"]) |
nothing calls this directly
no test coverage detected