123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- from curtail_uuid import CurtailUUID
- from django.contrib.auth.models import Group, User
- from django.db import transaction
- from ipaddr import client_ip
- from logit import logit
- from rest_framework import viewsets
- from TimeConvert import TimeConvert as tc
- from account.models import LensmanInfo, UserInfo
- from account.serializers import GroupSerializer, LensmanInfoSerializer, UserInfoSerializer, UserSerializer
- from operation.models import GuestEntranceControlInfo
- from utils.error.errno_utils import UserStatusCode
- from utils.error.response_utils import response
- from utils.redis.rguest import get_guest_entrance_control
- from utils.redis.rprofile import set_profile_info
- from utils.version_utils import is_version_match
- @logit
- @transaction.atomic
- def user_wx_authorize_api(request):
-
- user, created = UserInfo.objects.select_for_update().get_or_create(unionid=request.POST.get('unionid', ''))
-
- if created:
- user.user_id = CurtailUUID.uuid(UserInfo, 'user_id')
-
- user.user_from = UserInfo.USER_USER
- user.openid = request.POST.get('wx_uid', '')
- user.sex = request.POST.get('sex', 0)
- user.nickname = request.POST.get('nickname', '') or request.POST.get('screen_name', '')
- user.avatar = request.POST.get('headimgurl', '') or request.POST.get('profile_image_url', '')
- user.country = request.POST.get('country', '')
- user.province = request.POST.get('province', '')
- user.city = request.POST.get('city', '')
- user.user_status = UserInfo.ACTIVATED
- user.signup_ip = client_ip(request)
- user.signup_at = tc.utc_datetime()
- user.save()
- set_profile_info(user)
- return response(200, 'User Login Success', u'用户端登录成功', user.data)
- @logit
- @transaction.atomic
- def user_guest_login_api(request):
- """ 游客登录 """
- gen = get_guest_entrance_control()
-
- if not gen:
- return response(UserStatusCode.GUEST_NOT_ALLOWED)
-
- platform = gen.get('platform', '')
- if request.Android:
- if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]:
- return response(UserStatusCode.GUEST_NOT_ALLOWED)
- else:
- if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]:
- return response(UserStatusCode.GUEST_NOT_ALLOWED)
-
- if not is_version_match(request, gen):
- return response(UserStatusCode.GUEST_NOT_ALLOWED)
-
- uuid = request.POST.get('uuid', '')
-
- fields = {
- 'user_id': CurtailUUID.uuid(UserInfo, 'user_id'),
- 'user_from': UserInfo.GUEST_USER,
- 'uuid': uuid,
- 'nickname': u'游客',
- 'user_status': UserInfo.ACTIVATED,
- }
-
- if uuid:
- user, created = UserInfo.objects.select_for_update().get_or_create(user_from=UserInfo.GUEST_USER, uuid=uuid, defaults=fields)
- if created:
- user.nickname = u'游客{}'.format(user.pk)
- user.save()
- else:
- user = UserInfo.objects.select_for_update().create(**fields)
- user.nickname = u'游客{}'.format(user.pk)
- user.save()
- return response(200, 'Guest Login Success', u'游客登录成功', user.data)
- class UserViewSet(viewsets.ModelViewSet):
- """
- API endpoint that allows users to be viewed or edited.
- """
- queryset = User.objects.all().order_by('-pk')
- serializer_class = UserSerializer
- class GroupViewSet(viewsets.ModelViewSet):
- """
- API endpoint that allows groups to be viewed or edited.
- """
- queryset = Group.objects.all()
- serializer_class = GroupSerializer
- class LensmanInfoViewSet(viewsets.ModelViewSet):
- queryset = LensmanInfo.objects.all().order_by('-pk')
- serializer_class = LensmanInfoSerializer
- class UserInfoViewSet(viewsets.ModelViewSet):
- queryset = UserInfo.objects.all().order_by('-pk')
- serializer_class = UserInfoSerializer
|