:art: model/cameras

huangqimin преди 5 години
родител
ревизия
72656ceaff
променени са 5 файла, в които са добавени 90 реда и са изтрити 2 реда
  1. 25 1
      api/model_views.py
  2. 1 0
      api/urls.py
  3. 6 1
      mch/admin.py
  4. 33 0
      mch/migrations/0043_modelcamerabodyinfo.py
  5. 25 0
      mch/models.py

+ 25 - 1
api/model_views.py

@@ -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
+    })

+ 1 - 0
api/urls.py

@@ -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 += [

+ 6 - 1
mch/admin.py

@@ -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)

+ 33 - 0
mch/migrations/0043_modelcamerabodyinfo.py

@@ -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
+    ]

+ 25 - 0
mch/models.py

@@ -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'品牌名称')