Merge branch 'master' of http://git.xfoto.com.cn/Hanyuan/hanyuan

FFIB 3 年之前
父節點
當前提交
f31136e421

+ 1 - 1
account/admin.py

@@ -6,7 +6,7 @@ from account.models import UserInfo
6 6
 
7 7
 
8 8
 class UserInfoAdmin(admin.ModelAdmin):
9
-    list_display = ('user_id', 'unionid', 'openid', 'openid_miniapp', 'name', 'sex', 'nickname', 'avatar', 'phone', 'country', 'province', 'city', 'user_status', 'updated_at', 'created_at')
9
+    list_display = ('user_id', 'unionid', 'openid', 'openid_miniapp', 'name', 'sex', 'nickname', 'avatar', 'phone', 'country', 'province', 'city', 'user_status', 'status', 'updated_at', 'created_at')
10 10
 
11 11
 
12 12
 admin.site.register(UserInfo, UserInfoAdmin)

+ 19 - 27
account/models.py

@@ -14,43 +14,35 @@ class UserInfo(BaseModelMixin):
14 14
     ASSIGN = 10
15 15
 
16 16
     USER_STATUS = (
17
-        (UNVERIFIED, u'未验证'),
18
-        (ACTIVATED, u'已激活'),
19
-        (DISABLED, u'已禁用'),
20
-        (DELETED, u'已删除'),
21
-        (ASSIGN, u'已分配'),
22
-    )
23
-
24
-    MALE = 1
25
-    FEMALE = 0
26
-
27
-    SEX_TYPE = (
28
-        (MALE, u'男'),
29
-        (FEMALE, u'女'),
17
+        (UNVERIFIED, '未验证'),
18
+        (ACTIVATED, '已激活'),
19
+        (DISABLED, '已禁用'),
20
+        (DELETED, '已删除'),
21
+        (ASSIGN, '已分配'),
30 22
     )
31 23
 
32 24
     user_id = ShortUUIDField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识', db_index=True, unique=True)
33 25
 
34 26
     # 微信授权用户
35
-    unionid = models.CharField(_(u'unionid'), max_length=32, blank=True, null=True, help_text=u'微信 Unionid', db_index=True, unique=True)
36
-    openid = models.CharField(_(u'openid'), max_length=32, blank=True, null=True, help_text=u'微信公众号 Openid', db_index=True, unique=True)
37
-    openid_miniapp = models.CharField(_(u'openid_miniapp'), max_length=32, blank=True, null=True, help_text=u'微信小程序 Openid', db_index=True, unique=True)
27
+    unionid = models.CharField(_('unionid'), max_length=32, blank=True, null=True, help_text='微信 Unionid', db_index=True, unique=True)
28
+    openid = models.CharField(_('openid'), max_length=32, blank=True, null=True, help_text='微信公众号 Openid', db_index=True, unique=True)
29
+    openid_miniapp = models.CharField(_('openid_miniapp'), max_length=32, blank=True, null=True, help_text='微信小程序 Openid', db_index=True, unique=True)
38 30
 
39 31
     # 用户基本信息
40
-    name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'用户姓名')
41
-    sex = models.IntegerField(_(u'sex'), choices=SexModelMixin.SEX_TUPLE, default=SexModelMixin.UNKNOWN, help_text=u'用户性别')
42
-    nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
43
-    avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
44
-    phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'用户电话', db_index=True)
45
-    country = models.CharField(_(u'country'), max_length=255, blank=True, null=True, help_text=u'用户国家')
46
-    province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
47
-    city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
32
+    name = models.CharField(_('name'), max_length=255, blank=True, null=True, help_text='用户姓名')
33
+    sex = models.IntegerField(_('sex'), choices=SexModelMixin.SEX_TUPLE, default=SexModelMixin.UNKNOWN, help_text='用户性别')
34
+    nickname = models.CharField(_('nickname'), max_length=255, blank=True, null=True, help_text='用户昵称')
35
+    avatar = models.CharField(_('avatar'), max_length=255, blank=True, null=True, help_text='用户头像')
36
+    phone = models.CharField(_('phone'), max_length=11, blank=True, null=True, help_text='用户电话', db_index=True)
37
+    country = models.CharField(_('country'), max_length=255, blank=True, null=True, help_text='用户国家')
38
+    province = models.CharField(_('province'), max_length=255, blank=True, null=True, help_text='用户省份')
39
+    city = models.CharField(_('city'), max_length=255, blank=True, null=True, help_text='用户城市')
48 40
 
