views_company_api.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from django.http import JsonResponse, HttpResponse
  2. from django.views.decorators.csrf import csrf_exempt
  3. from django.forms.models import model_to_dict
  4. from .model_handler import UserHandler, CompanyHandler
  5. from .func import is_admin
  6. def user_list(request):
  7. result = {'code': 1, 'content': None}
  8. if not is_admin(request):
  9. return HttpResponse(status=403)
  10. company = CompanyHandler.get_by_id(request.session.get('company_id'))
  11. if request.method == 'GET':
  12. users = UserHandler.search_by_company(company)
  13. users.order_by('admin')
  14. user_list = []
  15. for u in users:
  16. u_dict = model_to_dict(u)
  17. del u_dict['password']
  18. user_list.append(u_dict)
  19. result['code'] = 0
  20. result['content'] = user_list
  21. return JsonResponse(result)
  22. @csrf_exempt
  23. def user_search(request):
  24. result = {'code': 1, 'content': None}
  25. company = CompanyHandler.get_by_id(request.session.get('company_id'))
  26. if request.method == 'GET':
  27. users = UserHandler.search_like_name(request.GET.get('user_name'), company)
  28. user_list = []
  29. for user in users:
  30. user_list.append(model_to_dict(user))
  31. result = {'code': 0, 'content': user_list}
  32. return JsonResponse(result)
  33. @csrf_exempt
  34. def user_delete(request):
  35. result = {'code': 1, 'content': None}
  36. if not is_admin(request):
  37. return HttpResponse(status=403)
  38. if request.method == 'POST':
  39. delete_user_id = request.POST.get('delete_user_id')
  40. delete_user = UserHandler.get_by_id(delete_user_id)
  41. delete_user.delete()
  42. result = {'code': 0, 'content': 'deleted'}
  43. return JsonResponse(result)
  44. @csrf_exempt
  45. def user_admin_change(request):
  46. result = {'code': 1, 'content': None}
  47. if not is_admin(request):
  48. return HttpResponse(status=403)
  49. if request.method == 'POST':
  50. company = CompanyHandler.get_by_id(request.session.get('company_id'))
  51. user = UserHandler.get_by_id(request.session.get('user_id'))
  52. target_user_id = request.POST.get('target_user_id')
  53. target_user = UserHandler.get_by_id(target_user_id)
  54. if target_user.id == user.id:
  55. result['content'] = '不能修改自己管理员权限'
  56. return JsonResponse(result)
  57. new_admin_status = not target_user.admin
  58. if new_admin_status:
  59. target_user.admin = True
  60. target_user.save()
  61. result = {'code': 0, 'content': None}
  62. else: # 当去除管理员时候,检索目前是否有2个管理员,以防止管理员全部删光了
  63. admins = UserHandler.search_by_company(company=company).filter(admin=True)
  64. if len(admins) <= 1:
  65. result = {'code': 11, 'content': '管理员仅有一位不能再删除了'}
  66. else:
  67. target_user = UserHandler.get_by_id(target_user_id)
  68. target_user.admin = False
  69. target_user.save()
  70. result = {'code': 0, 'content': None}
  71. return JsonResponse(result)