You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
7.9 KiB
Python
160 lines
7.9 KiB
Python
import logging
|
|
from django.db import transaction
|
|
from django.db.models import Q
|
|
from django.shortcuts import render
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework import viewsets
|
|
from app.pagination import MyPageNumberPagination
|
|
from user.models import UserProfile
|
|
from .models import Department
|
|
from .serializers import DepartmentSerializer
|
|
# Create your views here.
|
|
|
|
logger = logging.getLogger('mylogger')
|
|
|
|
|
|
class DepartmentView(viewsets.GenericViewSet):
|
|
def list(self, request, *args, **kwargs):
|
|
data = dict()
|
|
try:
|
|
parent_departments = list(Department.objects.filter(parent_id__isnull=True).values())
|
|
for parent_department in parent_departments:
|
|
parent_id = parent_department.get('id')
|
|
son_departs = list(Department.objects.filter(parent_id=parent_id).values())
|
|
parent_department['children'] = son_departs
|
|
data['data'] = parent_departments
|
|
return Response(data)
|
|
except Exception as e:
|
|
return Response({'msg': f'查询失败, {e}'})
|
|
|
|
def query_department_users(self, request, *args, **kwargs):
|
|
res = dict()
|
|
data = request.data
|
|
department_id = data.get('department_id')
|
|
try:
|
|
users = list(UserProfile.objects.filter(department_id=department_id).values('id', 'username', 'phone_number', 'status', 'department_id'))
|
|
res['data'] = users
|
|
return Response(res)
|
|
except Exception as e:
|
|
return Response({'msg': f'查询失败,原因{e}'})
|
|
|
|
# def list_son_departments(self, request, *args, **kwargs):
|
|
# query_params = dict(request.query_params)
|
|
# parent_name = query_params.get('parent_name')
|
|
# if isinstance(parent_name, list):
|
|
# parent_name = ''.join(parent_name)
|
|
# logger.info(parent_name)
|
|
# parent_obj = Department.objects.filter(name=parent_name).first()
|
|
# if not parent_obj:
|
|
# return Response({'msg': '非法请求,该父级部门不存在'})
|
|
# parent_id = parent_obj.id
|
|
# queryset = Department.objects.filter(parent_id=parent_id).order_by('-id')
|
|
# paginator = MyPageNumberPagination()
|
|
# paginated_queryset = paginator.paginate_queryset(queryset, request)
|
|
# serializer = DepartmentSerializer(paginated_queryset, many=True)
|
|
#
|
|
# return paginator.get_paginated_response(serializer.data)
|
|
|
|
# def create(self, request, *args, **kwargs):
|
|
# data = request.data
|
|
# parent_depart_name = data.get('parent_department')
|
|
# if not parent_depart_name:
|
|
# return Response({"msg": "请输入父级部门名称"})
|
|
# parent_obj = Department.objects.filter(name=parent_depart_name).first()
|
|
# if parent_obj:
|
|
# return Response({'msg': '该部门已存在,请换一个'})
|
|
# try:
|
|
# with transaction.atomic():
|
|
# new_obj = Department.objects.create(name=parent_depart_name)
|
|
# return Response({'msg': '创建父级部门成功'})
|
|
# except Exception as e:
|
|
# return Response({'msg': f'创建失败,原因{e}'})
|
|
|
|
# def create(self, request, *args, **kwargs):
|
|
# data = request.data
|
|
# parent_name = data.get('parent_department_name')
|
|
# if not parent_name:
|
|
# return Response({'msg': '请输入父级部门名称'})
|
|
# depart_name = data.get('department_name')
|
|
# try:
|
|
# with transaction.atomic():
|
|
# if not depart_name:
|
|
# old_parent_obj = Department.objects.filter(name=parent_name).first()
|
|
# if old_parent_obj:
|
|
# return Response({'msg': '该父级部门名称已存在,请换一个'})
|
|
# parent_obj = Department.objects.create(name=parent_name)
|
|
# return Response({'msg': '创建父级部门成功'})
|
|
# else:
|
|
# old_parent_obj = Department.objects.filter(name=parent_name).first()
|
|
# if not old_parent_obj:
|
|
# old_parent_obj = Department.objects.create(name=parent_name)
|
|
# old_depart_obj = Department.objects.filter(name=depart_name, parent_id=old_parent_obj.id).first()
|
|
# if old_depart_obj:
|
|
# return Response({'msg': f'{parent_name}下已有{depart_name}啦,请换一个'})
|
|
# new_depart_obj = Department.objects.create(name=depart_name, parent_id=old_parent_obj.id)
|
|
# return Response({'msg': '创建子部门成功'})
|
|
# except Exception as e:
|
|
# return Response({'msg': f'创建失败,{e}'})
|
|
|
|
def create(self, request, *args, **kwargs):
|
|
data = request.data
|
|
department_name = data.get('department_name')
|
|
department_id = data.get('department_id')
|
|
if not department_id or department_id == '':
|
|
old_depart_obj = Department.objects.filter(name=department_name, parent_id__isnull=True).first()
|
|
if old_depart_obj:
|
|
return Response({'msg': f'该父级部门{department_name}已存在'})
|
|
depart_obj = Department.objects.create(name=department_name)
|
|
return Response({'msg': f'创建父级部门{department_name}成功', 'success': True})
|
|
else:
|
|
parent_obj = Department.objects.filter(id=department_id, parent_id__isnull=True).first()
|
|
if not parent_obj:
|
|
return Response({'msg': '非法请求'})
|
|
old_son_obj = Department.objects.filter(name=department_name, parent_id=department_id).first()
|
|
if old_son_obj:
|
|
return Response({'msg': f'该父级部门{parent_obj.name}下已有{old_son_obj.name}啦'})
|
|
son_obj = Department.objects.create(name=department_name, parent_id=department_id)
|
|
return Response({'msg': f'创建父级部门{parent_obj.name}下{son_obj.name}成功', 'success': True})
|
|
|
|
# def create_son_department(self, request, *args, **kwargs):
|
|
# data = request.data
|
|
# parent_name = data.get('parent_name')
|
|
# if not parent_name:
|
|
# return Response({'msg': '请输入父级部门名称以便创建子部门'})
|
|
# parent_obj = Department.objects.filter(name=parent_name).first()
|
|
# parent_id = parent_obj.id
|
|
# department_name = data.get('department_name')
|
|
# if not department_name:
|
|
# return Response({'msg': '请输入子部门名称'})
|
|
# depart_obj = Department.objects.filter(name=department_name, parent_id=parent_id).first()
|
|
# if depart_obj:
|
|
# return Response({'msg': f'{parent_name}下已有{department_name},请换一个'})
|
|
# try:
|
|
# with transaction.atomic():
|
|
# Department.objects.create(name=department_name, parent_id=parent_id)
|
|
# return Response({'msg': '创建成功'})
|
|
# except Exception as e:
|
|
# return Response({'msg': f'创建失败,原因{e}'})
|
|
|
|
def update(self, request, pk, *args, **kwargs):
|
|
data = request.data
|
|
try:
|
|
with transaction.atomic():
|
|
depart_obj = Department.objects.filter(id=pk).update(**data)
|
|
return Response({'msg': '更新成功', 'success': True})
|
|
except Department.DoesNotExist:
|
|
return Response({'msg': '该部门不存在'})
|
|
except Exception as e:
|
|
return Response({'msg': f'更新失败,原因{e}'})
|
|
|
|
def destroy(self, request, pk, *args, **kwargs):
|
|
try:
|
|
with transaction.atomic():
|
|
depart_obj = Department.objects.filter(id=pk).delete()
|
|
return Response({'msg': '删除成功', 'success': True})
|
|
except Department.DoesNotExist:
|
|
return Response({'msg': '该部门不存在'})
|
|
except Exception as e:
|
|
return Response({'msg': f'删除失败,原因{e}'})
|