@@ -3,7 +3,7 @@ |
||
3 | 3 |
from django.contrib import admin |
4 | 4 |
from django_admin import ChangeOnlyModelAdmin, ReadOnlyModelAdmin |
5 | 5 |
|
6 |
-from account.models import UserInfo, UserIntegralIncomeExpensesInfo, LensmanInfo |
|
6 |
+from account.models import LensmanInfo, UserInfo, UserIntegralIncomeExpensesInfo |
|
7 | 7 |
from mch.models import ConsumeInfoSubmitLogInfo |
8 | 8 |
|
9 | 9 |
|
@@ -24,6 +24,7 @@ class LensmanInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin): |
||
24 | 24 |
list_filter = ('lensman_status', 'status') |
25 | 25 |
search_fields = ('user_id', 'name', 'phone') |
26 | 26 |
|
27 |
+ |
|
27 | 28 |
class UserIntegralIncomeExpensesInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin): |
28 | 29 |
list_display = ('user_id', 'brand_id', 'brand_name', 'model_id', 'model_name', 'code', 'integral_from', 'integral', 'final_integral', 'remark', 'updated_at', 'created_at') |
29 | 30 |
list_filter = ('integral_from', 'status') |
@@ -1,12 +1,13 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
+import datetime |
|
4 |
+ |
|
3 | 5 |
from django.conf import settings |
4 | 6 |
from django.db import models |
5 | 7 |
from django.utils.translation import ugettext_lazy as _ |
6 | 8 |
from django_models_ext import BaseModelMixin, SexModelMixin |
7 | 9 |
from shortuuidfield import ShortUUIDField |
8 | 10 |
from TimeConvert import TimeConvert as tc |
9 |
-import datetime |
|
10 | 11 |
|
11 | 12 |
from kodo.basemodels import LensmanTypeBoolMixin |
12 | 13 |
from mch.models import ConsumeInfoSubmitLogInfo, MaintenancemanInfo, SaleclerkInfo |
@@ -271,7 +272,7 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin): |
||
271 | 272 |
'identity_card_name': self.identity_card_name, |
272 | 273 |
|
273 | 274 |
'tenancy_shot_permission': self.tenancy_shot_permission, |
274 |
- #摄影师 |
|
275 |
+ # 摄影师 |
|
275 | 276 |
'is_lensman': bool(self.lensmaninfo), |
276 | 277 |
'lensman_info': self.lensmaninfo, |
277 | 278 |
} |
@@ -376,7 +377,6 @@ class LensmanInfo(BaseModelMixin): |
||
376 | 377 |
(DISABLED, u'已禁用'), |
377 | 378 |
) |
378 | 379 |
|
379 |
- |
|
380 | 380 |
lensman_id = ShortUUIDField(_(u'lensman_id'), max_length=32, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True, unique=True) |
381 | 381 |
|
382 | 382 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
@@ -408,7 +408,7 @@ class LensmanInfo(BaseModelMixin): |
||
408 | 408 |
|
409 | 409 |
def __unicode__(self): |
410 | 410 |
return '%d' % self.pk |
411 |
- |
|
411 |
+ |
|
412 | 412 |
@property |
413 | 413 |
def is_expired(self): |
414 | 414 |
now_time = datetime.datetime.now() |
@@ -448,6 +448,7 @@ class LensmanInfo(BaseModelMixin): |
||
448 | 448 |
'created_at': tc.local_string(utc_dt=self.created_at), |
449 | 449 |
} |
450 | 450 |
|
451 |
+ |
|
451 | 452 |
class UserIntegralIncomeExpensesInfo(BaseModelMixin): |
452 | 453 |
PRODUCT = 0 |
453 | 454 |
SHARE = 1 |
@@ -500,7 +501,7 @@ class UserIntegralIncomeExpensesInfo(BaseModelMixin): |
||
500 | 501 |
'expired_at': self.expired_at if self.expired_at else '', |
501 | 502 |
'created_at': tc.local_string(utc_dt=self.created_at), |
502 | 503 |
} |
503 |
- |
|
504 |
+ |
|
504 | 505 |
@property |
505 | 506 |
def lensman_userdata(self): |
506 | 507 |
act = MemberActivityInfo.objects.get(activity_id=self.activity_id) |
@@ -513,7 +514,7 @@ class UserIntegralIncomeExpensesInfo(BaseModelMixin): |
||
513 | 514 |
'expired_at': self.expired_at if self.expired_at else '', |
514 | 515 |
'created_at': tc.local_string(utc_dt=self.created_at), |
515 | 516 |
} |
516 |
- |
|
517 |
+ |
|
517 | 518 |
|
518 | 519 |
class LensmanIntegralIncomeExpensesInfo(BaseModelMixin): |
519 | 520 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
@@ -549,14 +550,14 @@ class LensmanIntegralIncomeExpensesInfo(BaseModelMixin): |
||
549 | 550 |
'expired_at': self.expired_at if self.expired_at else '', |
550 | 551 |
'created_at': tc.local_string(utc_dt=self.created_at), |
551 | 552 |
} |
552 |
- |
|
553 |
+ |
|
553 | 554 |
@property |
554 | 555 |
def userdata(self): |
555 | 556 |
if self.activity_id: |
556 | 557 |
act = MemberActivityInfo.objects.get(activity_id=self.activity_id) |
557 | 558 |
else: |
558 | 559 |
act = None |
559 |
- |
|
560 |
+ |
|
560 | 561 |
return { |
561 | 562 |
'integral': self.integral, |
562 | 563 |
'remark': self.remark, |
@@ -564,4 +565,4 @@ class LensmanIntegralIncomeExpensesInfo(BaseModelMixin): |
||
564 | 565 |
'activity_id': self.activity_id, |
565 | 566 |
'expired_at': self.expired_at if self.expired_at else '', |
566 | 567 |
'created_at': tc.local_string(utc_dt=self.created_at), |
567 |
- } |
|
568 |
+ } |
@@ -1027,7 +1027,6 @@ def member_activity_contribute_welfare_unlock(request, administrator): |
||
1027 | 1027 |
except MemberActivityInfo.DoesNotExist: |
1028 | 1028 |
return (MemberActivityStatusCode.ACTIVITY_NOT_FOUND) |
1029 | 1029 |
|
1030 |
- |
|
1031 | 1030 |
data = { |
1032 | 1031 |
"thing1": { |
1033 | 1032 |
"value": act.title[:20], |
@@ -1045,7 +1044,7 @@ def member_activity_contribute_welfare_unlock(request, administrator): |
||
1045 | 1044 |
|
1046 | 1045 |
res = sendwxasubscribemessage(openid=user.openid_miniapp, template_id=settings.TEMPLATE_ID_UNLOCKING_WELFARE, data=data, miniprogram_state=None, lang=None, page='/pages/member/activity/activity?unlocking_id={}'.format(unlocking_info.unlocking_id)) |
1047 | 1046 |
# sendtemplatemessage(openid=user.openid, template_id=settings.TEMPLATE_ID_UNLOCKING_WELFARE, data=data, miniappid=appid, minipagepath='/pages/member/activity/activity?unlocking_id={}'.format(unlocking_info.unlocking_id)) |
1048 |
- |
|
1047 |
+ |
|
1049 | 1048 |
unlocking_info.send_template_message_res = json.dumps(res) |
1050 | 1049 |
unlocking_info.save() |
1051 | 1050 |
|
@@ -2,16 +2,15 @@ |
||
2 | 2 |
|
3 | 3 |
from __future__ import division |
4 | 4 |
|
5 |
-from paginator import pagination |
|
6 |
- |
|
7 | 5 |
from django.db import transaction |
8 | 6 |
from django.db.models import Q |
9 | 7 |
from django_logit import logit |
10 | 8 |
from django_response import response |
9 |
+from paginator import pagination |
|
11 | 10 |
from TimeConvert import TimeConvert as tc |
12 | 11 |
|
13 |
-from kodo.decorators import check_admin |
|
14 | 12 |
from account.models import UserInfo |
13 |
+from kodo.decorators import check_admin |
|
15 | 14 |
from mch.models import AdministratorInfo, ConsumeShotUnbindingInfo |
16 | 15 |
|
17 | 16 |
|
@@ -23,11 +23,11 @@ def get_signed_contribtion_contract_file_api(request, administrator): |
||
23 | 23 |
BusinessType = 'FLOW' |
24 | 24 |
BusinessIds = [contract.flow_id] |
25 | 25 |
FileType = 'PDF' |
26 |
- UrlTtl = '86400' # 过期时间 |
|
26 |
+ UrlTtl = '86400' # 过期时间 |
|
27 | 27 |
|
28 | 28 |
# TODO: 获取合同文件 https://qian.tencent.com/developers/companyApis/templatesAndFiles/DescribeFileUrls |
29 | 29 |
FileUrls = [] |
30 | 30 |
|
31 | 31 |
return response(200, data={ |
32 | 32 |
'file_url': FileUrls[0].Url |
33 |
- }) |
|
33 |
+ }) |
@@ -1,12 +1,14 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 | 3 |
from django.conf.urls import include, url |
4 |
-from api.lensman import contract_admin_views, contract_mp_views, activity_admin_views |
|
4 |
+ |
|
5 |
+from api.lensman import activity_admin_views, contract_admin_views, contract_mp_views |
|
6 |
+ |
|
5 | 7 |
|
6 | 8 |
urlpatterns = [ |
7 | 9 |
url(r'^mp/lensman/contribution/contract/get$', contract_mp_views.get_contribtion_contract_api, name='get_contribtion_contract_api'), |
8 | 10 |
url(r'^mp/lensman/contribution/contract/status/get$', contract_mp_views.get_contribtion_contract_status_api, name='get_contribtion_contract_status_api'), |
9 |
- |
|
11 |
+ |
|
10 | 12 |
url(r'^mp/ess/callback$', contract_mp_views.ess_callback, name='ess_callback'), |
11 | 13 |
] |
12 | 14 |
|
@@ -5,9 +5,9 @@ from __future__ import division |
||
5 | 5 |
from datetime import datetime |
6 | 6 |
|
7 | 7 |
from django.conf import settings |
8 |
+from django.db.models import Q |
|
8 | 9 |
from django_logit import logit |
9 | 10 |
from django_response import response |
10 |
-from django.db.models import Q |
|
11 | 11 |
from paginator import pagination |
12 | 12 |
from TimeConvert import TimeConvert as tc |
13 | 13 |
|
@@ -29,8 +29,7 @@ def lensman_list(request, administrator): |
||
29 | 29 |
logs = LensmanInfo.objects.filter(status=True).order_by('-pk') |
30 | 30 |
|
31 | 31 |
if query: |
32 |
- logs = logs.filter(Q(name__icontains=query) | |
|
33 |
- Q(phone__icontains=query)) |
|
32 |
+ logs = logs.filter(Q(name__icontains=query) | Q(phone__icontains=query)) |
|
34 | 33 |
|
35 | 34 |
if lensman_status: |
36 | 35 |
logs = logs.filter(lensman_status=lensman_status) |
@@ -8,6 +8,7 @@ from django_response import response |
||
8 | 8 |
|
9 | 9 |
from account.models import LensmanInfo, LensmanIntegralIncomeExpensesInfo |
10 | 10 |
|
11 |
+ |
|
11 | 12 |
@logit |
12 | 13 |
def lensman_register(request): |
13 | 14 |
user_id = request.POST.get('user_id', '') |
@@ -27,29 +28,28 @@ def lensman_register(request): |
||
27 | 28 |
|
28 | 29 |
@logit |
29 | 30 |
def lensman_detail(request): |
30 |
- user_id = request.POST.get('user_id', '') |
|
31 |
+ user_id = request.POST.get('user_id', '') |
|
31 | 32 |
|
32 |
- try: |
|
33 |
- lensman = LensmanInfo.objects.get(user_id=user_id, status=True) |
|
34 |
- except LensmanInfo.DoesNotExist: |
|
35 |
- return response(200, 'Lensman Not Found', u'摄影师不存在') |
|
33 |
+ try: |
|
34 |
+ lensman = LensmanInfo.objects.get(user_id=user_id, status=True) |
|
35 |
+ except LensmanInfo.DoesNotExist: |
|
36 |
+ return response(200, 'Lensman Not Found', u'摄影师不存在') |
|
36 | 37 |
|
37 |
- return response(200, 'Get Lensman Detail Success', u'获取摄影师信息成功', data=lensman.data) |
|
38 |
+ return response(200, 'Get Lensman Detail Success', u'获取摄影师信息成功', data=lensman.data) |
|
38 | 39 |
|
39 | 40 |
|
40 | 41 |
@logit |
41 | 42 |
def lensman_integral_list(request): |
42 |
- user_id = request.POST.get('user_id', '') |
|
43 |
- brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID |
|
43 |
+ user_id = request.POST.get('user_id', '') |
|
44 |
+ brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID |
|
45 |
+ |
|
46 |
+ try: |
|
47 |
+ lensman = LensmanInfo.objects.get(user_id=user_id, status=True) |
|
48 |
+ except LensmanInfo.DoesNotExist: |
|
49 |
+ return response(200, 'Lensman Not Found', u'摄影师不存在') |
|
44 | 50 |
|
45 |
- try: |
|
46 |
- lensman = LensmanInfo.objects.get(user_id=user_id, status=True) |
|
47 |
- except LensmanInfo.DoesNotExist: |
|
48 |
- return response(200, 'Lensman Not Found', u'摄影师不存在') |
|
49 |
- |
|
50 |
- integrals = LensmanIntegralIncomeExpensesInfo.objects.filter(user_id=user_id, status=True).order_by('-pk') |
|
51 |
+ integrals = LensmanIntegralIncomeExpensesInfo.objects.filter(user_id=user_id, status=True).order_by('-pk') |
|
51 | 52 |
|
52 |
- integrals = [integral.userdata for integral in integrals] |
|
53 |
- |
|
53 |
+ integrals = [integral.userdata for integral in integrals] |
|
54 | 54 |
|
55 |
- return response(200, 'Get Lensman Integral List Success', u'获取摄影师积分列表成功', data=integrals) |
|
55 |
+ return response(200, 'Get Lensman Integral List Success', u'获取摄影师积分列表成功', data=integrals) |
@@ -17,9 +17,9 @@ from TimeConvert import TimeConvert as tc |
||
17 | 17 |
from account.models import UserInfo |
18 | 18 |
from coupon.models import CouponInfo, UserCouponInfo |
19 | 19 |
from integral.models import SaleclerkSubmitLogInfo |
20 |
-from logs.models import AdministratorLoginLogInfo, MchInfoEncryptLogInfo, ComplementCodeLogInfo |
|
21 |
-from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, |
|
22 |
- LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo, ConsumeShotUnbindingInfo) |
|
20 |
+from logs.models import AdministratorLoginLogInfo, ComplementCodeLogInfo, MchInfoEncryptLogInfo |
|
21 |
+from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, ConsumeShotUnbindingInfo, |
|
22 |
+ DistributorInfo, LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo) |
|
23 | 23 |
from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo |
24 | 24 |
from utils.error.errno_utils import (AdministratorStatusCode, OperatorStatusCode, ProductBrandStatusCode, |
25 | 25 |
ProductModelStatusCode, UserStatusCode) |
@@ -28,16 +28,17 @@ def distributor_list(request): |
||
28 | 28 |
'left': left, |
29 | 29 |
}) |
30 | 30 |
|
31 |
+ |
|
31 | 32 |
@logit |
32 | 33 |
def salesman_detail(request): |
33 |
- user_id = request.POST.get('user_id', '') |
|
34 |
+ user_id = request.POST.get('user_id', '') |
|
34 | 35 |
|
35 |
- try: |
|
36 |
- salesman = SaleclerkInfo.objects.get(user_id=user_id, status=True) |
|
37 |
- except SaleclerkInfo.DoesNotExist: |
|
38 |
- return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
36 |
+ try: |
|
37 |
+ salesman = SaleclerkInfo.objects.get(user_id=user_id, status=True) |
|
38 |
+ except SaleclerkInfo.DoesNotExist: |
|
39 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
39 | 40 |
|
40 |
- return response(200, 'Get Salesman Detail Success', u'获取销售员信息成功', data=salesman.data) |
|
41 |
+ return response(200, 'Get Salesman Detail Success', u'获取销售员信息成功', data=salesman.data) |
|
41 | 42 |
|
42 | 43 |
|
43 | 44 |
@logit |
@@ -72,4 +73,4 @@ def salesman_register(request): |
||
72 | 73 |
|
73 | 74 |
clerk, _ = SaleclerkInfo.objects.update_or_create(brand_id=brand_id, unionid=unionid, defaults=fields) |
74 | 75 |
|
75 |
- return response(200, 'Submit Success', u'提交成功', {}) |
|
76 |
+ return response(200, 'Submit Success', u'提交成功', {}) |
@@ -79,7 +79,6 @@ def shot_create(request, administrator): |
||
79 | 79 |
if TenancyShotInfo.objects.filter(model_id=model_id, sn=sn).exists(): |
80 | 80 |
return response(TenancyStatusCode.TENANCY_SHOT_ALREADY_EXIST) |
81 | 81 |
|
82 |
- |
|
83 | 82 |
shot = TenancyShotInfo.objects.create( |
84 | 83 |
model_id=model_id, |
85 | 84 |
model_name=model_name, |
@@ -256,6 +255,7 @@ def shot_request_update(request, administrator): |
||
256 | 255 |
'req': req.admindata, |
257 | 256 |
}) |
258 | 257 |
|
258 |
+ |
|
259 | 259 |
@logit |
260 | 260 |
@check_admin |
261 | 261 |
def shot_request_delete(request, administrator): |
@@ -3,10 +3,11 @@ |
||
3 | 3 |
from django.conf.urls import include, url |
4 | 4 |
from django_file_upload import views as file_views |
5 | 5 |
|
6 |
-from api import (admin_views, clerk_views, complement_views, distributor_views, encrypt_views, express_views, log_views, |
|
7 |
- maintenance_point_views, maintenance_views, mch_views, member_views, model_views, operator_views, |
|
8 |
- refresh_views, sr_views, staff_views, tenancy_admin_views, tenancy_views, tencentcloud_views, wx_views, |
|
9 |
- wxa_views, consumer_admin_view, salesman_mp_views, lensman_mp_views, lensman_admin_views) |
|
6 |
+from api import (admin_views, clerk_views, complement_views, consumer_admin_view, distributor_views, encrypt_views, |
|
7 |
+ express_views, lensman_admin_views, lensman_mp_views, log_views, maintenance_point_views, |
|
8 |
+ maintenance_views, mch_views, member_views, model_views, operator_views, refresh_views, |
|
9 |
+ salesman_mp_views, sr_views, staff_views, tenancy_admin_views, tenancy_views, tencentcloud_views, |
|
10 |
+ wx_views, wxa_views) |
|
10 | 11 |
from miniapp import qy_views |
11 | 12 |
from miniapp import views as mini_views |
12 | 13 |
from page import oauth_views, sale_views, screen_views |
@@ -277,7 +278,7 @@ urlpatterns += [ |
||
277 | 278 |
url(r'^admin/complement/code/contacted$', admin_views.complement_code_contacted, name='complement_code_contacted'), |
278 | 279 |
] |
279 | 280 |
|
280 |
-#销售员 |
|
281 |
+# 销售员 |
|
281 | 282 |
urlpatterns += [ |
282 | 283 |
url(r'^mp/distributor/list$', salesman_mp_views.distributor_list, name='mp_distributor_list'), |
283 | 284 |
url(r'^mp/salesman/register$', salesman_mp_views.salesman_register, name='mp_salesman_register'), |
@@ -371,14 +372,14 @@ urlpatterns += [ |
||
371 | 372 |
url(r'', include(('member.urls', 'member'), namespace='member')), |
372 | 373 |
] |
373 | 374 |
|
374 |
-#摄影师模块 |
|
375 |
+# 摄影师模块 |
|
375 | 376 |
urlpatterns += [ |
376 |
- #小程序 |
|
377 |
+ # 小程序 |
|
377 | 378 |
url(r'^mp/lensman/detail$', lensman_mp_views.lensman_detail, name='mp_lensman_detail'), |
378 | 379 |
url(r'^mp/lensman/register$', lensman_mp_views.lensman_register, name='mp_lensman_register'), |
379 | 380 |
url(r'^mp/lensman/integral/list$', lensman_mp_views.lensman_integral_list, name='mp_lensman_integral_list'), |
380 | 381 |
|
381 |
- #管理后台 |
|
382 |
+ # 管理后台 |
|
382 | 383 |
url(r'^admin/lensman/list$', lensman_admin_views.lensman_list, name='admin_lensman_list'), |
383 | 384 |
url(r'^admin/lensman/audit$', lensman_admin_views.lensman_audit, name='admin_lensman_audit'), |
384 | 385 |
url(r'^admin/lensman/update$', lensman_admin_views.lensman_update, name='admin_lensman_update'), |
@@ -387,4 +388,3 @@ urlpatterns += [ |
||
387 | 388 |
|
388 | 389 |
url(r'', include(('api.lensman.lensman_urls', 'lensman'), namespace='lensman')), |
389 | 390 |
] |
390 |
- |
@@ -69,7 +69,7 @@ class LensmanContributionContractInfo(BaseModelMixin): |
||
69 | 69 |
|
70 | 70 |
@property |
71 | 71 |
def contract_status(self): |
72 |
- if(self.tencent_approve_status == 3 and self.tencent_contract_status == 4): |
|
72 |
+ if self.tencent_approve_status == 3 and self.tencent_contract_status == 4: |
|
73 | 73 |
return 1 |
74 | 74 |
else: |
75 | 75 |
return 0 |
@@ -1,3 +1,4 @@ |
||
1 | 1 |
from django.test import TestCase |
2 | 2 |
|
3 |
+ |
|
3 | 4 |
# Create your tests here. |
@@ -1,3 +1,4 @@ |
||
1 | 1 |
from django.shortcuts import render |
2 | 2 |
|
3 |
+ |
|
3 | 4 |
# Create your views here. |
@@ -1,3 +1,4 @@ |
||
1 | 1 |
from django.contrib import admin |
2 | 2 |
|
3 |
+ |
|
3 | 4 |
# Register your models here. |
@@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _ |
||
5 | 5 |
from django_models_ext import BaseModelMixin |
6 | 6 |
from TimeConvert import TimeConvert as tc |
7 | 7 |
|
8 |
+ |
|
8 | 9 |
class LensmanContributionActivityIncomeExpensesInfo(BaseModelMixin): |
9 | 10 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
10 | 11 |
lensman_id = models.CharField(_(u'lensman_id'), max_length=32, blank=True, null=True, help_text=u'摄影师唯一标识', db_index=True) |
@@ -20,7 +21,7 @@ class LensmanContributionActivityIncomeExpensesInfo(BaseModelMixin): |
||
20 | 21 |
|
21 | 22 |
def __unicode__(self): |
22 | 23 |
return '%d' % self.pk |
23 |
- |
|
24 |
+ |
|
24 | 25 |
@property |
25 | 26 |
def data(self): |
26 | 27 |
return { |
@@ -31,7 +32,7 @@ class LensmanContributionActivityIncomeExpensesInfo(BaseModelMixin): |
||
31 | 32 |
'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'), |
32 | 33 |
'updated_at': tc.local_string(utc_dt=self.updated_at, format='%Y-%m-%d %H:%M:%S') |
33 | 34 |
} |
34 |
- |
|
35 |
+ |
|
35 | 36 |
@property |
36 | 37 |
def admindata(self): |
37 |
- return self.data |
|
38 |
+ return self.data |
@@ -1,3 +1,4 @@ |
||
1 | 1 |
from django.test import TestCase |
2 | 2 |
|
3 |
+ |
|
3 | 4 |
# Create your tests here. |
@@ -1,3 +1,4 @@ |
||
1 | 1 |
from django.shortcuts import render |
2 | 2 |
|
3 |
+ |
|
3 | 4 |
# Create your views here. |
@@ -10,8 +10,8 @@ from pysnippets.strsnippets import strip |
||
10 | 10 |
|
11 | 11 |
from integral.models import SaleclerkSubmitLogInfo |
12 | 12 |
from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, CameraModelInfo, ConsumeInfoSubmitLogInfo, |
13 |
- DistributorInfo, LatestAppInfo, LatestAppScreenInfo, MaintenancemanInfo, ModelCameraBodyInfo, |
|
14 |
- ModelInfo, OperatorInfo, SaleclerkInfo, ConsumeShotUnbindingInfo) |
|
13 |
+ ConsumeShotUnbindingInfo, DistributorInfo, LatestAppInfo, LatestAppScreenInfo, |
|
14 |
+ MaintenancemanInfo, ModelCameraBodyInfo, ModelInfo, OperatorInfo, SaleclerkInfo) |
|
15 | 15 |
from utils.redis.rshot import update_member_shot_data |
16 | 16 |
|
17 | 17 |
|
@@ -9,8 +9,8 @@ from jsonfield import JSONField |
||
9 | 9 |
from shortuuidfield import ShortUUIDField |
10 | 10 |
from TimeConvert import TimeConvert as tc |
11 | 11 |
|
12 |
-from kodo.basemodels import BrandInfoMixin |
|
13 | 12 |
from coupon.models import CouponInfo |
13 |
+from kodo.basemodels import BrandInfoMixin |
|
14 | 14 |
|
15 | 15 |
|
16 | 16 |
class AdministratorInfo(BaseModelMixin): |
@@ -9,8 +9,8 @@ from django_response import response |
||
9 | 9 |
from paginator import pagination |
10 | 10 |
from TimeConvert import TimeConvert as tc |
11 | 11 |
|
12 |
-from member.models import MemberActivityInfo, MemberActivitySignupInfo, MemberActivityContributionInfo |
|
13 | 12 |
from kodo.decorators import check_admin |
13 |
+from member.models import MemberActivityContributionInfo, MemberActivityInfo, MemberActivitySignupInfo |
|
14 | 14 |
from utils.error.errno_utils import MemberActivityStatusCode |
15 | 15 |
|
16 | 16 |
|
@@ -255,11 +255,10 @@ def activity_signup_list(request, administrator): |
||
255 | 255 |
|
256 | 256 |
if is_signin: |
257 | 257 |
logs = logs.filter(is_signin=is_signin) |
258 |
- |
|
258 |
+ |
|
259 | 259 |
if audit_status: |
260 | 260 |
logs = logs.filter(audit_status=audit_status) |
261 | 261 |
|
262 |
- |
|
263 | 262 |
count = logs.count() |
264 | 263 |
logs, left = pagination(logs, page, num) |
265 | 264 |
logs = [log.admindata for log in logs] |
@@ -7,8 +7,9 @@ from django_query import get_query_value |
||
7 | 7 |
from django_response import response |
8 | 8 |
from paginator import pagination |
9 | 9 |
|
10 |
-from account.models import UserInfo, LensmanInfo |
|
11 |
-from member.models import MemberActivityContributionInfo, MemberActivityInfo, MemberActivitySignupInfo, MemberActivityDataInfo |
|
10 |
+from account.models import LensmanInfo, UserInfo |
|
11 |
+from member.models import (MemberActivityContributionInfo, MemberActivityDataInfo, MemberActivityInfo, |
|
12 |
+ MemberActivitySignupInfo) |
|
12 | 13 |
from utils.error.errno_utils import MemberActivityContributionStatusCode, MemberActivityStatusCode, UserStatusCode |
13 | 14 |
|
14 | 15 |
|
@@ -38,6 +39,7 @@ def activity_list(request): |
||
38 | 39 |
'activitys': activitys, |
39 | 40 |
}) |
40 | 41 |
|
42 |
+ |
|
41 | 43 |
@logit |
42 | 44 |
def activity_list_v2(request): |
43 | 45 |
brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID |
@@ -51,6 +53,7 @@ def activity_list_v2(request): |
||
51 | 53 |
'activitys': activitys, |
52 | 54 |
}) |
53 | 55 |
|
56 |
+ |
|
54 | 57 |
@logit |
55 | 58 |
def activity_series_list(request): |
56 | 59 |
brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID |
@@ -95,7 +98,7 @@ def activity_signup(request): |
||
95 | 98 |
act = MemberActivityInfo.objects.get(activity_id=activity_id, status=True) |
96 | 99 |
except MemberActivityInfo.DoesNotExist: |
97 | 100 |
return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND) |
98 |
- |
|
101 |
+ |
|
99 | 102 |
MemberActivitySignupInfo.objects.update_or_create(user_id=user_id, activity_id=activity_id, defaults={ |
100 | 103 |
'title': act.title, |
101 | 104 |
'lensman_id': lensman_id, |
@@ -7,8 +7,8 @@ from django_admin import DeleteModelAdmin |
||
7 | 7 |
from account.models import UserInfo |
8 | 8 |
from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityContributionInfo, |
9 | 9 |
MemberActivityContributionWelfareInfo, MemberActivityContributionWelfareUnlockingInfo, |
10 |
- MemberActivityGroupShareInfo, MemberActivityInfo, MemberActivitySigninInfo, |
|
11 |
- MemberActivitySignupInfo, RightInfo, ShotTypeInfo, MemberActivityDataInfo) |
|
10 |
+ MemberActivityDataInfo, MemberActivityGroupShareInfo, MemberActivityInfo, |
|
11 |
+ MemberActivitySigninInfo, MemberActivitySignupInfo, RightInfo, ShotTypeInfo) |
|
12 | 12 |
from pre.custom_message import sendwxasubscribemessage |
13 | 13 |
from utils.redis.rshot import update_member_shot_data |
14 | 14 |
|
@@ -89,6 +89,7 @@ class MemberActivitySignupInfoAdmin(admin.ModelAdmin): |
||
89 | 89 |
class MemberActivitySignupInfoAdmin(admin.ModelAdmin): |
90 | 90 |
list_display = ('signup_id', 'user_id', 'activity_id', 'title', 'name', 'phone', 'status', 'created_at', 'updated_at') |
91 | 91 |
|
92 |
+ |
|
92 | 93 |
class MemberActivityDataInfoAdmin(admin.ModelAdmin): |
93 | 94 |
list_display = ('data_id', 'user_id', 'activity_id', 'title', 'lensman_id', 'status', 'created_at', 'updated_at') |
94 | 95 |
|
@@ -4,6 +4,7 @@ from django.conf.urls import url |
||
4 | 4 |
|
5 | 5 |
from member import activity_admin_views, lensman_activity_admin_views |
6 | 6 |
|
7 |
+ |
|
7 | 8 |
# activity |
8 | 9 |
urlpatterns = [ |
9 | 10 |
url(r'^member/activity/list$', activity_admin_views.activity_list, name='admin_member_activity_list'), # 获取会员活动列表 |
@@ -18,7 +19,7 @@ urlpatterns += [ |
||
18 | 19 |
url(r'^member/activity/signup/audit$', lensman_activity_admin_views.activity_signup_audit, name='admin_member_activity_signup_audit'), |
19 | 20 |
] |
20 | 21 |
|
21 |
-#activity data |
|
22 |
+# activity data |
|
22 | 23 |
urlpatterns += [ |
23 | 24 |
url(r'^member/activity/data/list$', lensman_activity_admin_views.activity_data_list, name='admin_member_activity_data_list'), |
24 | 25 |
url(r'^member/activity/integral/add$', lensman_activity_admin_views.activity_integral_add, name='admin_member_activity_integral_add'), |
@@ -6,9 +6,9 @@ from django_logit import logit |
||
6 | 6 |
from django_response import response |
7 | 7 |
from paginator import pagination |
8 | 8 |
|
9 |
-from account.models import LensmanIntegralIncomeExpensesInfo, UserInfo, LensmanInfo |
|
10 |
-from member.models import MemberActivitySignupInfo, MemberActivityDataInfo |
|
9 |
+from account.models import LensmanInfo, LensmanIntegralIncomeExpensesInfo, UserInfo |
|
11 | 10 |
from kodo.decorators import check_admin |
11 |
+from member.models import MemberActivityDataInfo, MemberActivitySignupInfo |
|
12 | 12 |
from utils.error.errno_utils import UserStatusCode |
13 | 13 |
|
14 | 14 |
|
@@ -37,13 +37,14 @@ def activity_data_list(request, administrator): |
||
37 | 37 |
count = logs.count() |
38 | 38 |
logs, left = pagination(logs, page, num) |
39 | 39 |
logs = [log.admindata for log in logs] |
40 |
- |
|
40 |
+ |
|
41 | 41 |
return response(200, 'Get Member Activity Data List Success', u'获取会员活动数据列表成功', data={ |
42 | 42 |
'logs': logs, |
43 | 43 |
'count': count, |
44 | 44 |
'left': left, |
45 | 45 |
}) |
46 | 46 |
|
47 |
+ |
|
47 | 48 |
@check_admin |
48 | 49 |
def activity_integral_add(request, administrator): |
49 | 50 |
activity_id = request.POST.get('activity_id', '') |
@@ -1,14 +1,16 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 | 3 |
from django.conf import settings |
4 |
-from django_logit import logit |
|
5 | 4 |
from django.db.models import Q |
5 |
+from django_logit import logit |
|
6 | 6 |
from django_response import response |
7 | 7 |
|
8 | 8 |
from account.models import LensmanInfo |
9 |
-from member.models import MemberActivityInfo, MemberActivityDataInfo, MemberActivitySignupInfo, MemberActivityContributionInfo |
|
9 |
+from member.models import (MemberActivityContributionInfo, MemberActivityDataInfo, MemberActivityInfo, |
|
10 |
+ MemberActivitySignupInfo) |
|
10 | 11 |
from utils.error.errno_utils import MemberActivityStatusCode |
11 | 12 |
|
13 |
+ |
|
12 | 14 |
@logit |
13 | 15 |
def activity_data_submit(request): |
14 | 16 |
user_id = request.POST.get('user_id', '') |
@@ -20,7 +22,7 @@ def activity_data_submit(request): |
||
20 | 22 |
act = MemberActivityInfo.objects.get(activity_id=activity_id, status=True) |
21 | 23 |
except MemberActivityInfo.DoesNotExist: |
22 | 24 |
return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND) |
23 |
- |
|
25 |
+ |
|
24 | 26 |
try: |
25 | 27 |
lensman = LensmanInfo.objects.get(lensman_id=lensman_id, status=True) |
26 | 28 |
except LensmanInfo.DoesNotExist: |
@@ -82,10 +84,8 @@ def activity_message_read(request): |
||
82 | 84 |
|
83 | 85 |
if signup_id: |
84 | 86 |
MemberActivitySignupInfo.objects.filter(user_id=user_id, signup_id=signup_id).update(is_read=True) |
85 |
- |
|
87 |
+ |
|
86 | 88 |
if contribution_id: |
87 | 89 |
MemberActivityContributionInfo.objects.filter(user_id=user_id, contribution_id=contribution_id).update(is_read=True) |
88 | 90 |
|
89 | 91 |
return response(200, 'Activity Message Has Read Success', '活动消息已读') |
90 |
- |
|
91 |
- |
@@ -507,7 +507,7 @@ class MemberActivityInfo(BaseModelMixin, BrandInfoMixin): |
||
507 | 507 |
def is_contributed(self, user_id): |
508 | 508 |
# 是否投稿 |
509 | 509 |
return MemberActivityContributionInfo.objects.filter(user_id=user_id, activity_id=self.activity_id, status=True).exists() |
510 |
- |
|
510 |
+ |
|
511 | 511 |
def is_signup_passed(self, user_id): |
512 | 512 |
return MemberActivitySignupInfo.objects.filter(user_id=user_id, activity_id=self.activity_id, audit_status=MemberActivitySignupInfo.PASSED, status=True).exists() |
513 | 513 |
|
@@ -780,7 +780,6 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin): |
||
780 | 780 |
@property |
781 | 781 |
def final_avatar(self): |
782 | 782 |
return self.avatar and self.avatar.replace(settings.QINIU_FILE_URL_BEFORE, settings.QINIU_FILE_URL_AFTER).replace(settings.QINIU_FILE_URL_BEFORE2, settings.QINIU_FILE_URL_AFTER) |
783 |
- |
|
784 | 783 |
|
785 | 784 |
@property |
786 | 785 |
def data(self): |
@@ -810,7 +809,8 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin): |
||
810 | 809 |
'is_signin': self.is_signin, |
811 | 810 |
'audit_status': self.audit_status, |
812 | 811 |
} |
813 |
- |
|
812 |
+ |
|
813 |
+ |
|
814 | 814 |
class MemberActivityDataInfo(BaseModelMixin, BrandInfoMixin): |
815 | 815 |
data_id = ShortUUIDField(_(u'data_id'), max_length=32, blank=True, null=True, help_text=u'活动数据唯一标识', db_index=True, unique=True) |
816 | 816 |
|
@@ -953,7 +953,6 @@ class MemberActivityContributionInfo(BaseModelMixin, BrandInfoMixin): |
||
953 | 953 |
|
954 | 954 |
is_read = models.BooleanField(_(u'is_read'), default=False, help_text=u'审核消息是否已读') |
955 | 955 |
|
956 |
- |
|
957 | 956 |
class Meta: |
958 | 957 |
verbose_name = _(u'会员活动投稿信息') |
959 | 958 |
verbose_name_plural = _(u'会员活动投稿信息') |
@@ -1101,7 +1100,6 @@ class MemberActivityContributionWelfareUnlockingInfo(BaseModelMixin, BrandInfoMi |
||
1101 | 1100 |
|
1102 | 1101 |
send_template_message_res = JSONField(_(u'send_template_message_res'), blank=True, null=True, help_text=u'send_template_message_res') |
1103 | 1102 |
|
1104 |
- |
|
1105 | 1103 |
class Meta: |
1106 | 1104 |
verbose_name = _(u'会员活动投稿福利解锁信息') |
1107 | 1105 |
verbose_name_plural = _(u'会员活动投稿福利解锁信息') |
@@ -4,6 +4,7 @@ from django.conf.urls import url |
||
4 | 4 |
|
5 | 5 |
from member import activity_mp_views, lensman_activity_mp_views |
6 | 6 |
|
7 |
+ |
|
7 | 8 |
# activity |
8 | 9 |
urlpatterns = [ |
9 | 10 |
url(r'^member/activity/home$', activity_mp_views.activity_home, name='mp_member_activity_home'), # 获取会员活动首页 |
@@ -37,8 +38,8 @@ urlpatterns += [ |
||
37 | 38 |
url(r'^member/activity/contribute/detail/lastest$', activity_mp_views.activity_contribute_detail_lastest, name='member_activity_contribute_detail_lastest'), |
38 | 39 |
] |
39 | 40 |
|
40 |
-#activity message |
|
41 |
+# activity message |
|
41 | 42 |
urlpatterns += [ |
42 | 43 |
url(r'^member/activity/message$', lensman_activity_mp_views.activity_message, name='mp_member_activity_message'), |
43 | 44 |
url(r'^member/activity/message/read$', lensman_activity_mp_views.activity_message_read, name='mp_member_activity_message_read'), |
44 |
-] |
|
45 |
+] |
@@ -5,5 +5,6 @@ |
||
5 | 5 |
# Ignoring error codes |
6 | 6 |
# -- E128 continuation line under-indented for visual indent |
7 | 7 |
# -- E501 line too long |
8 |
+# -- E731 do not assign a lambda expression, use a def |
|
8 | 9 |
|
9 |
-pycodestyle --exclude=migrations --ignore=E128,E501 . |
|
10 |
+pycodestyle --exclude=migrations --ignore=E128,E501,E731 . |