Add api api/upgrade

Brightcells 7 years ago
parent
commit
917f2df489
7 changed files with 144 additions and 4 deletions
  1. 22 1
      api/mch_views.py
  2. 4 0
      api/urls.py
  3. 14 1
      mch/admin.py
  4. 36 0
      mch/migrations/0004_latestappinfo.py
  5. 41 0
      mch/models.py
  6. 25 0
      operation/migrations/0018_auto_20180114_2314.py
  7. 2 2
      operation/models.py

+ 22 - 1
api/mch_views.py

@@ -3,10 +3,12 @@
3 3
 from __future__ import division
4 4
 
5 5
 from django_response import response
6
+from logit import logit
6 7
 
7
-from mch.models import BrandInfo, DistributorInfo, ModelInfo
8
+from mch.models import BrandInfo, DistributorInfo, LatestAppInfo, ModelInfo
8 9
 
9 10
 
11
+@logit
10 12
 def brands_list(request):
11 13
     brands = BrandInfo.objects.filter(status=True).order_by('position')
12 14
     brands = [brand.data for brand in brands]
@@ -16,6 +18,7 @@ def brands_list(request):
16 18
     })
17 19
 
18 20
 
21
+@logit
19 22
 def models_list(request):
20 23
     models = ModelInfo.objects.filter(status=True).order_by('position')
21 24
     models = [model.data for model in models]
@@ -25,6 +28,7 @@ def models_list(request):
25 28
     })
26 29
 
27 30
 
31
+@logit
28 32
 def distributors_list(request):
29 33
     distributors = DistributorInfo.objects.filter(status=True).order_by('position')
30 34
     distributors = [distributor.data for distributor in distributors]
@@ -32,3 +36,20 @@ def distributors_list(request):
32 36
     return response(200, data={
33 37
         'distributors': distributors,
34 38
     })
39
+
40
+
41
+@logit
42
+def upgrade_api(request):
43
+    """ APP 升级 """
44
+    try:
45
+        appinfo = LatestAppInfo.objects.filter(status=True)[0].adr
46
+    except IndexError:
47
+        appinfo = {
48
+            'latest_version_code': '',
49
+            'latest_version_name': '',
50
+            'latest_url': '',
51
+        }
52
+
53
+    return response(200, 'Get Latest App Success', u'获取最新版信息成功', {
54
+        'appinfo': appinfo,
55
+    })

+ 4 - 0
api/urls.py

@@ -194,3 +194,7 @@ urlpatterns += [
194 194
     url(r'^api/encrypt$', encrypt_views.encrypt, name='encrypt'),
195 195
     url(r'^api/decrypt$', encrypt_views.decrypt, name='decrypt'),
196 196
 ]
197
+
198
+urlpatterns += [
199
+    url(r'^api/upgrade$', mch_views.upgrade_api, name='upgrade_api2'),  # APP 升级
200
+]

+ 14 - 1
mch/admin.py

@@ -1,8 +1,9 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3 3
 from django.contrib import admin
4
+from pysnippets.strsnippets import strip
4 5
 
5
-from mch.models import BrandInfo, DistributorInfo, ModelImageInfo, ModelInfo
6
+from mch.models import BrandInfo, DistributorInfo, LatestAppInfo, ModelImageInfo, ModelInfo
6 7
 
7 8
 
8 9
 class BrandInfoAdmin(admin.ModelAdmin):
@@ -24,7 +25,19 @@ class DistributorInfoAdmin(admin.ModelAdmin):
24 25
     list_filter = ('brand_id', 'status')
25 26
 
26 27
 
28
+class LatestAppInfoAdmin(admin.ModelAdmin):
29
+    list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'status', 'created_at', 'updated_at')
30
+    list_filter = ('status', )
31
+
32
+    def save_model(self, request, obj, form, change):
33
+        obj.latest_adr_version_name = strip(obj.latest_adr_version_name)
34
+        obj.latest_adr_app = strip(obj.latest_adr_app)
35
+        obj.latest_adr_url = strip(obj.latest_adr_url)
36
+        obj.save()
37
+
38
+
27 39
 admin.site.register(BrandInfo, BrandInfoAdmin)
28 40
 admin.site.register(ModelInfo, ModelInfoAdmin)
29 41
 admin.site.register(ModelImageInfo, ModelImageInfoAdmin)
30 42
 admin.site.register(DistributorInfo, DistributorInfoAdmin)
43
+admin.site.register(LatestAppInfo, LatestAppInfoAdmin)

+ 36 - 0
mch/migrations/0004_latestappinfo.py

