views.py 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # coding=utf-8
  2. from django.conf import settings
  3. from utils.custom_modelviewset import CustomModelViewSet
  4. from utils.permission import IsAdministratorUser
  5. from apps.tenant.models import Tenant
  6. from apps.tenant.employee.models import Employee
  7. from apps.admin import admin_log
  8. from apps.log.models import BizLog
  9. from .serializers import TenantSerializer
  10. from django.db import transaction
  11. from utils import response_ok
  12. from utils.exceptions import CustomError
  13. from rest_framework.decorators import action
  14. from utils import response_ok, response_error
  15. from apps.account.models import User
  16. from .filters import TenantFilter
  17. from apps.tenant.option.models import Option
  18. class TenantViewSet(CustomModelViewSet):
  19. permission_classes = [IsAdministratorUser, ]
  20. queryset = Tenant.objects.all()
  21. serializer_class = TenantSerializer
  22. def filter_queryset(self, queryset):
  23. f = TenantFilter(self.request.GET, queryset=queryset)
  24. return f.qs
  25. def perform_create(self, serializer):
  26. super(TenantViewSet, self).perform_create(serializer)
  27. instance = serializer.instance
  28. validated_data = serializer.validated_data
  29. admin_log(self.request.user, BizLog.INSERT, u'添加企业[%s] id=%d' % (instance.company_name, instance.id), validated_data)
  30. def perform_update(self, serializer):
  31. super(TenantViewSet, self).perform_update(serializer)
  32. instance = serializer.instance
  33. validated_data = serializer.validated_data
  34. admin_log(self.request.user, BizLog.INSERT, u'修改企业[%s] id=%d' % (instance.name, instance.id), validated_data)
  35. @action(methods=['post'], detail=True)
  36. def super_tenant(self, request, pk):
  37. name = request.POST.get('name')
  38. username = request.POST.get('username')
  39. password = request.POST.get('password')
  40. try:
  41. with transaction.atomic():
  42. tenant = Tenant.objects.filter(pk=pk).first()
  43. if not tenant:
  44. raise CustomError('当前企业无效,请刷新!')
  45. user = User.objects.filter(username=username).first()
  46. if user:
  47. user.type = User.SUPER
  48. user.save()
  49. Employee.objects.filter(user=user).update(tenant=tenant, type=Employee.SUPER)
  50. else:
  51. user = Employee.create_super_admin(tenant, name, username, password)
  52. option_data1 = {
  53. 'tenant': tenant,
  54. 'type': 1,
  55. 'name': u'桌椅、板凳',
  56. 'create_user': user,
  57. }
  58. option_data2 = {
  59. 'tenant': tenant,
  60. 'type': 2,
  61. 'name': u'设备老化',
  62. 'create_user': user,
  63. }
  64. Option.objects.create(**option_data1)
  65. Option.objects.create(**option_data2)
  66. admin_log(request.user, BizLog.INSERT, u'企业[%s]添加超级账号[%s]' % (tenant.company_name,username))
  67. return response_ok()
  68. except CustomError as e:
  69. return response_error(e.get_error_msg())
  70. except Exception as e:
  71. return response_error(str(e))
  72. @action(methods=['post'], detail=True)
  73. def check(self, request, pk):
  74. # 审核
  75. status = request.POST.get('status')
  76. reject_reason = request.POST.get('reason')
  77. try:
  78. with transaction.atomic():
  79. instance = Tenant.getById(pk)
  80. # 审核
  81. if instance.status > settings.DEFAULT:
  82. raise CustomError('当前企业已审核!')
  83. instance.status = status
  84. instance.reject_reason = reject_reason
  85. instance.save()
  86. BizLog.objects.addnew(None, request.user, BizLog.INSERT, u'审核企业[%s]状态为[%s],id=%d' % (instance.company_name, status, instance.id))
  87. except CustomError as e:
  88. return response_error(e.get_error_msg())
  89. except Exception as e:
  90. return response_error(str(e))
  91. return response_ok('审核完成!')