span rel=""> 151
+    except UserInfo.DoesNotExist:
152
+        user = None
153
+
154
+    if user:
155
+        return JsonResponse({
156
+            'status': 200,
157
+            'message': u'登录成功',
158
+            'data': user.data,
159
+        })
160
+
161
+    # wx_uid 不存在
162
+    # 判断 user_id 是否存在并且为分配用户,如果存在并且为分配用户,则直接在该帐户上更新,否则则直接创建帐户
163
+    sex = request.POST.get('sex', 0)
164
+    nickname = request.POST.get('nickname', '') or request.POST.get('screen_name', '')
165
+    avatar = request.POST.get('headimgurl', '') or request.POST.get('profile_image_url', '')
166
+    country = request.POST.get('country', '')
167
+    province = request.POST.get('province', '')
168
+    city = request.POST.get('city', '')
169
+
170
+    signup_ip, signup_at = ip_addr(request), tc.utc_datetime()
171
+
172
+    try:
173
+        user = UserInfo.objects.get(user_id=user_id)
174
+    except UserInfo.DoesNotExist:
175
+        user = None
176
+
177
+    if user and user.user_status == UserInfo.ASSIGN:
178
+        user.user_from = UserInfo.WX_USER
179
+        user.wx_uid = wx_uid
180
+        user.sex = sex
181
+        user.nickname = nickname
182
+        user.avatar = avatar
183
+        user.country = country
184
+        user.province = province
185
+        user.city = city
186
+        user.signup_ip = signup_ip
187
+        user.signup_at = signup_at
188
+        user.save()
189
+    else:
190
+        user = UserInfo.objects.create(
191
+            user_id=CurtailUUID.uuid(UserInfo, 'user_id'),
192
+            user_from=UserInfo.WX_USER,
193
+            sex=sex,
194
+            nickname=nickname,
195
+            avatar=avatar,
196
+            country=country,
197
+            province=province,
198
+            city=city,
199
+            user_status=UserInfo.ACTIVATED,
200
+            signup_ip=signup_ip,
201
+            signup_at=signup_at,
202
+        )
203
+
204
+    return JsonResponse({
205
+        'status': 200,
206
+        'message': u'登录成功',
207
+        'data': user.data,
208
+    })
209
+
210
+
124 211
 class UserViewSet(viewsets.ModelViewSet):
