@@ -0,0 +1,19 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.28 on 2020-03-04 10:26 |
|
3 |
+from __future__ import unicode_literals |
|
4 |
+ |
|
5 |
+from django.db import migrations |
|
6 |
+ |
|
7 |
+ |
|
8 |
+class Migration(migrations.Migration): |
|
9 |
+ |
|
10 |
+ dependencies = [ |
|
11 |
+ ('integral', '0013_saleclerksubmitloginfo_is_staff_delete'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.AlterModelOptions( |
|
16 |
+ name='saleclerksubmitloginfo', |
|
17 |
+ options={'verbose_name': '\u9500\u552e\u5458\u626b\u7801\u51fa\u5e93\u8bb0\u5f55', 'verbose_name_plural': '\u9500\u552e\u5458\u626b\u7801\u51fa\u5e93\u8bb0\u5f55'}, |
|
18 |
+ ), |
|
19 |
+ ] |
@@ -8,7 +8,7 @@ from django_admin import AdvancedActionsModelAdmin, AdvancedExportExcelModelAdmi |
||
8 | 8 |
from django_models_ext import ProvinceShortModelMixin |
9 | 9 |
from pysnippets.strsnippets import strip |
10 | 10 |
|
11 |
-from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, |
|
11 |
+from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, CameraModelInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, |
|
12 | 12 |
LatestAppInfo, LatestAppScreenInfo, ModelInfo, ModelCameraBodyInfo, OperatorInfo, SaleclerkInfo) |
13 | 13 |
from utils.redis.rshot import update_member_shot_data |
14 | 14 |
|
@@ -83,14 +83,60 @@ class ModelInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
||
83 | 83 |
|
84 | 84 |
update_member_shot_data() |
85 | 85 |
|
86 |
+ # 更新"型号机身适配"型号图片 |
|
87 |
+ ModelCameraBodyInfo.objects.filter( |
|
88 |
+ brand_id=obj.brand_id, |
|
89 |
+ model_name=obj.model_name, |
|
90 |
+ ).update( |
|
91 |
+ model_image=obj.model_image, |
|
92 |
+ ) |
|
93 |
+ |
|
86 | 94 |
def delete_model(self, request, obj): |
87 | 95 |
obj.delete() |
88 | 96 |
update_member_shot_data() |
89 | 97 |
|
98 |
+ # 更新"型号机身适配"型号图片 |
|
99 |
+ ModelCameraBodyInfo.objects.filter( |
|
100 |
+ brand_id=obj.brand_id, |
|
101 |
+ model_name=obj.model_name, |
|
102 |
+ ).update( |
|
103 |
+ model_image=None, |
|
104 |
+ ) |
|
105 |
+ |
|
106 |
+ |
|
107 |
+class CameraModelInfoAdmin(admin.ModelAdmin): |
|
108 |
+ list_display = ('brand_id', 'brand_name', 'camera_brand_name', 'camera_name', 'camera_image', 'status', 'created_at', 'updated_at') |
|
109 |
+ list_filter = ('brand_name', 'camera_brand_name', 'status') |
|
110 |
+ |
|
111 |
+ def save_model(self, request, obj, form, change): |
|
112 |
+ obj.save() |
|
113 |
+ |
|
114 |
+ # 更新"型号机身适配"机身图片 |
|
115 |
+ ModelCameraBodyInfo.objects.filter( |
|
116 |
+ brand_id=obj.brand_id, |
|
117 |
+ camera_brand_name=obj.camera_brand_name, |
|
118 |
+ camera_name=obj.camera_name, |
|
119 |
+ ).update( |
|
120 |
+ camera_image=obj.camera_image, |
|
121 |
+ ) |
|
122 |
+ |
|
123 |
+ def delete_model(self, request, obj): |
|
124 |
+ obj.delete() |
|
125 |
+ |
|
126 |
+ # 更新"型号机身适配"机身图片 |
|
127 |
+ ModelCameraBodyInfo.objects.filter( |
|
128 |
+ brand_id=obj.brand_id, |
|
129 |
+ camera_brand_name=obj.camera_brand_name, |
|
130 |
+ camera_name=obj.camera_name, |
|
131 |
+ ).update( |
|
132 |
+ camera_image=None, |
|
133 |
+ ) |
|
134 |
+ |
|
90 | 135 |
|
91 | 136 |
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 |
- list_filter = ('brand_name', 'model_name', 'status') |
|
137 |
+ list_display = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'model_image', 'camera_brand_name', 'camera_name', 'camera_image', 'status', 'created_at', 'updated_at') |
|
138 |
+ list_filter = ('brand_name', 'model_name', 'camera_brand_name', 'status') |
|
139 |
+ readonly_fields = ('model_image', 'camera_image') |
|
94 | 140 |
search_fields = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'camera_name') |
95 | 141 |
|
96 | 142 |
|
@@ -207,6 +253,7 @@ admin.site.register(AdministratorInfo, AdministratorInfoAdmin) |
||
207 | 253 |
admin.site.register(OperatorInfo, OperatorInfoAdmin) |
208 | 254 |
admin.site.register(BrandInfo, BrandInfoAdmin) |
209 | 255 |
admin.site.register(ModelInfo, ModelInfoAdmin) |
256 |
+admin.site.register(CameraModelInfo, CameraModelInfoAdmin) |
|
210 | 257 |
admin.site.register(ModelCameraBodyInfo, ModelCameraBodyInfoAdmin) |
211 | 258 |
# admin.site.register(ModelImageInfo, ModelImageInfoAdmin) |
212 | 259 |
admin.site.register(DistributorInfo, DistributorInfoAdmin) |
@@ -0,0 +1,26 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.28 on 2020-03-04 10:26 |
|
3 |
+from __future__ import unicode_literals |
|
4 |
+ |
|
5 |
+from django.db import migrations, models |
|
6 |
+import django_models_ext.fileext |
|
7 |
+ |
|
8 |
+ |
|
9 |
+class Migration(migrations.Migration): |
|
10 |
+ |
|
11 |
+ dependencies = [ |
|
12 |
+ ('mch', '0044_modelcamerabodyinfo_camera_brand_name'), |
|
13 |
+ ] |
|
14 |
+ |
|
15 |
+ operations = [ |
|
16 |
+ migrations.AddField( |
|
17 |
+ model_name='modelcamerabodyinfo', |
|
18 |
+ name='camera_image', |
|
19 |
+ field=models.ImageField(blank=True, help_text='\u673a\u8eab\u56fe\u7247', null=True, upload_to=django_models_ext.fileext.upload_path, verbose_name='camera_image'), |
|
20 |
+ ), |
|
21 |
+ migrations.AddField( |
|
22 |
+ model_name='modelcamerabodyinfo', |
|
23 |
+ name='model_image', |
|
24 |
+ field=models.ImageField(blank=True, help_text='\u955c\u5934\u56fe\u7247', null=True, upload_to=django_models_ext.fileext.upload_path, verbose_name='model_image'), |
|
25 |
+ ), |
|
26 |
+ ] |
@@ -0,0 +1,32 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.28 on 2020-03-04 10:35 |
|
3 |
+from __future__ import unicode_literals |
|
4 |
+ |
|
5 |
+from django.db import migrations, models |
|
6 |
+import django_models_ext.fileext |
|
7 |
+ |
|
8 |
+ |
|
9 |
+class Migration(migrations.Migration): |
|
10 |
+ |
|
11 |
+ dependencies = [ |
|
12 |
+ ('mch', '0045_auto_20200304_1826'), |
|
13 |
+ ] |
|
14 |
+ |
|
15 |
+ operations = [ |
|
16 |
+ migrations.CreateModel( |
|
17 |
+ name='CameraModelInfo', |
|
18 |
+ fields=[ |
|
19 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
20 |
+ ('status', models.BooleanField(db_index=True, default=True, help_text='Status', verbose_name='status')), |
|
21 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
22 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
23 |
+ ('camera_brand_name', models.CharField(blank=True, help_text='\u673a\u8eab\u54c1\u724c', max_length=255, null=True, verbose_name='camera_brand_name')), |
|
24 |
+ ('camera_name', models.CharField(blank=True, help_text='\u673a\u8eab\u540d\u79f0', max_length=255, null=True, verbose_name='camera_name')), |
|
25 |
+ ('camera_image', models.ImageField(blank=True, help_text='\u673a\u8eab\u56fe\u7247', null=True, upload_to=django_models_ext.fileext.upload_path, verbose_name='camera_image')), |
|
26 |
+ ], |
|
27 |
+ options={ |
|
28 |
+ 'verbose_name': '\u673a\u8eab\u4fe1\u606f', |
|
29 |
+ 'verbose_name_plural': '\u673a\u8eab\u4fe1\u606f', |
|
30 |
+ }, |
|
31 |
+ ), |
|
32 |
+ ] |
@@ -0,0 +1,25 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.28 on 2020-03-04 10:48 |
|
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', '0046_cameramodelinfo'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.AddField( |
|
16 |
+ model_name='cameramodelinfo', |
|
17 |
+ name='brand_id', |
|
18 |
+ field=models.CharField(blank=True, db_index=True, help_text='\u54c1\u724c\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='brand_id'), |
|
19 |
+ ), |
|
20 |
+ migrations.AddField( |
|
21 |
+ model_name='cameramodelinfo', |
|
22 |
+ name='brand_name', |
|
23 |
+ field=models.CharField(blank=True, help_text='\u54c1\u724c\u540d\u79f0', max_length=255, null=True, verbose_name='brand_name'), |
|
24 |
+ ), |
|
25 |
+ ] |
@@ -283,15 +283,33 @@ class ModelImageInfo(BaseModelMixin): |
||
283 | 283 |
} |
284 | 284 |
|
285 | 285 |
|
286 |
+class CameraModelInfo(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 |
+ camera_brand_name = models.CharField(_(u'camera_brand_name'), max_length=255, blank=True, null=True, help_text=u'机身品牌') |
|
291 |
+ camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称') |
|
292 |
+ camera_image = models.ImageField(_(u'camera_image'), upload_to=upload_path, blank=True, null=True, help_text=u'机身图片') |
|
293 |
+ |
|
294 |
+ class Meta: |
|
295 |
+ verbose_name = _(u'机身信息') |
|
296 |
+ verbose_name_plural = _(u'机身信息') |
|
297 |
+ |
|
298 |
+ def __unicode__(self): |
|
299 |
+ return unicode(self.pk) |
|
300 |
+ |
|
301 |
+ |
|
286 | 302 |
class ModelCameraBodyInfo(BaseModelMixin): |
287 | 303 |
brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
288 | 304 |
brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
289 | 305 |
|
290 | 306 |
model_name = models.CharField(_(u'model_name'), max_length=32, blank=True, null=True, help_text=u'型号名称') |
291 | 307 |
model_full_name = models.CharField(_(u'model_full_name'), max_length=255, blank=True, null=True, help_text=u'型号全名称') |
308 |
+ model_image = models.ImageField(_(u'model_image'), upload_to=upload_path, blank=True, null=True, help_text=u'镜头图片') |
|
292 | 309 |
|
293 |
- camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称') |
|
294 | 310 |
camera_brand_name = models.CharField(_(u'camera_brand_name'), max_length=255, blank=True, null=True, help_text=u'机身品牌') |
311 |
+ camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称') |
|
312 |
+ camera_image = models.ImageField(_(u'camera_image'), upload_to=upload_path, blank=True, null=True, help_text=u'机身图片') |
|
295 | 313 |
|
296 | 314 |
class Meta: |
297 | 315 |
verbose_name = _(u'型号机身适配信息') |
@@ -301,12 +319,22 @@ class ModelCameraBodyInfo(BaseModelMixin): |
||
301 | 319 |
return unicode(self.pk) |
302 | 320 |
|
303 | 321 |
@property |
322 |
+ def model_url(self): |
|
323 |
+ return upload_file_url(self.model_image) |
|
324 |
+ |
|
325 |
+ @property |
|
326 |
+ def camera_url(self): |
|
327 |
+ return upload_file_url(self.camera_image) |
|
328 |
+ |
|
329 |
+ @property |
|
304 | 330 |
def data(self): |
305 | 331 |
return { |
306 | 332 |
'model_name': self.model_name, |
307 | 333 |
'model_full_name': self.model_full_name, |
308 |
- 'camera_name': self.camera_name, |
|
334 |
+ 'model_url': self.model_url, |
|
309 | 335 |
'camera_brand_name': self.camera_brand_name, |
336 |
+ 'camera_name': self.camera_name, |
|
337 |
+ 'camera_url': self.camera_url, |
|
310 | 338 |
} |
311 | 339 |
|
312 | 340 |
|