views.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. # coding=utf-8
  2. from django.conf import settings
  3. import datetime
  4. from django.utils import timezone
  5. from utils.custom_modelviewset import CustomModelViewSet
  6. from utils.permission import IsAdministratorUser
  7. from apps.tenant.models import Tenant
  8. from apps.tenant.employee.models import Employee
  9. from apps.admin import admin_log
  10. from apps.log.models import BizLog
  11. from .serializers import TenantSerializer
  12. from django.db import transaction
  13. from utils import response_ok
  14. from utils.exceptions import CustomError
  15. from rest_framework.decorators import action
  16. from utils import response_ok, response_error
  17. from apps.account.models import User
  18. from .filters import TenantFilter
  19. from apps.tenant.option.models import Option
  20. from apps.tenant.notices.models import Notices, NoticesToUser
  21. class TenantViewSet(CustomModelViewSet):
  22. permission_classes = [IsAdministratorUser, ]
  23. queryset = Tenant.objects.all()
  24. serializer_class = TenantSerializer
  25. def filter_queryset(self, queryset):
  26. f = TenantFilter(self.request.GET, queryset=queryset)
  27. return f.qs
  28. def perform_create(self, serializer):
  29. super(TenantViewSet, self).perform_create(serializer)
  30. instance = serializer.instance
  31. validated_data = serializer.validated_data
  32. admin_log(self.request.user, BizLog.INSERT, u'添加企业[%s] id=%d' % (instance.company_name, instance.id), validated_data)
  33. def perform_update(self, serializer):
  34. super(TenantViewSet, self).perform_update(serializer)
  35. instance = serializer.instance
  36. validated_data = serializer.validated_data
  37. admin_log(self.request.user, BizLog.INSERT, u'修改企业[%s] id=%d' % (instance.name, instance.id), validated_data)
  38. @action(methods=['post'], detail=True)
  39. def super_tenant(self, request, pk):
  40. name = request.POST.get('name')
  41. username = request.POST.get('username')
  42. password = request.POST.get('password')
  43. try:
  44. with transaction.atomic():
  45. tenant = Tenant.objects.filter(pk=pk).first()
  46. if not tenant:
  47. raise CustomError('当前企业无效,请刷新!')
  48. user = User.objects.filter(username=username).first()
  49. if user:
  50. user.type = User.SUPER
  51. user.save()
  52. Employee.objects.filter(user=user).update(tenant=tenant, type=Employee.SUPER)
  53. else:
  54. user = Employee.create_super_admin(tenant, name, username, password)
  55. option_data1 = {
  56. 'tenant': tenant,
  57. 'type': 1,
  58. 'name': u'桌椅、板凳',
  59. 'create_user': user,
  60. }
  61. option_data2 = {
  62. 'tenant': tenant,
  63. 'type': 2,
  64. 'name': u'设备老化',
  65. 'create_user': user,
  66. }
  67. Option.objects.create(**option_data1)
  68. Option.objects.create(**option_data2)
  69. notice_data = {
  70. 'title':'企业入驻审核通知,请点击查看!',
  71. 'content':'''您的企业入驻审核已通过,请牢记一下内容:
  72. 企业名称:{0}<br>
  73. 企业编号:{1}<br>
  74. 超级管理员账号:{2}<br>
  75. 超级管理员密码:{3}<br>
  76. 电脑端管理系统网址:https://baoxiu.zzliaoyuan.com/
  77. '''.format(tenant.company_name,tenant.company_no,username,password),
  78. 'create_user':request.user,
  79. 'tenant':tenant,
  80. 'type':Notices.MESSAGE,
  81. 'range':Notices.ADMIN,
  82. 'end_time':(timezone.now() + datetime.timedelta(days=10)).strftime('%Y-%m-%d'),
  83. }
  84. notice = Notices.objects.create(**notice_data)
  85. NoticesToUser.objects.create(notice=notice,user=user)
  86. admin_log(request.user, BizLog.INSERT, u'企业[%s]添加超级账号[%s]' % (tenant.company_name,username))
  87. return response_ok()
  88. except CustomError as e:
  89. return response_error(e.get_error_msg())
  90. except Exception as e:
  91. return response_error(str(e))
  92. @action(methods=['post'], detail=True)
  93. def check(self, request, pk):
  94. # 审核
  95. status = request.POST.get('status')
  96. reject_reason = request.POST.get('reason')
  97. try:
  98. with transaction.atomic():
  99. instance = Tenant.getById(pk)
  100. # 审核
  101. if instance.status > settings.DEFAULT:
  102. raise CustomError('当前企业已审核!')
  103. instance.status = status
  104. instance.reject_reason = reject_reason
  105. instance.save()
  106. BizLog.objects.addnew(None, request.user, BizLog.INSERT, u'审核企业[%s]状态为[%s],id=%d' % (instance.company_name, status, instance.id))
  107. except CustomError as e:
  108. return response_error(e.get_error_msg())
  109. except Exception as e:
  110. return response_error(str(e))
  111. return response_ok('审核完成!')