49
-    user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED, help_text=u'用户状态')
41
+    user_status = models.IntegerField(_('user_status'), choices=USER_STATUS, default=UNVERIFIED, help_text='用户状态')
50 42
 
51 43
     class Meta:
52
-        verbose_name = _(u'用户信息')
53
-        verbose_name_plural = _(u'用户信息')
44
+        verbose_name = _('用户信息')
45
+        verbose_name_plural = _('用户信息')
54 46
 
55 47
     def __unicode__(self):
56 48
         return '%d' % self.pk

+ 2 - 1
api/course_field_views.py

@@ -82,6 +82,7 @@ def delete_course_field(request):
82 82
 
83 83
     return response()
84 84
 
85
+
85 86
 # 小程序获取报名字段列表
86 87
 def mp_get_course_field(request):
87 88
     field_id = request.POST.get('field_id', '')
@@ -93,4 +94,4 @@ def mp_get_course_field(request):
93 94
 
94 95
     return response(data={
95 96
         'field': field.data,
96
-    })
97
+    })

+ 10 - 6
api/course_register_views.py

@@ -7,7 +7,8 @@ from django_query import get_query_value
7 7
 from django_response import response
8 8
 from paginator import pagination
9 9
 
10
-from registration.models import BranchCampusAdministratorInfo, CourseRegisterInfo, UserCourseRegisterInfo, BranchCampusInfo
10
+from registration.models import (BranchCampusAdministratorInfo, BranchCampusInfo, CourseRegisterInfo,
11
+                                 UserCourseRegisterInfo)
11 12
 
12 13
 
13 14
 def course_register(request):
@@ -56,7 +57,7 @@ def course_register(request):
56 57
     #     'course_name': course_name,
57 58
     #     'fields': registers,
58 59
     # })
59
-    
60
+
60 61
     user_course_register, _ = UserCourseRegisterInfo.objects.get_or_create(user_id=user_id, course_id=course_id)
61 62
     if not user_course_register.campus_id:
62 63
         user_course_register.campus_id = admin.campus_id if admin else ''
@@ -72,13 +73,14 @@ def course_register(request):
72 73
 
73 74
     return response()
74 75
 
76
+
75 77
 def course_field_register(request):
76 78
     user_id = request.POST.get('user_id', '')
77 79
     field_id = request.POST.get('field_id', '')
78 80
 
79 81
     try:
80 82
         info = CourseRegisterInfo.objects.get(user_id=user_id, field_id=field_id)
81
-    except:
83
+    except CourseRegisterInfo.DoesNotExist:
82 84
         return response()
83 85
 
84 86
     fields = info.data.get('fields')
@@ -91,6 +93,7 @@ def course_field_register(request):
91 93
         'logs': registers,
92 94
     })
93 95
 
96
+
94 97
 def course_register_list(request):
95 98
     admin_id = request.POST.get('admin_id', '')
96 99
     course_id = request.POST.get('course_id', '')
@@ -108,7 +111,7 @@ def course_register_list(request):
108 111
 
109 112
     if campus.campus_type == BranchCampusInfo.BRANCH and admin.admin_type == BranchCampusAdministratorInfo.CHANNEL_ADMIN:
110 113
         registers = UserCourseRegisterInfo.objects.filter(admin_id=admin.admin_id)
111
-    
114
+
112 115
     if course_id:
113 116
         registers = UserCourseRegisterInfo.objects.filter(course_id=course_id)
114 117
 
@@ -122,6 +125,7 @@ def course_register_list(request):
122 125
         'left': left,
123 126
     })
124 127
 
128
+
125 129
 def update_course_registers_status(request):
126 130
     admin_id = request.POST.get('admin_id', '')
127 131
     course_id = request.POST.get('course_id', '')
