暫無描述

screen_views.py 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # -*- coding: utf-8 -*-
  2. import shortuuid
  3. from django.conf import settings
  4. from django_logit import logit
  5. from django_query import get_query_value
  6. from django_response import response
  7. from json_render import json_render
  8. from guideline.models import ScreenAdminInfo
  9. from utils.error.errno_utils import PermissionStatusCode, ScreenStatusCode
  10. from utils.redis.connect import r
  11. from utils.redis.rkeys import SCREEN_ADMIN_LOGIN
  12. @logit
  13. def screen_admin_oauthqr(request):
  14. brand_id = request.GET.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID
  15. return json_render(request, 'page/screen_admin_oauth_qrcode.html', unjsondumpsdict={
  16. 'qr': settings.KODO_SCREEN_AUTH_URL.format(brand_id)
  17. })
  18. @logit
  19. def screen_admin_oauth(request):
  20. brand_id = request.GET.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID
  21. unionid = request.GET.get('unionid', '')
  22. openid = request.GET.get('openid', '')
  23. ScreenAdminInfo.objects.update_or_create(brand_id=brand_id, unionid=unionid, openid=openid, defaults={
  24. 'nickname': request.GET.get('nickname', ''),
  25. 'avatar': request.GET.get('avatar', '') or request.GET.get('headimgurl', ''),
  26. 'user_status': ScreenAdminInfo.ACTIVATED,
  27. })
  28. return json_render(request, 'page/screen_admin_oauth_success.html', unjsondumpsdict={
  29. })
  30. @logit
  31. def screen_admin_loginqr(request):
  32. brand_id = get_query_value(request, 'brand_id', settings.KODO_DEFAULT_BRAND_ID)
  33. token = shortuuid.uuid()
  34. return response(200, data={
  35. 'qr': settings.KODO_SCREEN_LOGIN_URL.format(brand_id, token),
  36. 'token': token,
  37. })
  38. @logit
  39. def screen_admin_login(request):
  40. brand_id = request.GET.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID
  41. unionid = request.GET.get('unionid', '')
  42. openid = request.GET.get('openid', '')
  43. token = request.GET.get('token', '')
  44. try:
  45. admin = ScreenAdminInfo.objects.get(unionid=unionid, user_status=ScreenAdminInfo.ACTIVATED)
  46. except ScreenAdminInfo.DoesNotExist:
  47. return json_render(request, 'page/screen_admin_login_fail.html', unjsondumpsdict={
  48. })
  49. r.setex(SCREEN_ADMIN_LOGIN % (brand_id, token), r.REDIS_EXPIRED_HALF_HOUR, unionid)
  50. return json_render(request, 'page/screen_admin_login_success.html', unjsondumpsdict={
  51. })
  52. @logit
  53. def screen_admin_loginrst(request):
  54. brand_id = get_query_value(request, 'brand_id', settings.KODO_DEFAULT_BRAND_ID)
  55. token = get_query_value(request, 'token', '')
  56. admin_login_key = SCREEN_ADMIN_LOGIN % (brand_id, token)
  57. if not r.exists(admin_login_key):
  58. return response(ScreenStatusCode.QRCODE_NOT_SCAN)
  59. unionid, _ = r.getdelete(admin_login_key)
  60. try:
  61. admin = ScreenAdminInfo.objects.get(unionid=unionid, user_status=ScreenAdminInfo.ACTIVATED)
  62. except ScreenAdminInfo.DoesNotExist:
  63. return response(PermissionStatusCode.PERMISSION_DENIED)
  64. return response(200, data={
  65. 'info': admin.data,
  66. })