125 212
     """
126 213
     API endpoint that allows users to be viewed or edited.

+ 3 - 1
api/urls.py

@@ -8,10 +8,12 @@ from photo import views as photo_views
8 8
 
9 9
 
10 10
 urlpatterns = [
11
-    url(r'^login$', account_views.lesman_login_api, name='lesman_login_api'),
11
+    url(r'^login$', account_views.lesman_login_api, name='lesman_login_api'),  # 摄影师登录
12 12
     url(r'^u/is_registered$', account_views.user_is_registered_api, name='user_is_registered_api'),  # 用户是否已经注册
13 13
     url(r'^u/signup$', account_views.user_signup_api, name='user_signup_api'),  # 用户注册
14 14
     url(r'^u/login$', account_views.user_login_api, name='user_login_api'),  # 用户登录
15
+
16
+    url(r'^u/wx/authorize$', account_views.wx_authorize_api, name='wx_authorize_api'),  # 用户登录
15 17
 ]
16 18
 
17 19
 urlpatterns += [

+ 2 - 2
group/views.py

@@ -43,7 +43,7 @@ def group_create_api(request):
43 43
     GroupUserInfo.objects.create(
44 44
         group_id=group_id,
45 45
         user_id=user_id,
46
-        nickname=user.username,
46
+        nickname=user.final_nickname,
47 47
         admin=True,
48 48
         user_status=GroupUserInfo.PASSED,
49 49
         passed_at=tc.utc_datetime(),
@@ -172,7 +172,7 @@ def group_join_api(request):
172 172
         group_id=group_id,
173 173
         user_id=user_id,
174 174
         current_id=group_photo and group_photo.id or -1,
175
-        nickname=nickname or user.username,
175
+        nickname=nickname or user.final_nickname,
176 176
         admin=False,
177 177
         user_status=GroupUserInfo.PASSED,
178 178
         passed_at=tc.utc_datetime(),

+ 87 - 43
photo/views.py

@@ -123,50 +123,94 @@ def upload_photo(request):
123 123
 def session_detail_api(request, session):
124 124
     user_id = request.POST.get('user_id', '')
125 125
 
126
-    try:
127
-        user = UserInfo.objects.get(user_id=user_id)
128
-        user_id = user.user_id
129
-    except UserInfo.DoesNotExist:
130
-        user_id = CurtailUUID.uuid(UserInfo, 'user_id')
131
-        user = UserInfo.objects.create(
132
-            user_id=user_id,
133
-            user_status=UserInfo.ASSIGN,
134
-            signup_ip=ip_addr(request),
135
-        )
126
+    # 判断 user_id 是否存在,如果不存在,则直接分配帐户
127
+    user, created = UserInfo.objects.get_or_create(user_id=user_id, defaults={
128
+        'user_id': CurtailUUID.uuid(UserInfo, 'user_id'),
129
+        'user_status': UserInfo.ASSIGN,
130
+        'assign_ip': ip_addr(request),
131
+        'assign_at': tc.utc_datetime(),
132
+    })
133
+    # try:
134
+    #     user = UserInfo.objects.get(user_id=user_id)
135
+    # except UserInfo.DoesNotExist:
136
+    #     user = None
137
+    #
138
+    # if not user:
139
+    #     assign_ip, assign_at = ip_addr(request), tc.utc_datetime()
140
+    #     user = UserInfo.objects.create(
141
+    #         user_id=CurtailUUID.uuid(UserInfo, 'user_id'),
142
+    #         user_status=UserInfo.ASSIGN,
143
+    #         assign_ip=assign_ip,
144
+    #         assign_at=assign_at,
145
+    #     )
146
+
147
+    user_id = user.user_id
148
+
149
+    # 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建
150
+    group, created = GroupInfo.objects.get_or_create(session_id=session, defaults={
151
+        'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'),
152
+        'admin_id': user_id,
153
+        'group_from': GroupInfo.SESSION_GROUP,
154
+        'session_id': session,
155
+    })
156
+    # try:
157
+    #     group = GroupInfo.objects.get(session_id=session)
158
+    # except GroupInfo.DoesNotExist:
159
+    #     group = None
160
+    #
161
+    # if not group:
162
+    #     group = GroupInfo.objects.create(
163
+    #         group_id=CurtailUUID.uuid(GroupInfo, 'group_id'),
164
+    #         admin_id=user_id,
165
+    #         group_from=GroupInfo.SESSION_GROUP,
166
+    #         session_id=session,
167
+    #     )
168
+
169
+    group_id = group.group_id
170
+
171
+    # 判断 group_id/user_id 的群组用户是否存在,如果不存在,则直接创建
172
+    group_photo = GroupPhotoInfo.objects.filter(group_id=group_id).last()
173
+    group_user = GroupUserInfo.objects.get_or_create(group_id=group_id, user_id=user_id, defaults={
174
+        'current_id': group_photo and group_photo.id or -1,
175
+        'nickname': user.final_nickname,
176
+        'admin': False,
177
+        'user_status': GroupUserInfo.PASSED,
178
+        'passed_at': tc.utc_datetime(),
179
+    })
136 180
 
137
-    try:
138
-        group = GroupInfo.objects.get(session_id=session)
139
-        group_id = group.group_id
140
-        group_photo = GroupPhotoInfo.objects.filter(group_id=group_id).last()
141
-        if not GroupUserInfo.objects.filter(
142
-            group_id=group_id,
143
-            user_id=user_id
144
-        ).exists():
145
-            GroupUserInfo.objects.create(
146
-                group_id=group_id,
147
-                user_id=user_id,
148
-                current_id=group_photo and group_photo.id or -1,
149
-                nickname=user.username,
150
-                admin=False,
151
-                user_status=GroupUserInfo.PASSED,
152
-                passed_at=tc.utc_datetime(),
153
-            )
154
-    except GroupInfo.DoesNotExist:
155
-        group_id = CurtailUUID.uuid(GroupInfo, 'group_id')
156
-        group = GroupInfo.objects.create(
157
-            group_id=group_id,
158
-            admin_id=user_id,
159
-            group_from=GroupInfo.SESSION_GROUP,
160
-            session_id=session,
161
-        )
162
-        GroupUserInfo.objects.create(
163
-            group_id=group_id,
164
-            user_id=user_id,
165
-            nickname=user.username,
166
-            admin=True,
167
-            user_status=GroupUserInfo.PASSED,
168
-            passed_at=tc.utc_datetime(),
169
-        )
181
+    # try:
182
+    #     group = GroupInfo.objects.get(session_id=session)
183
+    #     group_id = group.group_id
184
+    #     group_photo = GroupPhotoInfo.objects.filter(group_id=group_id).last()
185
+    #     if not GroupUserInfo.objects.filter(
186
+    #         group_id=group_id,
187
+    #         user_id=user_id
188
+    #     ).exists():
189
+    #         GroupUserInfo.objects.create(
190
+    #             group_id=group_id,
191
+    #             user_id=user_id,
192
+    #             current_id=group_photo and group_photo.id or -1,
193
+    #             nickname=user.username,
194
+    #             admin=False,
195
+    #             user_status=GroupUserInfo.PASSED,
196
+    #             passed_at=tc.utc_datetime(),
197
+    #         )
198
+    # except GroupInfo.DoesNotExist:
199
+    #     group_id = CurtailUUID.uuid(GroupInfo, 'group_id')
200
+    #     group = GroupInfo.objects.create(
201
+    #         group_id=group_id,
202
+    #         admin_id=user_id,
203
+    #         group_from=GroupInfo.SESSION_GROUP,
204
+    #         session_id=session,
205
+    #     )
206
+    #     GroupUserInfo.objects.create(
207
+    #         group_id=group_id,
208
+    #         user_id=user_id,
209
+    #         nickname=user.username,
210
+    #         admin=True,
211
+    #         user_status=GroupUserInfo.PASSED,
212
+    #         passed_at=tc.utc_datetime(),
213
+    #     )
170 214
 
171 215
     photos = PhotosInfo.objects.filter(session_id=session)
172 216
     return JsonResponse({

adminSystem - Gogs: Go Git Service

Няма описание

license 1.1KB

    The MIT License (MIT) Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.