@@ -143,5 +147,5 @@ def update_course_registers_status(request):
143 147
     if (user_status == UserCourseRegisterInfo.GRADUATED) or (user_status == UserCourseRegisterInfo.CERTIFICATE and campus.campus_type == BranchCampusInfo.MAIN):
144 148
         user_course_register.user_status = user_status
145 149
         user_course_register.save()
146
-    
147
-    return response()
150
+
151
+    return response()

+ 3 - 3
api/mini_views.py

@@ -65,7 +65,7 @@ def get_userinfo_api(request):
65 65
     # Just for compatible because of store session_key has changed
66 66
     store_session_key(appid=appid, secret=secret, session_key=session_key, unid='', storage=RedisStorage(r))
67 67
 
68
-    return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.data)
68
+    return response(200, 'Mini App Login Success', '微信小程序登录成功', user.data)
69 69
 
70 70
 
71 71
 @logit(res=True)
@@ -118,7 +118,7 @@ def mini_login_api(request):
118 118
     # Just for compatible because of store session_key has changed
119 119
     store_session_key(appid=appid, secret=secret, session_key=session_key, unid='', storage=RedisStorage(r))
120 120
 
121
-    return response(200, 'Mini App Login Success', u'微信小程序登录成功', user.data)
121
+    return response(200, 'Mini App Login Success', '微信小程序登录成功', user.data)
122 122
 
123 123
 
124 124
 @logit
@@ -165,4 +165,4 @@ def get_userinfo_api2(request):
165 165
     user.city = userinfo.get('city', '')
166 166
     user.save()
167 167
 
168
-    return response(200, 'Mini App Get Userinfo Success', u'微信小程序获取用户信息成功', user.data)
168
+    return response(200, 'Mini App Get Userinfo Success', '微信小程序获取用户信息成功', user.data)

+ 1 - 1
api/urls.py

@@ -79,4 +79,4 @@ urlpatterns += [
79 79
 
80 80
 urlpatterns += [
81 81
     url(r'^mp/branch/campus/list$', branch_campus_views.get_branch_campus_list, name='get_branch_campus_list'),
82
-]
82
+]

+ 9 - 7
hanyuan/basemodels.py

@@ -5,21 +5,23 @@ from django.utils.translation import ugettext_lazy as _
5 5
 
6 6
 
7 7
 class BaseModelMixin(models.Model):
8
-    status = models.BooleanField(_(u'status'), default=True, help_text=_(u'状态'), db_index=True)
9
-    created_at = models.DateTimeField(_(u'created_at'), auto_now_add=True, editable=True, help_text=_(u'创建时间'))
10
-    updated_at = models.DateTimeField(_(u'updated_at'), auto_now=True, editable=True, help_text=_(u'更新时间'))
8
+    status = models.BooleanField(_('status'), default=True, help_text=_('状态'), db_index=True)
9
+    created_at = models.DateTimeField(_('created_at'), auto_now_add=True, editable=True, help_text=_('创建时间'))
10
+    updated_at = models.DateTimeField(_('updated_at'), auto_now=True, editable=True, help_text=_('更新时间'))
11 11
 
12 12
     class Meta:
13 13
         abstract = True
14 14
 
15 15
 
16 16
 class SexChoicesMixin(models.Model):
17
+    UNKNOWN = 0
17 18
     MALE = 1
18
-    FEMALE = 0
19
+    FEMALE = 2
19 20
 
