@@ -0,0 +1,120 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+from curtail_uuid import CurtailUUID |
|
4 |
+from django.contrib.auth.models import Group, User |
|
5 |
+from django.db import transaction |
|
6 |
+from django_response import response |
|
7 |
+from ipaddr import client_ip |
|
8 |
+from logit import logit |
|
9 |
+from rest_framework import viewsets |
|
10 |
+from TimeConvert import TimeConvert as tc |
|
11 |
+ |
|
12 |
+from account.models import LensmanInfo, UserInfo |
|
13 |
+from account.serializers import GroupSerializer, LensmanInfoSerializer, UserInfoSerializer, UserSerializer |
|
14 |
+from operation.models import GuestEntranceControlInfo |
|
15 |
+from utils.error.errno_utils import UserStatusCode |
|
16 |
+from utils.redis.rguest import get_guest_entrance_control |
|
17 |
+from utils.redis.rprofile import set_profile_info |
|
18 |
+from utils.version_utils import is_version_match |
|
19 |
+ |
|
20 |
+ |
|
21 |
+@logit |
|
22 |
+@transaction.atomic |
|
23 |
+def user_wx_authorize_api(request): |
|
24 |
+ # Get or Create User |
|
25 |
+ user, created = UserInfo.objects.select_for_update().get_or_create(unionid=request.POST.get('unionid', '')) |
|
26 |
+ |
|
27 |
+ # Set User_id |
|
28 |
+ if created: |
|
29 |
+ user.user_id = CurtailUUID.uuid(UserInfo, 'user_id') |
|
30 |
+ |
|
31 |
+ # Set User Key's Value |
|
32 |
+ user.user_from = UserInfo.USER_USER |
|
33 |
+ user.openid = request.POST.get('wx_uid', '') |
|
34 |
+ user.sex = request.POST.get('sex', 0) |
|
35 |
+ user.nickname = request.POST.get('nickname', '') or request.POST.get('screen_name', '') |
|
36 |
+ user.avatar = request.POST.get('headimgurl', '') or request.POST.get('profile_image_url', '') |
|
37 |
+ user.country = request.POST.get('country', '') |
|
38 |
+ user.province = request.POST.get('province', '') |
|
39 |
+ user.city = request.POST.get('city', '') |
|
40 |
+ user.user_status = UserInfo.ACTIVATED |
|
41 |
+ user.signup_ip = client_ip(request) |
|
42 |
+ user.signup_at = tc.utc_datetime() |
|
43 |
+ user.save() |
|
44 |
+ |
|
45 |
+ set_profile_info(user) |
|
46 |
+ |
|
47 |
+ return response(200, 'User Login Success', u'用户端登录成功', user.data) |
|
48 |
+ |
|
49 |
+ |
|
50 |
+@logit |
|
51 |
+@transaction.atomic |
|
52 |
+def user_guest_login_api(request): |
|
53 |
+ """ 游客登录 """ |
|
54 |
+ gen = get_guest_entrance_control() |
|
55 |
+ |
|
56 |
+ # 是否配置游客入口控制信息 |
|
57 |
+ if not gen: |
|
58 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
59 |
+ |
|
60 |
+ # 平台校验 |
|
61 |
+ platform = gen.get('platform', '') |
|
62 |
+ if request.Android: |
|
63 |
+ if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]: |
|
64 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
65 |
+ else: |
|
66 |
+ if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]: |
|
67 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
68 |
+ |
|
69 |
+ # 版本校验 |
|
70 |
+ if not is_version_match(request, gen): |
|
71 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
72 |
+ |
|
73 |
+ # 通用唯一识别码 (Universally Unique Identifier) |
|
74 |
+ uuid = request.POST.get('uuid', '') |
|
75 |
+ # 游客字段 |
|
76 |
+ fields = { |
|
77 |
+ 'user_id': CurtailUUID.uuid(UserInfo, 'user_id'), |
|
78 |
+ 'user_from': UserInfo.GUEST_USER, |
|
79 |
+ 'uuid': uuid, |
|
80 |
+ 'nickname': u'游客', |
|
81 |
+ 'user_status': UserInfo.ACTIVATED, |
|
82 |
+ } |
|
83 |
+ # 若 uuid 存在,则 get_or_create,否则 create |
|
84 |
+ if uuid: |
|
85 |
+ user, created = UserInfo.objects.select_for_update().get_or_create(user_from=UserInfo.GUEST_USER, uuid=uuid, defaults=fields) |
|
86 |
+ if created: |
|
87 |
+ user.nickname = u'游客{}'.format(user.pk) |
|
88 |
+ user.save() |
|
89 |
+ else: |
|
90 |
+ user = UserInfo.objects.select_for_update().create(**fields) |
|
91 |
+ user.nickname = u'游客{}'.format(user.pk) |
|
92 |
+ user.save() |
|
93 |
+ |
|
94 |
+ return response(200, 'Guest Login Success', u'游客登录成功', user.data) |
|
95 |
+ |
|
96 |
+ |
|
97 |
+class UserViewSet(viewsets.ModelViewSet): |
|
98 |
+ """ |
|
99 |
+ API endpoint that allows users to be viewed or edited. |
|
100 |
+ """ |
|
101 |
+ queryset = User.objects.all().order_by('-pk') |
|
102 |
+ serializer_class = UserSerializer |
|
103 |
+ |
|
104 |
+ |
|
105 |
+class GroupViewSet(viewsets.ModelViewSet): |
|
106 |
+ """ |
|
107 |
+ API endpoint that allows groups to be viewed or edited. |
|
108 |
+ """ |
|
109 |
+ queryset = Group.objects.all() |
|
110 |
+ serializer_class = GroupSerializer |
|
111 |
+ |
|
112 |
+ |
|
113 |
+class LensmanInfoViewSet(viewsets.ModelViewSet): |
|
114 |
+ queryset = LensmanInfo.objects.all().order_by('-pk') |
|
115 |
+ serializer_class = LensmanInfoSerializer |
|
116 |
+ |
|
117 |
+ |
|
118 |
+class UserInfoViewSet(viewsets.ModelViewSet): |
|
119 |
+ queryset = UserInfo.objects.all().order_by('-pk') |
|
120 |
+ serializer_class = UserInfoSerializer |
@@ -1,120 +1,7 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 |
+from __future__ import unicode_literals |
|
2 | 3 |
|
3 |
-from curtail_uuid import CurtailUUID |
|
4 |
-from django.contrib.auth.models import Group, User |
|
5 |
-from django.db import transaction |
|
6 |
-from django_response import response |
|
7 |
-from ipaddr import client_ip |
|
8 |
-from logit import logit |
|
9 |
-from rest_framework import viewsets |
|
10 |
-from TimeConvert import TimeConvert as tc |
|
4 |
+from django.shortcuts import render |
|
11 | 5 |
|
12 |
-from account.models import LensmanInfo, UserInfo |
|
13 |
-from account.serializers import GroupSerializer, LensmanInfoSerializer, UserInfoSerializer, UserSerializer |
|
14 |
-from operation.models import GuestEntranceControlInfo |
|
15 |
-from utils.error.errno_utils import UserStatusCode |
|
16 |
-from utils.redis.rguest import get_guest_entrance_control |
|
17 |
-from utils.redis.rprofile import set_profile_info |
|
18 |
-from utils.version_utils import is_version_match |
|
19 | 6 |
|
20 |
- |
|
21 |
-@logit |
|
22 |
-@transaction.atomic |
|
23 |
-def user_wx_authorize_api(request): |
|
24 |
- # Get or Create User |
|
25 |
- user, created = UserInfo.objects.select_for_update().get_or_create(unionid=request.POST.get('unionid', '')) |
|
26 |
- |
|
27 |
- # Set User_id |
|
28 |
- if created: |
|
29 |
- user.user_id = CurtailUUID.uuid(UserInfo, 'user_id') |
|
30 |
- |
|
31 |
- # Set User Key's Value |
|
32 |
- user.user_from = UserInfo.USER_USER |
|
33 |
- user.openid = request.POST.get('wx_uid', '') |
|
34 |
- user.sex = request.POST.get('sex', 0) |
|
35 |
- user.nickname = request.POST.get('nickname', '') or request.POST.get('screen_name', '') |
|
36 |
- user.avatar = request.POST.get('headimgurl', '') or request.POST.get('profile_image_url', '') |
|
37 |
- user.country = request.POST.get('country', '') |
|
38 |
- user.province = request.POST.get('province', '') |
|
39 |
- user.city = request.POST.get('city', '') |
|
40 |
- user.user_status = UserInfo.ACTIVATED |
|
41 |
- user.signup_ip = client_ip(request) |
|
42 |
- user.signup_at = tc.utc_datetime() |
|
43 |
- user.save() |
|
44 |
- |
|
45 |
- set_profile_info(user) |
|
46 |
- |
|
47 |
- return response(200, 'User Login Success', u'用户端登录成功', user.data) |
|
48 |
- |
|
49 |
- |
|
50 |
-@logit |
|
51 |
-@transaction.atomic |
|
52 |
-def user_guest_login_api(request): |
|
53 |
- """ 游客登录 """ |
|
54 |
- gen = get_guest_entrance_control() |
|
55 |
- |
|
56 |
- # 是否配置游客入口控制信息 |
|
57 |
- if not gen: |
|
58 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
59 |
- |
|
60 |
- # 平台校验 |
|
61 |
- platform = gen.get('platform', '') |
|
62 |
- if request.Android: |
|
63 |
- if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]: |
|
64 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
65 |
- else: |
|
66 |
- if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]: |
|
67 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
68 |
- |
|
69 |
- # 版本校验 |
|
70 |
- if not is_version_match(request, gen): |
|
71 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
72 |
- |
|
73 |
- # 通用唯一识别码 (Universally Unique Identifier) |
|
74 |
- uuid = request.POST.get('uuid', '') |
|
75 |
- # 游客字段 |
|
76 |
- fields = { |
|
77 |
- 'user_id': CurtailUUID.uuid(UserInfo, 'user_id'), |
|
78 |
- 'user_from': UserInfo.GUEST_USER, |
|
79 |
- 'uuid': uuid, |
|
80 |
- 'nickname': u'游客', |
|
81 |
- 'user_status': UserInfo.ACTIVATED, |
|
82 |
- } |
|
83 |
- # 若 uuid 存在,则 get_or_create,否则 create |
|
84 |
- if uuid: |
|
85 |
- user, created = UserInfo.objects.select_for_update().get_or_create(user_from=UserInfo.GUEST_USER, uuid=uuid, defaults=fields) |
|
86 |
- if created: |
|
87 |
- user.nickname = u'游客{}'.format(user.pk) |
|
88 |
- user.save() |
|
89 |
- else: |
|
90 |
- user = UserInfo.objects.select_for_update().create(**fields) |
|
91 |
- user.nickname = u'游客{}'.format(user.pk) |
|
92 |
- user.save() |
|
93 |
- |
|
94 |
- return response(200, 'Guest Login Success', u'游客登录成功', user.data) |
|
95 |
- |
|
96 |
- |
|
97 |
-class UserViewSet(viewsets.ModelViewSet): |
|
98 |
- """ |
|
99 |
- API endpoint that allows users to be viewed or edited. |
|
100 |
- """ |
|
101 |
- queryset = User.objects.all().order_by('-pk') |
|
102 |
- serializer_class = UserSerializer |
|
103 |
- |
|
104 |
- |
|
105 |
-class GroupViewSet(viewsets.ModelViewSet): |
|
106 |
- """ |
|
107 |
- API endpoint that allows groups to be viewed or edited. |
|
108 |
- """ |
|
109 |
- queryset = Group.objects.all() |
|
110 |
- serializer_class = GroupSerializer |
|
111 |
- |
|
112 |
- |
|
113 |
-class LensmanInfoViewSet(viewsets.ModelViewSet): |
|
114 |
- queryset = LensmanInfo.objects.all().order_by('-pk') |
|
115 |
- serializer_class = LensmanInfoSerializer |
|
116 |
- |
|
117 |
- |
|
118 |
-class UserInfoViewSet(viewsets.ModelViewSet): |
|
119 |
- queryset = UserInfo.objects.all().order_by('-pk') |
|
120 |
- serializer_class = UserInfoSerializer |
|
7 |
+# Create your views here. |
@@ -2,8 +2,7 @@ |
||
2 | 2 |
|
3 | 3 |
from django.conf.urls import url |
4 | 4 |
|
5 |
-from account import tourguide_views |
|
6 |
-from account import views as account_views |
|
5 |
+from account import account_views, tourguide_views |
|
7 | 6 |
from api import encrypt_views, mch_views |
8 | 7 |
from box import views as box_views |
9 | 8 |
from geo import views as geo_views |
@@ -21,7 +21,7 @@ from django.conf.urls.static import static |
||
21 | 21 |
from django.contrib import admin |
22 | 22 |
from rest_framework import routers |
23 | 23 |
|
24 |
-from account import views as account_views |
|
24 |
+from account import account_views |
|
25 | 25 |
from group import group_views, grouppage_views |
26 | 26 |
from miniapp import views as mini_views |
27 | 27 |
from photo import views as photo_views |