import json from django.contrib.auth.models import User from django.db.models import Q from django.forms.models import model_to_dict from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from even_table.models import Dept, Jobs, Dept2Jobs # Create your views here. # 部门增删查改 class deptView(APIView): """ request {name名字},parent_id{父级id,可空} 创建一个节点 """ def post(self, request): data = request.data res = [] if 'parent_id' in data: # try: # 创建部门表,返回创建数据成功 # print(data['parent_id']) # print(model_to_dict(Dept.objects.get(id=data['parent_id']))) res = Dept.objects.create( name=data['name'], parent_id=data['parent_id'] ) res = model_to_dict(res) res = {'node': res, 'message': data['name'] + ' 新增叶子成功'} return Response(data=res, status=status.HTTP_200_OK) # except Exception: # print(json.dump(Exception)) # return Response(data={"message": '错误'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) else: # try: res = Dept.objects.create( name=data['name'], ) res = model_to_dict(res) res = {'node': res, 'message': data['name'] + ' 新增父级成功'} return Response(data=res, status=status.HTTP_200_OK) # except Exception: # return Response(data={"message": '错误'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) """ 得到节点 request{parent_id(节点id,可空)} """ def get(self, request): data = request.GET res = [] if 'parent_id' in data: # 给parent_id 拿到子集 res = Dept.objects.filter(parent_id=data['parent_id']).values().all() else: # 没有传name 则给第0层 res = Dept.objects.filter(parent_id=None).values().all() return Response(data=res, status=status.HTTP_200_OK) """ 删除节点 {id:节点id} """ def delete(self, request): data = request.data # 部门 删除这个部门 res = Dept.objects.filter(id=data['id']).delete() # 岗位 删除这个部门下面的所有岗位 # Jobs.objects.filter() # Dept2Jobs.objects.filter(dept_id=data['id']) # 关联表 删除跟这个部门关联的 Dept2Jobs.objects.filter(dept_id=data['id']).delete() return Response(data="删除成功", status=status.HTTP_200_OK) """ 更新节点 {id:节点id,name:节点名字,parent_id:父节点id(可空)} """ def put(self, request): data = request.data if 'parent_id' in data: res = Dept.objects.filter(id=data['id']).update(name=data['name'], parent_id=data['parent_id']) else: res = Dept.objects.filter(id=data['id']).update(name=data['name']) return Response(data=res, status=status.HTTP_200_OK) # 岗位增删查改 class jobsView(APIView): # 增 {name:岗位名字,dept_id:父级部门id} def post(self, request): data = request.data # 创建岗位 res = Jobs.objects.create( name=data['name'] ) res = model_to_dict(res) if res: # 创建关联 Dept2Jobs.objects.create( dept_id=data['dept_id'], job_id=res['id'] ) return Response(data={'result': res, 'message': '创建岗位成功'}, status=status.HTTP_200_OK) # 查 {dept_id:父级部门id(可空,空则查全部)} def get(self, request): # 从关联表里 查到 这个父级的id下的所有岗位id 查到job下面的所有name names = Dept2Jobs.objects.filter(dept=request.GET['dept_id']).values("job", "job__name") # print(ids) return Response(data={'result': names, 'message': '查询成功'}, status=status.HTTP_200_OK) # 更新 {id:岗位id,name:岗位新名字} def put(self, request): pass # 删 {id:岗位id} def delete(self, request): # 删除关联表数据 data = request.data Dept2Jobs.objects.filter(job_id=data['id']).delete() # 删除岗位 Jobs.objects.filter(id=data['id']).delete() return Response(data={'message': data['id'] + '删除成功'}, status=status.HTTP_200_OK) # 用户增删查改 class userView(APIView): def post(self, request): pass # 用户查询 def get(self, request): data = request.GET res = User.objects.values('id', 'username', 'email') return Response(data={'result': res, 'message': '查询所有用户基础数据'}, status=status.HTTP_200_OK) def put(self, request): pass def delete(self, request): pass