20
-    SEX_TYPE = (
21
-        (MALE, u'男'),
22
-        (FEMALE, u'女'),
21
+    SEX_TUPLE = (
22
+        (UNKNOWN, '未知'),
23
+        (MALE, '男'),
24
+        (FEMALE, '女'),
23 25
     )
24 26
 
25 27
     class Meta:

+ 1 - 1
hanyuan/deploy.bak/supervisor_commands/pollqueue.ini

@@ -9,4 +9,4 @@ stopasgroup=true
9 9
 killasgroup=true
10 10
 stdout_logfile=/var/log/supervisor_pollqueue_access.log
11 11
 stderr_logfile=/var/log/supervisor_pollqueue_error.log
12
-user=diors
12
+user=paiai

+ 1 - 1
hanyuan/deploy.bak/supervisor_commands/rlistlog.ini

@@ -9,4 +9,4 @@ stopasgroup=true
9 9
 killasgroup=true
10 10
 stdout_logfile=/var/log/supervisor_rlistlog_access.log
11 11
 stderr_logfile=/var/log/supervisor_rlistlog_error.log
12
-user=diors
12
+user=paiai

+ 1 - 1
hanyuan/local_settings_bak.py

@@ -14,4 +14,4 @@ EMAIL_HOST_USER = 'error.notify@exmail.com'
14 14
 EMAIL_HOST_PASSWORD = '<^_^>pwd<^_^>'
15 15
 DEFAULT_FROM_EMAIL = 'error.notify <error.notify@exmail.com>'
16 16
 ADMINS = [('Zhang San', 'san.zhang@exmail.com'), ('Li Si', 'si.li@exmail.com')]
17
-EMAIL_SUBJECT_PREFIX = u'[Hanyuan] '
17
+EMAIL_SUBJECT_PREFIX = '[Hanyuan] '

+ 4 - 1
hanyuan/settings.py

@@ -282,7 +282,7 @@ ADMINS = [('Zhang San', 'san.zhang@exmail.com'), ('Li Si', 'si.li@exmail.com')]
282 282
 MANAGERS = ADMINS
283 283
 # Subject-line prefix for email messages send with django.core.mail.mail_admins
284 284
 # or ...mail_managers.  Make sure to include the trailing space.
285
-EMAIL_SUBJECT_PREFIX = u'[Hanyuan] '
285
+EMAIL_SUBJECT_PREFIX = '[Hanyuan] '
286 286
 
287 287
 # Django-Admin Settings
288 288
 DJANGO_ADMIN_DISABLE_DELETE_SELECTED = False
@@ -402,3 +402,6 @@ LOGGING = {
402 402
 # 64 bit 9223372036854775807, 32 bit 2147483647
403 403
 from django.db.models import BigIntegerField  # isort:skip
404 404
 MAX_BIGINT = BigIntegerField.MAX_BIGINT
405
+
406
+# DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
407
+DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

+ 6 - 6
registration/admin.py

@@ -14,7 +14,7 @@ class BranchCampusInfoAdmin(admin.ModelAdmin):
14 14
 
15 15
 
16 16
 class BranchCampusAdministratorInfoAdmin(admin.ModelAdmin):
17
-    list_display = ('admin_id', 'campus_id', 'campus_name', 'admin_type', 'name', 'phone', 'password', 'encryption', 'user_status', 'updated_at', 'created_at')
17
+    list_display = ('admin_id', 'campus_id', 'campus_name', 'admin_type', 'name', 'phone', 'password', 'encryption', 'user_status', 'status', 'updated_at', 'created_at')
18 18
 
19 19
     def save_model(self, request, obj, form, change):
20 20
         password = obj.password or obj.phone[-6:]
@@ -23,15 +23,15 @@ class BranchCampusAdministratorInfoAdmin(admin.ModelAdmin):
23 23
 
24 24
 
25 25
 class CourseInfoAdmin(admin.ModelAdmin):
26
-    list_display = ('course_id', 'course_name', 'authorities', 'updated_at', 'created_at')
26
+    list_display = ('course_id', 'course_name', 'authorities', 'status', 'updated_at', 'created_at')
27 27
 
28 28
 
29 29
 class CourseRegisterFieldPoolInfoAdmin(admin.ModelAdmin):
30
-    list_display = ('field_type', 'field_key', 'field_name', 'field_options', 'updated_at', 'created_at')
30
+    list_display = ('field_type', 'field_key', 'field_name', 'field_options', 'status', 'updated_at', 'created_at')
31 31
 
32 32
 
33 33
 class CourseRegisterFieldInfoAdmin(admin.ModelAdmin):
34
-    list_display = ('field_id', 'course_id', 'course_name', 'fields', 'limit_scene_qrcode_url', 'updated_at', 'created_at')
34
+    list_display = ('field_id', 'course_id', 'course_name', 'fields', 'limit_scene_qrcode_url', 'status', 'updated_at', 'created_at')
35 35
 
36 36
     def save_model(self, request, obj, form, change):
37 37
         obj.save()
@@ -44,11 +44,11 @@ class CourseRegisterFieldInfoAdmin(admin.ModelAdmin):
44 44
 
45 45
 
46 46
 class CourseRegisterInfoAdmin(admin.ModelAdmin):
47
-    list_display = ('campus_id', 'campus_name', 'admin_id', 'admin_name', 'user_id', 'field_id', 'course_id', 'course_name', 'fields', 'updated_at', 'created_at')
47
+    list_display = ('campus_id', 'campus_name', 'admin_id', 'admin_name', 'user_id', 'field_id', 'course_id', 'course_name', 'fields', 'status', 'updated_at', 'created_at')
48 48
 
49 49
 
50 50
 class UserCourseRegisterInfoAdmin(admin.ModelAdmin):
51
-    list_display = ('campus_id', 'campus_name', 'admin_id', 'admin_name', 'user_id', 'course_id', 'course_name', 'user_status', 'fields', 'updated_at', 'created_at')
51
+    list_display = ('campus_id', 'campus_name', 'admin_id', 'admin_name', 'user_id', 'course_id', 'course_name', 'user_status', 'fields', 'status', 'updated_at', 'created_at')
52 52
 
53 53
 
54 54
 admin.site.register(BranchCampusInfo, BranchCampusInfoAdmin)

+ 6 - 7
registration/models.py

@@ -67,14 +67,14 @@ class BranchCampusAdministratorInfo(BaseModelMixin):
67 67
 
68 68
     name = models.CharField(_('name'), max_length=255, blank=True, null=True, help_text='管理员姓名')
69 69
     phone = models.CharField(_('phone'), max_length=11, blank=True, null=True, help_text='管理员电话', db_index=True)
70
-    password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'管理员密码')
71
-    encryption = models.CharField(_(u'encryption'), max_length=255, blank=True, null=True, help_text=u'管理员密码')
70
+    password = models.CharField(_('password'), max_length=255, blank=True, null=True, help_text='管理员密码')
71
+    encryption = models.CharField(_('encryption'), max_length=255, blank=True, null=True, help_text='管理员密码')
72 72
 
73 73
     user_status = models.IntegerField(_('user_status'), choices=USER_STATUS_TUPLE, default=PENDING, help_text='管理员状态', db_index=True)
74 74
 
75 75
     class Meta:
76
-        verbose_name = _(u'分院管理员信息')
77
-        verbose_name_plural = _(u'分院管理员信息')
76
+        verbose_name = _('分院管理员信息')
77
+        verbose_name_plural = _('分院管理员信息')
78 78
 
79 79
     def __unicode__(self):
80 80
         return '%d' % self.pk
@@ -256,11 +256,11 @@ class UserCourseRegisterInfo(BaseModelMixin):
256 256
     CERTIFICATE = 'certificate'
257 257
 
258 258
     USER_STATUS_TUPLE = (
259
-        (INCLASS,  '上课中'),
259
+        (INCLASS, '上课中'),
260 260
         (GRADUATED, '已毕业'),
261 261
         (CERTIFICATE, '已发证'),
262 262
     )
263
-    
263
+
264 264
     campus_id = models.CharField(_('campus_id'), max_length=32, blank=True, null=True, help_text='分院唯一标识', db_index=True)
265 265
     campus_name = models.CharField(_('campus_name'), max_length=255, blank=True, null=True, help_text='分院名称')
266 266
 
@@ -274,7 +274,6 @@ class UserCourseRegisterInfo(BaseModelMixin):
274 274
 
275 275
     user_status = models.CharField(_('user_status'), max_length=32, choices=USER_STATUS_TUPLE, default=INCLASS, help_text='用户状态')
276 276
 
277
-
278 277
     # {
279 278
     #     'field_id': '',
280 279
     #     'fields': []

+ 1 - 1
requirements_dj.txt

@@ -1,4 +1,4 @@
1
-Django==3.2.4
1
+Django==3.2.6
2 2
 django-admin==2.0.1
3 3
 django-detect==1.0.20
4 4
 django-file==1.0.4

+ 24 - 24
utils/error/errno_utils.py

@@ -5,32 +5,32 @@ from StatusCode import BaseStatusCode, StatusCodeField
5 5
 
6 6
 class ParamStatusCode(BaseStatusCode):
7 7
     """ 4000xx 参数相关错误码 """
8
-    PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description=u'参数不存在')
8
+    PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description='参数不存在')
9 9
 
