@@ -3,11 +3,13 @@ |
||
3 | 3 |
from __future__ import division |
4 | 4 |
|
5 | 5 |
import monetary |
6 |
+from django.conf import settings |
|
7 |
+from django.db.models import Q |
|
6 | 8 |
from django_logit import logit |
7 | 9 |
from django_response import response |
8 | 10 |
from paginator import pagination |
9 | 11 |
|
10 |
-from mch.models import AdministratorInfo, ModelInfo |
|
12 |
+from mch.models import AdministratorInfo, ModelInfo, ModelCameraBodyInfo |
|
11 | 13 |
from utils.error.errno_utils import AdministratorStatusCode, ProductModelStatusCode |
12 | 14 |
|
13 | 15 |
|
@@ -155,3 +157,25 @@ def model_list(request): |
||
155 | 157 |
'count': count, |
156 | 158 |
'left': left, |
157 | 159 |
}) |
160 |
+ |
|
161 |
+ |
|
162 |
+@logit |
|
163 |
+def model_cameras(request): |
|
164 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
165 |
+ |
|
166 |
+ kw = request.POST.get('kw', '') |
|
167 |
+ page = request.POST.get('page', 1) |
|
168 |
+ num = request.POST.get('num', 20) |
|
169 |
+ |
|
170 |
+ cameras = ModelCameraBodyInfo.objects.filter(brand_id=brand_id, status=True) |
|
171 |
+ if kw: |
|
172 |
+ cameras = cameras.filter(Q(model_name__contains=kw) | Q(model_full_name__contains=kw) | Q(camera_name__contains=kw)) |
|
173 |
+ count = cameras.count() |
|
174 |
+ cameras, left = pagination(cameras, page, num) |
|
175 |
+ cameras = [camera.data for camera in cameras] |
|
176 |
+ |
|
177 |
+ return response(200, 'Get Model Adaptive Camera List Success', u'获取型号适配机身列表成功', { |
|
178 |
+ 'cameras': cameras, |
|
179 |
+ 'count': count, |
|
180 |
+ 'left': left, |
|
181 |
+ }) |
@@ -259,6 +259,7 @@ urlpatterns += [ |
||
259 | 259 |
url(r'^model/delete$', model_views.model_delete, name='model_delete'), |
260 | 260 |
url(r'^model/update$', model_views.model_update, name='model_update'), |
261 | 261 |
url(r'^model/list$', model_views.model_list, name='model_list'), |
262 |
+ url(r'^model/cameras$', model_views.model_cameras, name='model_cameras'), |
|
262 | 263 |
] |
263 | 264 |
|
264 | 265 |
urlpatterns += [ |
@@ -9,7 +9,7 @@ from django_models_ext import ProvinceShortModelMixin |
||
9 | 9 |
from pysnippets.strsnippets import strip |
10 | 10 |
|
11 | 11 |
from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, |
12 |
- LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo, SaleclerkInfo) |
|
12 |
+ LatestAppInfo, LatestAppScreenInfo, ModelInfo, ModelCameraBodyInfo, OperatorInfo, SaleclerkInfo) |
|
13 | 13 |
from utils.redis.rshot import update_member_shot_data |
14 | 14 |
|
15 | 15 |
|
@@ -88,6 +88,10 @@ class ModelInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
||
88 | 88 |
update_member_shot_data() |
89 | 89 |
|
90 | 90 |
|
91 |
+class ModelCameraBodyInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
|
92 |
+ list_display = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'camera_name', 'status', 'created_at', 'updated_at') |
|
93 |
+ |
|
94 |
+ |
|
91 | 95 |
class ModelImageInfoAdmin(admin.ModelAdmin): |
92 | 96 |
list_display = ('model_id', 'model_name', 'image', 'url', 'position', 'status', 'created_at', 'updated_at') |
93 | 97 |
list_filter = ('model_name', 'status') |
@@ -201,6 +205,7 @@ admin.site.register(AdministratorInfo, AdministratorInfoAdmin) |
||
201 | 205 |
admin.site.register(OperatorInfo, OperatorInfoAdmin) |
202 | 206 |
admin.site.register(BrandInfo, BrandInfoAdmin) |
203 | 207 |
admin.site.register(ModelInfo, ModelInfoAdmin) |
208 |
+admin.site.register(ModelCameraBodyInfo, ModelCameraBodyInfoAdmin) |
|
204 | 209 |
# admin.site.register(ModelImageInfo, ModelImageInfoAdmin) |
205 | 210 |
admin.site.register(DistributorInfo, DistributorInfoAdmin) |
206 | 211 |
admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin) |
@@ -0,0 +1,33 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.27 on 2020-02-22 07:25 |
|
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', '0042_auto_20200113_1832'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.CreateModel( |
|
16 |
+ name='ModelCameraBodyInfo', |
|
17 |
+ fields=[ |
|
18 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
19 |
+ ('status', models.BooleanField(db_index=True, default=True, help_text='Status', verbose_name='status')), |
|
20 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
21 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
22 |
+ ('brand_id', models.CharField(blank=True, db_index=True, help_text='\u54c1\u724c\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='brand_id')), |
|
23 |
+ ('brand_name', models.CharField(blank=True, help_text='\u54c1\u724c\u540d\u79f0', max_length=255, null=True, verbose_name='brand_name')), |
|
24 |
+ ('model_name', models.CharField(blank=True, help_text='\u578b\u53f7\u540d\u79f0', max_length=32, null=True, verbose_name='model_name')), |
|
25 |
+ ('model_full_name', models.CharField(blank=True, help_text='\u578b\u53f7\u5168\u540d\u79f0', max_length=255, null=True, verbose_name='model_full_name')), |
|
26 |
+ ('camera_name', models.CharField(blank=True, help_text='\u673a\u8eab\u540d\u79f0', max_length=255, null=True, verbose_name='camera_name')), |
|
27 |
+ ], |
|
28 |
+ options={ |
|
29 |
+ 'verbose_name': '\u578b\u53f7\u673a\u8eab\u9002\u914d\u4fe1\u606f', |
|
30 |
+ 'verbose_name_plural': '\u578b\u53f7\u673a\u8eab\u9002\u914d\u4fe1\u606f', |
|
31 |
+ }, |
|
32 |
+ ), |
|
33 |
+ ] |
@@ -283,6 +283,31 @@ class ModelImageInfo(BaseModelMixin): |
||
283 | 283 |
} |
284 | 284 |
|
285 | 285 |
|
286 |
+class ModelCameraBodyInfo(BaseModelMixin): |
|
287 |
+ brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
288 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
289 |
+ |
|
290 |
+ model_name = models.CharField(_(u'model_name'), max_length=32, blank=True, null=True, help_text=u'型号名称') |
|
291 |
+ model_full_name = models.CharField(_(u'model_full_name'), max_length=255, blank=True, null=True, help_text=u'型号全名称') |
|
292 |
+ |
|
293 |
+ camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称') |
|
294 |
+ |
|
295 |
+ class Meta: |
|
296 |
+ verbose_name = _(u'型号机身适配信息') |
|
297 |
+ verbose_name_plural = _(u'型号机身适配信息') |
|
298 |
+ |
|
299 |
+ def __unicode__(self): |
|
300 |
+ return unicode(self.pk) |
|
301 |
+ |
|
302 |
+ @property |
|
303 |
+ def data(self): |
|
304 |
+ return { |
|
305 |
+ 'model_name': self.model_name, |
|
306 |
+ 'model_full_name': self.model_full_name, |
|
307 |
+ 'camera_name': self.camera_name, |
|
308 |
+ } |
|
309 |
+ |
|
310 |
+ |
|
286 | 311 |
class DistributorInfo(BaseModelMixin): |
287 | 312 |
brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
288 | 313 |
brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |