mirror of
https://github.com/veops/cmdb.git
synced 2025-08-08 14:50:56 +08:00
前后端全面升级
This commit is contained in:
111
cmdb-api/api/views/common_setting/department.py
Normal file
111
cmdb-api/api/views/common_setting/department.py
Normal file
@@ -0,0 +1,111 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
from flask import abort
|
||||
from flask import request
|
||||
from werkzeug.datastructures import MultiDict
|
||||
|
||||
from api.lib.common_setting.department import DepartmentCRUD
|
||||
from api.lib.common_setting.department import DepartmentTree, DepartmentForm
|
||||
from api.lib.common_setting.employee import EmployeeCRUD
|
||||
from api.lib.common_setting.resp_format import ErrFormat
|
||||
from api.resource import APIView
|
||||
|
||||
prefix = '/department'
|
||||
|
||||
|
||||
class DepartmentAllView(APIView):
|
||||
url_prefix = (f'{prefix}/all',)
|
||||
|
||||
def get(self):
|
||||
is_tree = int(request.args.get('is_tree', 1))
|
||||
|
||||
res = DepartmentTree().get_all_departments(is_tree)
|
||||
return self.jsonify(res)
|
||||
|
||||
|
||||
class DepartmentAllViewWithEmployee(APIView):
|
||||
url_prefix = (f'{prefix}/all_with_employee',)
|
||||
|
||||
def get(self):
|
||||
block = int(request.args.get('block', -1))
|
||||
try:
|
||||
res = DepartmentCRUD.get_all_departments_with_employee(block)
|
||||
return self.jsonify(res)
|
||||
except Exception as e:
|
||||
abort(500, str(e))
|
||||
|
||||
|
||||
class DepartmentView(APIView):
|
||||
url_prefix = (f'{prefix}',)
|
||||
|
||||
def get(self):
|
||||
department_parent_id = request.args.get('department_parent_id', 0)
|
||||
block = int(request.args.get('block', 0))
|
||||
|
||||
departments, department_id_list = DepartmentCRUD.get_departments_and_ids(
|
||||
department_parent_id, block)
|
||||
employees = EmployeeCRUD.get_employees_by_department_id(
|
||||
department_parent_id, block)
|
||||
|
||||
return self.jsonify(departments=departments, employees=employees)
|
||||
|
||||
def post(self):
|
||||
form = DepartmentForm(MultiDict(request.json))
|
||||
if not form.validate():
|
||||
abort(400, ','.join(['{}: {}'.format(filed, ','.join(msg))
|
||||
for filed, msg in form.errors.items()]))
|
||||
|
||||
data = DepartmentCRUD.add(**form.data)
|
||||
|
||||
return self.jsonify(data.to_dict())
|
||||
|
||||
|
||||
class DepartmentIDView(APIView):
|
||||
url_prefix = (f'{prefix}/<int:_id>',)
|
||||
|
||||
def get(self, _id):
|
||||
form = DepartmentForm(MultiDict(request.json))
|
||||
if not form.validate():
|
||||
abort(400, ','.join(['{}: {}'.format(filed, ','.join(msg))
|
||||
for filed, msg in form.errors.items()]))
|
||||
|
||||
department_parent_id = form.data.get('department_parent_id')
|
||||
if int(_id) == int(department_parent_id):
|
||||
abort(400, ErrFormat.parent_department_is_not_self)
|
||||
|
||||
data = DepartmentCRUD.edit(_id, **form.data)
|
||||
return self.jsonify(data.to_dict())
|
||||
|
||||
def delete(self, _id):
|
||||
if _id in [-1, 0]:
|
||||
abort(400, ErrFormat.delete_reserved_department_name)
|
||||
DepartmentCRUD.delete(_id)
|
||||
return self.jsonify(status='success')
|
||||
|
||||
|
||||
class DepartmentParentView(APIView):
|
||||
url_prefix = (f'{prefix}/allow_parent',)
|
||||
|
||||
def get(self):
|
||||
department_id = request.args.get('department_id', None)
|
||||
if department_id is None:
|
||||
abort(400, ErrFormat.department_id_is_required)
|
||||
|
||||
p_department_list = DepartmentCRUD.get_allow_parent_d_id_by(
|
||||
int(department_id))
|
||||
return self.jsonify(p_department_list)
|
||||
|
||||
|
||||
class DepartmentSortView(APIView):
|
||||
url_prefix = (f'{prefix}/update_sort',)
|
||||
|
||||
def put(self):
|
||||
"""
|
||||
修改部门排序,只能在同一个上级内排序
|
||||
"""
|
||||
department_list = request.json.get('department_list', None)
|
||||
if department_list is None:
|
||||
abort(400, ErrFormat.department_list_is_required)
|
||||
|
||||
result = DepartmentCRUD.update_department_sort(department_list)
|
||||
|
||||
return self.jsonify(result)
|
Reference in New Issue
Block a user