10 10
 
11 11
 class ProfileStatusCode(BaseStatusCode):
12 12
     """ 4001xx 用户相关错误码 """
13
-    PROFILE_NOT_FOUND = StatusCodeField(400101, 'Profile Not Found', description=u'用户不存在')
13
+    PROFILE_NOT_FOUND = StatusCodeField(400101, 'Profile Not Found', description='用户不存在')
14 14
 
15 15
 
16 16
 class PhoneStatusCode(BaseStatusCode):
17 17
     """ 4002xx 手机相关错误码 """
18
-    INVALID_PHONE = StatusCodeField(400200, 'Invalid Phone', description=u'非法手机号')
19
-    PHONE_NOT_FOUND = StatusCodeField(400201, 'Phone Not Found', description=u'手机号不存在')
20
-    PHONE_ALREADY_EXISTS = StatusCodeField(400202, 'Phone Already Exists', description=u'手机号已存在')
18
+    INVALID_PHONE = StatusCodeField(400200, 'Invalid Phone', description='非法手机号')
19
+    PHONE_NOT_FOUND = StatusCodeField(400201, 'Phone Not Found', description='手机号不存在')
20
+    PHONE_ALREADY_EXISTS = StatusCodeField(400202, 'Phone Already Exists', description='手机号已存在')
21 21
 