@@ -0,0 +1,36 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.9 on 2018-01-14 15:14
3
+from __future__ import unicode_literals
4
+
5
+from django.db import migrations, models
6
+import models_ext.fileext
7
+
8
+
9
+class Migration(migrations.Migration):
10
+
11
+    dependencies = [
12
+        ('mch', '0003_auto_20180104_0428'),
13
+    ]
14
+
15
+    operations = [
16
+        migrations.CreateModel(
17
+            name='LatestAppInfo',
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
+                ('latest_adr_version_code', models.IntegerField(default=0, help_text='\u6700\u65b0\u5b89\u5353\u7248\u672c\u53f7', verbose_name='latest_adr_version_code')),
24
+                ('latest_adr_version_name', models.CharField(blank=True, help_text='\u6700\u65b0\u5b89\u5353\u7248\u672c\u540d', max_length=16, null=True, verbose_name='latest_adr_version_name')),
25
+                ('latest_adr_app', models.FileField(blank=True, help_text='\u6700\u65b0\u7248\u5b89\u5353 APP', null=True, upload_to=models_ext.fileext.upload_path, verbose_name='latest_adr_app')),
26
+                ('latest_adr_url', models.URLField(blank=True, help_text='\u6700\u65b0\u7248 APP \u94fe\u63a5', max_length=255, null=True, verbose_name='latest_adr_url')),
27
+                ('latest_ios_version_code', models.IntegerField(default=0, help_text='\u6700\u65b0 iOS \u7248\u672c\u53f7', verbose_name='latest_ios_version_code')),
28
+                ('latest_ios_version_name', models.CharField(blank=True, help_text='\u6700\u65b0 iOS \u7248\u672c\u540d', max_length=16, null=True, verbose_name='latest_ios_version_name')),
29
+                ('latest_ios_url', models.URLField(blank=True, help_text='\u6700\u65b0\u7248 iOS \u94fe\u63a5', max_length=255, null=True, verbose_name='latest_ios_url')),
30
+            ],
31
+            options={
32
+                'verbose_name': '\u5347\u7ea7\u914d\u7f6e\u4fe1\u606f',
33
+                'verbose_name_plural': '\u5347\u7ea7\u914d\u7f6e\u4fe1\u606f',
34
+            },
35
+        ),
36
+    ]

+ 41 - 0
mch/models.py

@@ -115,3 +115,44 @@ class DistributorInfo(BaseModelMixin):
115 115
             'distributor_name': self.distributor_name,
116 116
             'distributor_descr': self.distributor_descr,
117 117
         }
118
+
119
+
120
+class LatestAppInfo(BaseModelMixin):
121
+    latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')
122
+    latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=16, blank=True, null=True, help_text=u'最新安卓版本名')
123
+    latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')
124
+    latest_adr_url = models.URLField(_(u'latest_adr_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')
125
+
126
+    latest_ios_version_code = models.IntegerField(_(u'latest_ios_version_code'), default=0, help_text=u'最新 iOS 版本号')
127
+    latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=16, blank=True, null=True, help_text=u'最新 iOS 版本名')
128
+    latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')
129
+
130
+    class Meta:
131
+        verbose_name = _(u'升级配置信息')
132
+        verbose_name_plural = _(u'升级配置信息')
133
+
134
+    def __unicode__(self):
135
+        return u'{0.pk}'.format(self)
136
+
137
+    @property
138
+    def final_latest_adr_url(self):
139
+        return self.latest_adr_url or upload_file_url(self.latest_adr_app)
140
+
141
+    @property
142
+    def data(self):
143
+        return {
144
+            'latest_adr_version_code': self.latest_adr_version_code,
145
+            'latest_adr_version_name': self.latest_adr_version_name,
146
+            'latest_adr_url': self.final_latest_adr_url,
147
+            'latest_ios_version_code': self.latest_ios_version_code,
148
+            'latest_ios_version_name': self.latest_ios_version_name,
149
+            'latest_ios_url': self.latest_ios_url,
150
+        }
151
+
152
+    @property
153
+    def adr(self):
154
+        return {
155
+            'latest_adr_version_code': self.latest_adr_version_code,
156
+            'latest_adr_version_name': self.latest_adr_version_name,
157
+            'latest_adr_url': self.final_latest_adr_url,
158
+        }

+ 25 - 0
operation/migrations/0018_auto_20180114_2314.py

@@ -0,0 +1,25 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.9 on 2018-01-14 15:14
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
+        ('operation', '0017_auto_20180103_0446'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.AlterField(
16
+            model_name='latestappinfo',
17
+            name='latest_adr_version_name',
18
+            field=models.CharField(blank=True, help_text='\u6700\u65b0\u5b89\u5353\u7248\u672c\u540d', max_length=16, null=True, verbose_name='latest_adr_version_name'),
19
+        ),
20
+        migrations.AlterField(
21
+            model_name='latestappinfo',
22
+            name='latest_ios_version_name',
23
+            field=models.CharField(blank=True, help_text='\u6700\u65b0 iOS \u7248\u672c\u540d', max_length=16, null=True, verbose_name='latest_ios_version_name'),
24
+        ),
25
+    ]

+ 2 - 2
operation/models.py

@@ -9,12 +9,12 @@ from pai2.basemodels import PaiaiSrcMixin, PlatformMixin, VersionMixin
9 9
 
10 10
 class LatestAppInfo(BaseModelMixin, PaiaiSrcMixin):
11 11
     latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')
12
-    latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=255, blank=True, null=True, help_text=u'最新安卓版本名')
12
+    latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=16, blank=True, null=True, help_text=u'最新安卓版本名')
13 13
     latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')
14 14
     latest_adr_url = models.URLField(_(u'latest_adr_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')
15 15
 
16 16
     latest_ios_version_code = models.IntegerField(_(u'latest_ios_version_code'), default=0, help_text=u'最新 iOS 版本号')
17
-    latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=255, blank=True, null=True, help_text=u'最新 iOS 版本名')
17
+    latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=16, blank=True, null=True, help_text=u'最新 iOS 版本名')
18 18
     latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')
19 19
 
20 20
     class Meta: