Brak opisu

oauth_views.py 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from django.db import transaction
  4. from django.shortcuts import render
  5. from django_response import response
  6. from json_render import json_render
  7. from logit import logit
  8. from account.models import FranchiserInfo, LensmanInfo, SaleclerkInfo, TourGuideInfo
  9. from utils.error.errno_utils import FranchiserStatusCode, SaleclerkStatusCode
  10. from utils.redis.connect import r
  11. def lensman_oauth(request):
  12. lensman_type = int(request.GET.get('lt') or 0)
  13. unionid = request.GET.get('unionid', '')
  14. try:
  15. lensman = LensmanInfo.objects.get(unionid=unionid)
  16. except LensmanInfo.DoesNotExist:
  17. lensman = None
  18. return render(request, 'page/lensman_oauth.html', {
  19. 'lensman_type': lensman_type,
  20. 'lensman_info': lensman and lensman.data(lensman_type),
  21. 'modified': bool((not lensman) or (lensman and lensman.modified(lensman_type))), # 是否可以更改信息
  22. })
  23. def tourguide_oauth(request):
  24. unionid = request.GET.get('unionid', '')
  25. try:
  26. tourguide = TourGuideInfo.objects.get(unionid=unionid)
  27. except TourGuideInfo.DoesNotExist:
  28. tourguide = None
  29. return render(request, 'page/tourguide_oauth.html', {
  30. 'tourguide_info': tourguide and tourguide.data,
  31. 'modified': bool((not tourguide) or (tourguide and tourguide.modified)), # 是否可以更改信息
  32. })
  33. def login_qrcode(request):
  34. lensman_type = int(request.GET.get('lt') or 0)
  35. unionid = request.GET.get('unionid', '')
  36. data = {
  37. 'lensman_type': lensman_type,
  38. 'unionid': unionid,
  39. 'token': r.token(unionid)
  40. }
  41. return json_render(request, 'page/login_qrcode.html', data)
  42. def clerk_oauth(request):
  43. unionid = request.GET.get('unionid', '')
  44. chisers = FranchiserInfo.objects.filter(status=True)
  45. chisers = [chiser.data for chiser in chisers]
  46. try:
  47. clerk = SaleclerkInfo.objects.get(unionid=unionid)
  48. except SaleclerkInfo.DoesNotExist:
  49. clerk = None
  50. return render(request, 'page/clerk_oauth.html', {
  51. 'domain': settings.DOMAIN,
  52. 'chisers': chisers,
  53. 'clerk_info': clerk and clerk.data,
  54. 'modified': bool((not clerk) or (clerk and clerk.user_status in [SaleclerkInfo.UNVERIFIED, SaleclerkInfo.REFUSED])), # 是否可以更改信息
  55. })
  56. @logit
  57. @transaction.atomic
  58. def clerk_submit_api(request):
  59. """ 店员授权信息提交 """
  60. unionid = request.POST.get('unionid', '')
  61. openid = request.POST.get('openid', '')
  62. phone = request.POST.get('phone', '')
  63. chiser = request.POST.get('chiser', '')
  64. if SaleclerkInfo.objects.filter(clerk_phone=phone).exclude(unionid=unionid).exists():
  65. return response(SaleclerkStatusCode.CLERK_PHONE_ALREADY_EXISTS)
  66. try:
  67. franchiser = FranchiserInfo.objects.get(franchiser_id=chiser)
  68. except FranchiserInfo.DoesNotExist:
  69. return response(FranchiserStatusCode.CHISER_NOT_FOUND)
  70. fields = {
  71. 'franchiser_id': chiser,
  72. 'franchiser_name': franchiser.franchiser_name,
  73. 'clerk_name': request.POST.get('name', ''),
  74. 'clerk_sex': int(request.POST.get('sex', 1)),
  75. 'clerk_phone': phone,
  76. 'openid': openid,
  77. 'user_status': SaleclerkInfo.UNVERIFIED,
  78. }
  79. lensman, created = SaleclerkInfo.objects.select_for_update().get_or_create(unionid=unionid, defaults=fields)
  80. # 状态为 UNVERIFIED 的允许修改, 其他需要登录摄影师 APP 进行信息的修改
  81. if lensman.user_status not in [SaleclerkInfo.UNVERIFIED, SaleclerkInfo.REFUSED]:
  82. return response(SaleclerkInfo.LENSMAN_ALREADY_NOT_UNVERIFIED)
  83. if not created:
  84. for key, value in fields.iteritems():
  85. setattr(lensman, key, value)
  86. lensman.save()
  87. return response(200, 'Submit Success', u'提交成功', {})