22 22
 
23 23
 class OrderStatusCode(BaseStatusCode):
24 24
     """ 4040xx 订单/支付相关错误码 """
25
-    UNIFIED_ORDER_FAIL = StatusCodeField(404000, 'Unified Order Fail', description=u'统一下单失败')
26
-    ORDER_NOT_FOUND = StatusCodeField(404001, 'Order Not Found', description=u'订单不存在')
25
+    UNIFIED_ORDER_FAIL = StatusCodeField(404000, 'Unified Order Fail', description='统一下单失败')
26
+    ORDER_NOT_FOUND = StatusCodeField(404001, 'Order Not Found', description='订单不存在')
27 27
     # 订单支付状态
28
-    ORDER_NOT_PAY = StatusCodeField(404011, 'Order Not Pay', description=u'订单未支付')
29
-    ORDER_PAYING = StatusCodeField(404012, 'Order Paying', description=u'订单支付中')
30
-    ORDER_PAY_FAIL = StatusCodeField(404013, 'Order Pay Fail', description=u'微信支付失败')
28
+    ORDER_NOT_PAY = StatusCodeField(404011, 'Order Not Pay', description='订单未支付')
29
+    ORDER_PAYING = StatusCodeField(404012, 'Order Paying', description='订单支付中')
30
+    ORDER_PAY_FAIL = StatusCodeField(404013, 'Order Pay Fail', description='微信支付失败')
31 31
     # 通知校验状态
32
-    SIGN_CHECK_FAIL = StatusCodeField(404090, 'Sign Check Fail', description=u'签名校验失败')
33
-    FEE_CHECK_FAIL = StatusCodeField(404091, 'FEE Check Fail', description=u'金额校验失败')
32
+    SIGN_CHECK_FAIL = StatusCodeField(404090, 'Sign Check Fail', description='签名校验失败')
33
+    FEE_CHECK_FAIL = StatusCodeField(404091, 'FEE Check Fail', description='金额校验失败')
34 34
 
35 35
 
36 36
 class PayStatusCode(BaseStatusCode):
@@ -39,39 +39,39 @@ class PayStatusCode(BaseStatusCode):
39 39
 
40 40
 class WithdrawStatusCode(BaseStatusCode):
41 41
     """ 4042xx 提现相关错误码 """
