+ migrations.AddField(
+ model_name='distributorinfo',
+ name='brand_name',
+ field=models.CharField(blank=True, help_text='\u54c1\u724c\u540d\u79f0', max_length=255, null=True, verbose_name='brand_name'),
+ ),
+ migrations.AddField(
+ model_name='modelimageinfo',
+ name='model_name',
+ field=models.CharField(blank=True, help_text='\u578b\u53f7\u540d\u79f0', max_length=255, null=True, verbose_name='model_name'),
+ ),
+ migrations.AddField(
+ model_name='modelinfo',
+ name='brand_name',
+ field=models.CharField(blank=True, help_text='\u54c1\u724c\u540d\u79f0', max_length=255, null=True, verbose_name='brand_name'),
+ ),
+ ]
@@ -0,0 +1,21 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.9 on 2018-01-14 16:47 |
|
| 3 |
+from __future__ import unicode_literals |
|
| 4 |
+ |
|
| 5 |
+from django.db import migrations |
|
| 6 |
+import shortuuidfield.fields |
|
| 7 |
+ |
|
| 8 |
+ |
|
| 9 |
+class Migration(migrations.Migration): |
|
| 10 |
+ |
|
| 11 |
+ dependencies = [ |
|
| 12 |
+ ('mch', '0005_auto_20180115_0021'),
|
|
| 13 |
+ ] |
|
| 14 |
+ |
|
| 15 |
+ operations = [ |
|
| 16 |
+ migrations.AlterField( |
|
| 17 |
+ model_name='operatorinfo', |
|
| 18 |
+ name='operator_id', |
|
| 19 |
+ field=shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='\u64cd\u4f5c\u5458\u552f\u4e00\u6807\u8bc6', max_length=22, null=True, unique=True), |
|
| 20 |
+ ), |
|
| 21 |
+ ] |
@@ -6,6 +6,36 @@ from models_ext import BaseModelMixin, upload_file_url, upload_path |
||
| 6 | 6 |
from shortuuidfield import ShortUUIDField |
| 7 | 7 |
|
| 8 | 8 |
|
| 9 |
+class OperatorInfo(BaseModelMixin): |
|
| 10 |
+ ACTIVATED = 1 |
|
| 11 |
+ DISABLED = 2 |
|
| 12 |
+ |
|
| 13 |
+ USER_STATUS_TUPLE = ( |
|
| 14 |
+ (ACTIVATED, u'已激活'), |
|
| 15 |
+ (DISABLED, u'已禁用'), |
|
| 16 |
+ ) |
|
| 17 |
+ |
|
| 18 |
+ operator_id = ShortUUIDField(_(u'operator_id'), max_length=32, blank=True, null=True, help_text=u'操作员唯一标识', db_index=True, unique=True) |
|
| 19 |
+ |
|
| 20 |
+ phone = models.CharField(_(u'phone'), max_length=16, blank=True, null=True, help_text=u'操作员电话', db_index=True) |
|
| 21 |
+ password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'操作员密码') |
|
| 22 |
+ encryption = models.CharField(_(u'encryption'), max_length=255, blank=True, null=True, help_text=u'操作员密码') |
|
| 23 |
+ |
|
| 24 |
+ name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'操作员姓名') |
|
| 25 |
+ |
|
| 26 |
+ brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
| 27 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
| 28 |
+ |
|
| 29 |
+ user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS_TUPLE, default=ACTIVATED, help_text=u'操作员状态', db_index=True) |
|
| 30 |
+ |
|
| 31 |
+ class Meta: |
|
| 32 |
+ verbose_name = _(u'操作员信息') |
|
| 33 |
+ verbose_name_plural = _(u'操作员信息') |
|
| 34 |
+ |
|
| 35 |
+ def __unicode__(self): |
|
| 36 |
+ return u'{}-{}'.format(self.name, self.phone)
|
|
| 37 |
+ |
|
| 38 |
+ |
|
| 9 | 39 |
class BrandInfo(BaseModelMixin): |
| 10 | 40 |
brand_id = ShortUUIDField(_(u'brand_id'), max_length=32, help_text=u'品牌唯一标识', db_index=True, unique=True) |
| 11 | 41 |
brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
@@ -37,6 +67,7 @@ class BrandInfo(BaseModelMixin): |
||
| 37 | 67 |
|
| 38 | 68 |
class ModelInfo(BaseModelMixin): |
| 39 | 69 |
brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
| 70 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
| 40 | 71 |
|
| 41 | 72 |
model_id = ShortUUIDField(_(u'model_id'), max_length=32, help_text=u'型号唯一标识', db_index=True, unique=True) |
| 42 | 73 |
model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称') |
@@ -67,6 +98,7 @@ class ModelInfo(BaseModelMixin): |
||
| 67 | 98 |
|
| 68 | 99 |
class ModelImageInfo(BaseModelMixin): |
| 69 | 100 |
model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True) |
| 101 |
+ model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称') |
|
| 70 | 102 |
|
| 71 | 103 |
image = models.ImageField(_(u'image'), upload_to=upload_path, blank=True, null=True, help_text=u'图片') |
| 72 | 104 |
url = models.CharField(_(u'url'), max_length=255, blank=True, null=True, help_text=u'链接') |
@@ -94,6 +126,7 @@ class ModelImageInfo(BaseModelMixin): |
||
| 94 | 126 |
|
| 95 | 127 |
class DistributorInfo(BaseModelMixin): |
| 96 | 128 |
brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
| 129 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
| 97 | 130 |
|
| 98 | 131 |
distributor_id = ShortUUIDField(_(u'distributor_id'), max_length=32, help_text=u'经销商唯一标识', db_index=True, unique=True) |
| 99 | 132 |
distributor_name = models.CharField(_(u'distributor_name'), max_length=255, blank=True, null=True, help_text=u'经销商名称') |
@@ -314,6 +314,10 @@ LOGIT_RES_FLAG = True |
||
| 314 | 314 |
# Django-Admin Settings |
| 315 | 315 |
DISABLE_ACTION = False |
| 316 | 316 |
|
| 317 |
+# KODO 设置 |
|
| 318 |
+MAKE_PASSWORD_SALT = '' |
|
| 319 |
+MAKE_PASSWORD_HASHER = '' |
|
| 320 |
+ |
|
| 317 | 321 |
# 错误信息邮件设置 |
| 318 | 322 |
# Email address that error messages come from. |
| 319 | 323 |
SERVER_EMAIL = 'kimi@pai.ai' |
@@ -29,6 +29,15 @@ class TourGuideStatusCode(BaseStatusCode): |
||
| 29 | 29 |
TOURGUIDE_NOT_ACTIVATED = StatusCodeField(400115, 'Tour Guide Not Activated', description=u'导游帐号未激活') |
| 30 | 30 |
|
| 31 | 31 |
|
| 32 |
+class OperatorStatusCode(BaseStatusCode): |
|
| 33 |
+ """ 操作员相关错误码 4002xx """ |
|
| 34 |
+ OPERATOR_NOT_FOUND = StatusCodeField(400201, 'Operator Not Found', description=u'操作员不存在') |
|
| 35 |
+ # 密码 |
|
| 36 |
+ OPERATOR_PASSWORD_ERROR = StatusCodeField(400202, 'Operator Password Error', description=u'操作员密码错误') |
|
| 37 |
+ # 状态 |
|
| 38 |
+ OPERATOR_NOT_ACTIVATED = StatusCodeField(400215, 'Operator Not Activated', description=u'操作员未激活') |
|
| 39 |
+ |
|
| 40 |
+ |
|
| 32 | 41 |
class UserStatusCode(BaseStatusCode): |
| 33 | 42 |
""" 用户相关错误码 4005xx """ |
| 34 | 43 |
USER_NOT_FOUND = StatusCodeField(400501, 'User Not Found', description=u'用户不存在') |