LatestAppScreenInfo

Brightcells 6 年 前
コミット
0783db1a97
共有4 個のファイルを変更した67 個の追加4 個の削除を含む
  1. 9 2
      api/mch_views.py
  2. 16 1
      mch/admin.py
  3. 41 0
      mch/models.py
  4. 1 1
      miniapp/views.py

+ 9 - 2
api/mch_views.py

@@ -12,7 +12,7 @@ from TimeConvert import TimeConvert as tc
12 12
 
13 13
 from account.models import UserInfo
14 14
 from mch.models import (AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo,
15
-                        ModelInfo, OperatorInfo)
15
+                        LatestAppScreenInfo, ModelInfo, OperatorInfo)
16 16
 from statistic.models import (ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo,
17 17
                               ConsumeProvinceSaleStatisticInfo, ConsumeSaleStatisticInfo)
18 18
 from utils.error.errno_utils import (AdministratorStatusCode, OperatorStatusCode, ProductBrandStatusCode,
@@ -144,8 +144,15 @@ def distributors_list(request):
144 144
 @logit
145 145
 def upgrade_api(request):
146 146
     """ APP 升级 """
147
+    src = request.POST.get('scr', '')
148
+
149
+    if src == 'datascreen':
150
+        latestappmodel = LatestAppScreenInfo
151
+    else:
152
+        latestappmodel = LatestAppInfo
153
+
147 154
     try:
148
-        appinfo = LatestAppInfo.objects.filter(status=True)[0].adr
155
+        appinfo = latestappmodel.objects.filter(status=True)[0].adr
149 156
     except IndexError:
150 157
         appinfo = {
151 158
             'latest_version_code': '',

+ 16 - 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 (AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo,
12
-                        ModelInfo, OperatorInfo, SaleclerkInfo)
12
+                        LatestAppScreenInfo, ModelInfo, OperatorInfo, SaleclerkInfo)
13 13
 
14 14
 
15 15
 class AdministratorInfoAdmin(DeleteModelAdmin, admin.ModelAdmin):
@@ -171,6 +171,20 @@ class LatestAppInfoAdmin(admin.ModelAdmin):
171 171
         obj.save()
172 172
 
173 173
 
174
+class LatestAppScreenInfoAdmin(admin.ModelAdmin):
175
+    list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'status', 'created_at', 'updated_at')
176
+    list_filter = ('status', )
177
+    readonly_fields = ('status', )
178
+
179
+    def save_model(self, request, obj, form, change):
180
+        if not obj.pk and LatestAppInfo.objects.filter(status=True).exists():
181
+            return
182
+        obj.latest_adr_version_name = strip(obj.latest_adr_version_name)
183
+        obj.latest_adr_app = strip(obj.latest_adr_app)
184
+        obj.latest_adr_url = strip(obj.latest_adr_url)
185
+        obj.save()
186
+
187
+
174 188
 class ConsumeInfoSubmitLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
175 189
     list_display = ('user_id', 'phone', 'lat', 'lon', 'serialNo', 'verifyResult', 'test_user', 'status', 'created_at', 'updated_at')
176 190
     list_filter = ('test_user', 'verifyResult', 'status')
@@ -185,4 +199,5 @@ admin.site.register(DistributorInfo, DistributorInfoAdmin)
185 199
 admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin)
186 200
 # admin.site.register(BrandModelDistributorPriceInfo, BrandModelDistributorPriceInfoAdmin)
187 201
 admin.site.register(LatestAppInfo, LatestAppInfoAdmin)
202
+admin.site.register(LatestAppScreenInfo, LatestAppScreenInfoAdmin)
188 203
 admin.site.register(ConsumeInfoSubmitLogInfo, ConsumeInfoSubmitLogInfoAdmin)

+ 41 - 0
mch/models.py

@@ -402,6 +402,47 @@ class LatestAppInfo(BaseModelMixin):
402 402
         }
403 403
 
404 404
 
405
+class LatestAppScreenInfo(BaseModelMixin):
406
+    latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')
407
+    latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=16, blank=True, null=True, help_text=u'最新安卓版本名')
408
+    latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')
409
+    latest_adr_url = models.URLField(_(u'latest_adr_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')
410
+
411
+    latest_ios_version_code = models.IntegerField(_(u'latest_ios_version_code'), default=0, help_text=u'最新 iOS 版本号')
412
+    latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=16, blank=True, null=True, help_text=u'最新 iOS 版本名')
413
+    latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')
414
+
415
+    class Meta:
416
+        verbose_name = _(u'升级配置信息(数据大屏)')
417
+        verbose_name_plural = _(u'升级配置信息(数据大屏)')
418
+
419
+    def __unicode__(self):
420
+        return u'{0.pk}'.format(self)
421
+
422
+    @property
423
+    def final_latest_adr_url(self):
424
+        return self.latest_adr_url or upload_file_url(self.latest_adr_app)
425
+
426
+    @property
427
+    def data(self):
428
+        return {
429
+            'latest_adr_version_code': self.latest_adr_version_code,
430
+            'latest_adr_version_name': self.latest_adr_version_name,
431
+            'latest_adr_url': self.final_latest_adr_url,
432
+            'latest_ios_version_code': self.latest_ios_version_code,
433
+            'latest_ios_version_name': self.latest_ios_version_name,
434
+            'latest_ios_url': self.latest_ios_url,
435
+        }
436
+
437
+    @property
438
+    def adr(self):
439
+        return {
440
+            'latest_adr_version_code': self.latest_adr_version_code,
441
+            'latest_adr_version_name': self.latest_adr_version_name,
442
+            'latest_adr_url': self.final_latest_adr_url,
443
+        }
444
+
445
+
405 446
 class ConsumeInfoSubmitLogInfo(BaseModelMixin):
406 447
     user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
407 448
 

+ 1 - 1
miniapp/views.py

@@ -7,7 +7,7 @@ from django_logit import logit
7 7
 from django_response import response
8 8
 from ipaddr import client_ip
9 9
 from pywe_membercard import get_miniapp_extraData
10
-from pywe_miniapp import get_userinfo, store_session_key, get_session_key
10
+from pywe_miniapp import get_session_key, get_userinfo, store_session_key
11 11
 from pywe_storage import RedisStorage
12 12
 from TimeConvert import TimeConvert as tc
13 13