42
-    BALANCE_INSUFFICIENT = StatusCodeField(404200, 'Balance Insufficient', description=u'提现金额不足')
42
+    BALANCE_INSUFFICIENT = StatusCodeField(404200, 'Balance Insufficient', description='提现金额不足')
43 43
 
44 44
 
45 45
 class TokenStatusCode(BaseStatusCode):
46 46
     """ 4090xx 票据相关错误码 """
47
-    TOKEN_NOT_FOUND = StatusCodeField(409001, 'Token Not Found', description=u'票据不存在')
47
+    TOKEN_NOT_FOUND = StatusCodeField(409001, 'Token Not Found', description='票据不存在')
48 48
 
49 49
 
50 50
 class SignatureStatusCode(BaseStatusCode):
51 51
     """ 4091xx 签名校验错误 """
52
-    SIGNATURE_ERROR = StatusCodeField(409101, 'Signature Error', description=u'签名错误')
52
+    SIGNATURE_ERROR = StatusCodeField(409101, 'Signature Error', description='签名错误')
53 53
 
54 54
 
55 55
 class GVCodeStatusCode(BaseStatusCode):
56 56
     """ 4092xx 图形验证码相关错误码 """
57
-    GRAPHIC_VCODE_ERROR = StatusCodeField(409201, 'Graphic VCode Error', description=u'图形验证码错误')
57
+    GRAPHIC_VCODE_ERROR = StatusCodeField(409201, 'Graphic VCode Error', description='图形验证码错误')
58 58
 
59 59
 
60 60
 class SVCodeStatusCode(BaseStatusCode):
61 61
     """ 4093xx 短信验证码相关错误码 """
62
-    SMS_QUOTA_LIMIT = StatusCodeField(409300, 'SMS Quota Limit', description=u'短信次数超限')
63
-    SMS_VCODE_ERROR = StatusCodeField(409301, 'SMS VCode Error', description=u'验证码错误,请稍后重试')
64
-    SMS_VCODE_HAS_SEND = StatusCodeField(409302, 'SMS VCode Has Send', description=u'验证码已发送,请勿重复获取')
62
+    SMS_QUOTA_LIMIT = StatusCodeField(409300, 'SMS Quota Limit', description='短信次数超限')
63
+    SMS_VCODE_ERROR = StatusCodeField(409301, 'SMS VCode Error', description='验证码错误,请稍后重试')
64
+    SMS_VCODE_HAS_SEND = StatusCodeField(409302, 'SMS VCode Has Send', description='验证码已发送,请勿重复获取')
65 65
 
66 66
 
67 67
 class InsufficientStatusCode(BaseStatusCode):
68 68
     """ 4095xx 不足相关错误码 """
69
-    BALANCE_INSUFFICIENT = StatusCodeField(409501, 'Balance Insufficient', description=u'余额不足')
70
-    INTEGRAL_INSUFFICIENT = StatusCodeField(409502, 'Integral Insufficient', description=u'积分不足')
69
+    BALANCE_INSUFFICIENT = StatusCodeField(409501, 'Balance Insufficient', description='余额不足')
70
+    INTEGRAL_INSUFFICIENT = StatusCodeField(409502, 'Integral Insufficient', description='积分不足')
71 71
 
72 72
 
73 73
 class PermissionStatusCode(BaseStatusCode):
74 74
     """ 4099xx 权限相关错误码 """
75
-    PERMISSION_DENIED = StatusCodeField(409900, 'Permission Denied', description=u'权限不足')
76
-    UPLOAD_PERMISSION_DENIED = StatusCodeField(409910, 'Upload Permission Denied', description=u'上传权限不足')
77
-    UPDATE_PERMISSION_DENIED = StatusCodeField(409930, 'Update Permission Denied', description=u'更新权限不足')
75
+    PERMISSION_DENIED = StatusCodeField(409900, 'Permission Denied', description='权限不足')
76
+    UPLOAD_PERMISSION_DENIED = StatusCodeField(409910, 'Upload Permission Denied', description='上传权限不足')
77
+    UPDATE_PERMISSION_DENIED = StatusCodeField(409930, 'Update Permission Denied', description='更新权限不足')