grouplistview.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import datetime
  2. import logging
  3. from django.http import HttpResponse
  4. from rest_framework.views import APIView
  5. from rest_framework.response import Response
  6. from apps.group.models import Group
  7. from apps.log.models import get_log, gen_log
  8. from apps.user.middleware.rolecontrol import RoleControl
  9. from apps.user.models import User
  10. from utils.util_add_id import get_id
  11. from utils.util_random import Produce
  12. logger = logging.getLogger('django')
  13. class GroupListView(APIView):
  14. # create group
  15. @staticmethod
  16. @RoleControl
  17. def post(request, *args, **kwargs):
  18. name = request.POST.get('name')
  19. manager_id = request.POST.get('manager_id')
  20. manager = User.objects.filter(id=manager_id)[0]
  21. group = Group.objects.filter(name=name, delete=False)
  22. if group:
  23. logger.error("组名已存在,请修改组名重新上传")
  24. return HttpResponse(status=500, content='组名已存在,请修改组名重新上传')
  25. create_time = update_time = datetime.datetime.now()
  26. group_id = get_id(Group, 'TestLaboratory_V1_Group_1')
  27. code = Produce.auth_code(option='num')
  28. group = Group.objects.create(id=group_id, code=code, manager=manager_id, name=name, create_time=create_time,
  29. update_time=update_time)
  30. executor, action, method = get_log(request)
  31. gen_log(action, "分组", group.name, method, executor)
  32. return Response({
  33. 'id': group.id,
  34. 'name': group.name,
  35. 'code': group.code,
  36. 'manager': manager.username,
  37. })
  38. # view log_list
  39. @staticmethod
  40. @RoleControl
  41. def get(request, *args, **kwargs):
  42. group_id = request.GET.get('id')
  43. name = request.GET.get('name')
  44. code = request.GET.get('code')
  45. manager_id = request.GET.get('manager_id')
  46. groups = Group.objects.order_by('-create_time').filter(delete=False)
  47. if group_id:
  48. groups = groups.filter(id=group_id)
  49. if name:
  50. groups = groups.filter(name=name)
  51. if code:
  52. groups = groups.filter(code=code)
  53. if manager_id:
  54. groups = groups.filter(manager=manager_id)
  55. return_groups = list()
  56. for group in groups:
  57. manager = User.objects.filter(id=group.manager)[0]
  58. user_info = list()
  59. users = group.users.order_by('-create_time')
  60. for user in users:
  61. user_info.append({
  62. 'id': user.id,
  63. 'username': user.username,
  64. 'identity': user.identify
  65. })
  66. return_groups.append({
  67. 'id': group.id,
  68. 'name': group.name,
  69. 'code': group.code,
  70. 'manager': manager.username,
  71. 'members': user_info
  72. })
  73. return Response(return_groups)