views.py 5.8 KB

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