@@ -25,7 +25,7 @@ WECHAT = settings.WECHAT |
||
25 | 25 |
|
26 | 26 |
|
27 | 27 |
@logit |
28 |
-def login_api(request): |
|
28 |
+def optor_login_api(request): |
|
29 | 29 |
phone = request.POST.get('phone', '') |
30 | 30 |
password = request.POST.get('password', '') |
31 | 31 |
|
@@ -40,9 +40,7 @@ def login_api(request): |
||
40 | 40 |
if not check_password(password, operator.encryption): |
41 | 41 |
return response(OperatorStatusCode.OPERATOR_PASSWORD_ERROR) |
42 | 42 |
|
43 |
- return response(200, data={ |
|
44 |
- 'optor_id': operator.operator_id, |
|
45 |
- }) |
|
43 |
+ return response(200, 'Optor Login Success', u'操作员登录成功', data=operator.kododata) |
|
46 | 44 |
|
47 | 45 |
|
48 | 46 |
@logit |
@@ -188,7 +188,8 @@ urlpatterns += [ |
||
188 | 188 |
|
189 | 189 |
# Kodo |
190 | 190 |
urlpatterns += [ |
191 |
- url(r'^login$', mch_views.login_api, name='login_api'), |
|
191 |
+ url(r'^login$', mch_views.optor_login_api, name='login_api'), |
|
192 |
+ url(r'^optor/login$', mch_views.optor_login_api, name='optor_login_api'), |
|
192 | 193 |
url(r'^admin/login$', mch_views.admin_login_api, name='admin_login_api'), |
193 | 194 |
] |
194 | 195 |
|
@@ -378,8 +378,8 @@ DJANGO_LOGIT_ENABLED = True |
||
378 | 378 |
# Test Settings |
379 | 379 |
DEBUG_STATISTIC_DATA_FLAG = False |
380 | 380 |
|
381 |
-KODO_DEFAULT_BRAND = '' |
|
382 |
- |
|
381 |
+KODO_DEFAULT_BRAND_ID = '' |
|
382 |
+KODO_DEFAULT_BRAND_DOMAIN = '' |
|
383 | 383 |
|
384 | 384 |
KODO_CLERK_AUTH_URL = 'http://pai.ai/w/o?r=http%3A%2F%2Fkodo.xfoto.com.cn%2Fp%2Fclerk%3Fbrand_id%3D{0}' |
385 | 385 |
|
@@ -8,9 +8,8 @@ from django_admin import DeleteModelAdmin, ReadOnlyModelAdmin |
||
8 | 8 |
from django_models_ext import ProvinceShortModelMixin |
9 | 9 |
from pysnippets.strsnippets import strip |
10 | 10 |
|
11 |
-from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo |
|
12 |
-from mch.models import (AdministratorInfo, BrandInfo, BrandModelDistributorPriceInfo, ConsumeInfoSubmitLogInfo, |
|
13 |
- DistributorInfo, LatestAppInfo, ModelImageInfo, ModelInfo, OperatorInfo, SaleclerkInfo) |
|
11 |
+from mch.models import (AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo, |
|
12 |
+ ModelInfo, OperatorInfo, SaleclerkInfo) |
|
14 | 13 |
|
15 | 14 |
|
16 | 15 |
class AdministratorInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
@@ -35,9 +34,9 @@ class AdministratorInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
||
35 | 34 |
|
36 | 35 |
|
37 | 36 |
class OperatorInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
38 |
- list_display = ('operator_id', 'phone', 'password', 'encryption', 'name', 'brand_id', 'brand_name', 'user_status', 'status', 'created_at', 'updated_at') |
|
37 |
+ list_display = ('operator_id', 'phone', 'password', 'encryption', 'name', 'brand_id', 'brand_name', 'brand_domain', 'user_status', 'status', 'created_at', 'updated_at') |
|
39 | 38 |
list_filter = ('user_status', 'status', 'brand_name') |
40 |
- readonly_fields = ('encryption', 'brand_name') |
|
39 |
+ readonly_fields = ('brand_domain', 'encryption', 'brand_name') |
|
41 | 40 |
|
42 | 41 |
def save_model(self, request, obj, form, change): |
43 | 42 |
obj.phone = strip(obj.phone) |
@@ -56,7 +55,11 @@ class OperatorInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
||
56 | 55 |
|
57 | 56 |
|
58 | 57 |
class BrandInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
59 |
- list_display = ('brand_id', 'brand_name', 'brand_descr', 'brand_logo', 'position', 'status', 'created_at', 'updated_at') |
|
58 |
+ list_display = ('brand_id', 'brand_name', 'brand_descr', 'brand_logo', 'brand_domain', 'position', 'status', 'created_at', 'updated_at') |
|
59 |
+ |
|
60 |
+ def save_model(self, request, obj, form, change): |
|
61 |
+ obj.save() |
|
62 |
+ OperatorInfo.objects.filter(brand_id=obj.brand_id).update(brand_domain=obj.brand_domain) |
|
60 | 63 |
|
61 | 64 |
|
62 | 65 |
class ModelInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
@@ -0,0 +1,25 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.11 on 2018-05-22 05:55 |
|
3 |
+from __future__ import unicode_literals |
|
4 |
+ |
|
5 |
+from django.db import migrations, models |
|
6 |
+ |
|
7 |
+ |
|
8 |
+class Migration(migrations.Migration): |
|
9 |
+ |
|
10 |
+ dependencies = [ |
|
11 |
+ ('mch', '0021_auto_20180522_1100'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.AddField( |
|
16 |
+ model_name='brandinfo', |
|
17 |
+ name='brand_domain', |
|
18 |
+ field=models.CharField(blank=True, help_text='\u54c1\u724c\u57df\u540d', max_length=255, null=True, verbose_name='brand_domain'), |
|
19 |
+ ), |
|
20 |
+ migrations.AddField( |
|
21 |
+ model_name='operatorinfo', |
|
22 |
+ name='brand_domain', |
|
23 |
+ field=models.CharField(blank=True, help_text='\u54c1\u724c\u57df\u540d', max_length=255, null=True, verbose_name='brand_domain'), |
|
24 |
+ ), |
|
25 |
+ ] |
@@ -1,5 +1,6 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
+from django.conf import settings |
|
3 | 4 |
from django.db import models |
4 | 5 |
from django.utils.translation import ugettext_lazy as _ |
5 | 6 |
from django_models_ext import (BaseModelMixin, ProvinceShortModelMixin, SexModelMixin, upload_file_path, |
@@ -60,6 +61,7 @@ class OperatorInfo(BaseModelMixin): |
||
60 | 61 |
|
61 | 62 |
brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
62 | 63 |
brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
64 |
+ brand_domain = models.CharField(_(u'brand_domain'), max_length=255, blank=True, null=True, help_text=u'品牌域名') |
|
63 | 65 |
|
64 | 66 |
user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS_TUPLE, default=ACTIVATED, help_text=u'操作员状态', db_index=True) |
65 | 67 |
|
@@ -78,6 +80,13 @@ class OperatorInfo(BaseModelMixin): |
||
78 | 80 |
'name': self.name, |
79 | 81 |
} |
80 | 82 |
|
83 |
+ @property |
|
84 |
+ def kododata(self): |
|
85 |
+ return { |
|
86 |
+ 'optor_id': self.operator_id, |
|
87 |
+ 'brand_domain': self.brand_domain or settings.KODO_DEFAULT_BRAND_DOMAIN, |
|
88 |
+ } |
|
89 |
+ |
|
81 | 90 |
|
82 | 91 |
class BrandInfo(BaseModelMixin): |
83 | 92 |
brand_id = ShortUUIDField(_(u'brand_id'), max_length=32, help_text=u'品牌唯一标识', db_index=True, unique=True) |
@@ -85,6 +94,7 @@ class BrandInfo(BaseModelMixin): |
||
85 | 94 |
brand_descr = models.TextField(_(u'brand_descr'), max_length=255, blank=True, null=True, help_text=u'品牌描述') |
86 | 95 |
|
87 | 96 |
brand_logo = models.ImageField(_(u'brand_logo'), upload_to=upload_path, blank=True, null=True, help_text=u'品牌商标') |
97 |
+ brand_domain = models.CharField(_(u'brand_domain'), max_length=255, blank=True, null=True, help_text=u'品牌域名') |
|
88 | 98 |
|
89 | 99 |
position = models.IntegerField(_(u'position'), default=1, help_text=u'排序') |
90 | 100 |
|
@@ -9,7 +9,7 @@ from mch.models import SaleclerkInfo |
||
9 | 9 |
|
10 | 10 |
|
11 | 11 |
def clerk_info_oauth(request): |
12 |
- brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND) |
|
12 |
+ brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
13 | 13 |
unionid = request.GET.get('unionid', '') |
14 | 14 |
|
15 | 15 |
try: |
@@ -57,7 +57,7 @@ def login_qrcode(request): |
||
57 | 57 |
|
58 | 58 |
|
59 | 59 |
def clerk_oauth(request): |
60 |
- brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND) |
|
60 |
+ brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
61 | 61 |
unionid = request.GET.get('unionid', '') |
62 | 62 |
|
63 | 63 |
try: |
@@ -85,7 +85,7 @@ def clerk_oauth(request): |
||
85 | 85 |
@transaction.atomic |
86 | 86 |
def clerk_submit_api(request): |
87 | 87 |
""" 店员授权信息提交 """ |
88 |
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND) |
|
88 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
89 | 89 |
unionid = request.POST.get('unionid', '') |
90 | 90 |
openid = request.POST.get('openid', '') |
91 | 91 |
phone = request.POST.get('phone', '') |
@@ -16,7 +16,7 @@ from utils.rdm_utils import randnum |
||
16 | 16 |
|
17 | 17 |
@logit |
18 | 18 |
def tj_distributor(request): |
19 |
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND) |
|
19 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
20 | 20 |
|
21 | 21 |
ymd = int(tc.local_string(format='%Y%m%d')) |
22 | 22 |
|
@@ -70,7 +70,7 @@ def tj_distributor(request): |
||
70 | 70 |
|
71 | 71 |
@logit |
72 | 72 |
def tj_consumer(request): |
73 |
- brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND) |
|
73 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
74 | 74 |
|
75 | 75 |
ymd = int(tc.local_string(format='%Y%m%d')) |
76 | 76 |
|