Files
pear-admin-flask/applications/api/department.py
T

123 lines
4.1 KiB
Python

from flask import jsonify
from flask_restful import Api, Resource
from applications.api import api_bp
from applications.common.utils.http import success_api, fail_api
from applications.common.utils.rights import authorize
from applications.extensions import db
from applications.models import Dept, User
from flask_restful import marshal, reqparse
from applications.common.serialization import dept_fields
dept_api = Api(api_bp, prefix='/dept')
@dept_api.resource('/departments')
class Department(Resource):
@authorize("admin:dept:main", log=True)
def get(self):
dept_data = Dept.query.order_by(Dept.sort).all()
# TODO dtree 需要返回状态信息
res = {
"status": {"code": 200, "message": "默认"},
"data": marshal(dept_data, dept_fields)
}
return jsonify(res)
@authorize("admin:dept:add", log=True)
def post(self):
parser = reqparse.RequestParser()
parser.add_argument('address', type=str)
parser.add_argument('deptName', type=str, dest='dept_name')
parser.add_argument('email', type=str)
parser.add_argument('leader', type=str)
parser.add_argument('parentId', type=int, dest='parent_id')
parser.add_argument('phone', type=str)
parser.add_argument('sort', type=int)
parser.add_argument('status', type=int)
res = parser.parse_args()
dept = Dept(
parent_id=res.parent_id,
dept_name=res.dept_name,
sort=res.sort,
leader=res.leader,
phone=res.phone,
email=res.email,
status=res.status,
address=res.address
)
db.session.add(dept)
db.session.commit()
return success_api(msg="成功")
@dept_api.resource('/department/<int:dept_id>')
class DeptURD(Resource):
@authorize("admin:dept:edit", log=True)
def get(self, dept_id):
dept = Dept.query.filter_by(id=dept_id).first()
dept_data = {
'id': dept.id,
'dept_name': dept.dept_name,
'leader': dept.leader,
'email': dept.email,
'phone': dept.phone,
'status': dept.status,
'sort': dept.sort,
'address': dept.address,
}
# return make_response(render_template('department/edit.html', dept=dept))
return jsonify(success=True, msg='ok', dept=dept_data)
@authorize("admin:dept:edit", log=True)
def put(self, dept_id):
parser = reqparse.RequestParser()
parser.add_argument('address', type=str)
parser.add_argument('deptName', type=str, dest='dept_name')
parser.add_argument('email', type=str)
parser.add_argument('leader', type=str)
parser.add_argument('phone', type=str)
parser.add_argument('sort', type=int)
parser.add_argument('status', type=int)
res = parser.parse_args()
data = {
"dept_name": res.dept_name,
"sort": res.sort,
"leader": res.leader,
"phone": res.phone,
"email": res.email,
"status": res.status,
"address": res.address
}
res = Dept.query.filter_by(id=dept_id).update(data)
if not res:
return fail_api(msg="更新失败")
db.session.commit()
return success_api(msg="更新成功")
@authorize("admin:dept:remove", log=True)
def delete(self, dept_id):
ret = Dept.query.filter_by(id=dept_id).delete()
User.query.filter_by(dept_id=dept_id).update({"dept_id": None})
db.session.commit()
if ret:
return success_api(msg="删除成功")
return fail_api(msg="删除失败")
@dept_api.resource('/department/<int:dept_id>/status')
class DeptEnable(Resource):
@authorize("admin:dept:edit", log=True)
def put(self, dept_id):
d = Dept.query.get(dept_id)
if d:
d.status = not d.status
db.session.commit()
message = '修改成功'
return success_api(msg=message)
return fail_api(msg="出错啦")