Add api box_program_version_api

Brightcells 8 years ago
parent
commit
afd07e5389

+ 1 - 0
api/urls.py

@@ -145,6 +145,7 @@ urlpatterns += [
145 145
     url(r'^op/splash$', op_views.splash_api, name='splash_api'),  # 启动页面
146 146
     url(r'^op/feedback$', op_views.feedback_api, name='feedback_api'),  # 用户反馈
147 147
     url(r'^op/download$', op_views.download_api, name='download_api'),  # 下载接口
148
+    url(r'^op/bpversion$', op_views.box_program_version_api, name='box_program_version_api'),  # BOX 程序版本信息
148 149
 ]
149 150
 
150 151
 # 地理位置相关

+ 32 - 4
operation/admin.py

@@ -5,11 +5,12 @@ from django.contrib import admin
5 5
 from django.template.loader import render_to_string
6 6
 from pysnippets.strsnippets import strip
7 7
 
8
-from operation.models import (APPSettingsInfo, FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, PatchInfo,
9
-                              SplashInfo)
8
+from operation.models import (APPSettingsInfo, BoxProgramVersionInfo, FeedbackInfo, GuestEntranceControlInfo,
9
+                              LatestAppInfo, PatchInfo, SplashInfo)
10 10
 from utils.disk_utils import write_to_disk
11 11
 from utils.redis.rapp import set_latest_app
12 12
 from utils.redis.rguest import delete_guest_entrance_control, set_guest_entrance_control
13
+from utils.redis.roperation.rbox_program_version import set_box_program_version
13 14
 from utils.redis.rpatch import del_app_patch_info, set_app_patch_info
14 15
 from utils.redis.rsettings import del_app_settings_info, set_app_settings_info
15 16
 
@@ -17,12 +18,12 @@ from utils.redis.rsettings import del_app_settings_info, set_app_settings_info
17 18
 class LatestAppInfoAdmin(admin.ModelAdmin):
18 19
     list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'latest_ios_version_code', 'latest_ios_version_name', 'latest_ios_url', 'src', 'status', 'created_at', 'updated_at')
19 20
     list_filter = ('src', 'status')
21
+    actions = None
20 22
 
21 23
     def save_model(self, request, obj, form, change):
22
-        obj.latest_adr_version_code = strip(obj.latest_adr_version_code)
23 24
         obj.latest_adr_version_name = strip(obj.latest_adr_version_name)
24 25
         obj.latest_adr_app = strip(obj.latest_adr_app)
25
-        obj.latest_ios_version_code = strip(obj.latest_ios_version_code)
26
+        obj.latest_adr_url = strip(obj.latest_adr_url)
26 27
         obj.latest_ios_version_name = strip(obj.latest_ios_version_name)
27 28
         obj.latest_ios_url = strip(obj.latest_ios_url)
28 29
         obj.save()
@@ -69,6 +70,12 @@ class LatestAppInfoAdmin(admin.ModelAdmin):
69 70
         # 设置最新 APP 信息
70 71
         set_latest_app(obj.src)
71 72
 
73
+    def delete_model(self, request, obj):
74
+        obj.delete()
75
+
76
+        # 设置最新 APP 信息
77
+        set_latest_app(obj.src)
78
+
72 79
 
73 80
 class PatchInfoAdmin(admin.ModelAdmin):
74 81
     list_display = ('platform', 'version', 'patch', 'src', 'status', 'created_at', 'updated_at')
@@ -141,9 +148,30 @@ class GuestEntranceControlInfoAdmin(admin.ModelAdmin):
141 148
         delete_guest_entrance_control()
142 149
 
143 150
 
151
+class BoxProgramVersionInfoAdmin(admin.ModelAdmin):
152
+    list_display = ('srv_version_code', 'srv_version_name', 'proc_version_code', 'proc_version_name', 'status', 'created_at', 'updated_at')
153
+    list_filter = ('status', )
154
+    actions = None
155
+
156
+    def save_model(self, request, obj, form, change):
157
+        obj.srv_version_name = strip(obj.srv_version_name)
158
+        obj.proc_version_name = strip(obj.proc_version_name)
159
+        obj.save()
160
+
161
+        # 设置 BOX 程序版本信息
162
+        set_box_program_version()
163
+
164
+    def delete_model(self, request, obj):
165
+        obj.delete()
166
+
167
+        # 设置 BOX 程序版本信息
168
+        set_box_program_version()
169
+
170
+
144 171
 admin.site.register(LatestAppInfo, LatestAppInfoAdmin)
145 172
 admin.site.register(PatchInfo, PatchInfoAdmin)
146 173
 admin.site.register(APPSettingsInfo, APPSettingsInfoAdmin)
147 174
 admin.site.register(SplashInfo, SplashInfoAdmin)
148 175
 admin.site.register(FeedbackInfo, FeedbackInfoAdmin)
149 176
 admin.site.register(GuestEntranceControlInfo, GuestEntranceControlInfoAdmin)
177
+admin.site.register(BoxProgramVersionInfo, BoxProgramVersionInfoAdmin)

+ 31 - 0
operation/migrations/0012_boxprogramversioninfo.py

@@ -0,0 +1,31 @@
1
+# -*- coding: utf-8 -*-
2
+from __future__ import unicode_literals
3
+
4
+from django.db import models, migrations
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('operation', '0011_auto_20170315_2243'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='BoxProgramVersionInfo',
16
+            fields=[
17
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
18
+                ('status', models.BooleanField(default=True, help_text='\u72b6\u6001', db_index=True, verbose_name='status')),
19
+                ('created_at', models.DateTimeField(help_text='\u521b\u5efa\u65f6\u95f4', verbose_name='created_at', auto_now_add=True)),
20
+                ('updated_at', models.DateTimeField(help_text='\u66f4\u65b0\u65f6\u95f4', verbose_name='updated_at', auto_now=True)),
21
+                ('srv_version_code', models.IntegerField(default=0, help_text='Box Server \u7248\u672c\u53f7', verbose_name='srv_version_code')),
22
+                ('srv_version_name', models.CharField(help_text='Box Server \u7248\u672c\u540d', max_length=255, null=True, verbose_name='srv_version_name', blank=True)),
23
+                ('proc_version_code', models.IntegerField(default=0, help_text='Box Proc \u7248\u672c\u53f7', verbose_name='proc_version_code')),
24
+                ('proc_version_name', models.CharField(help_text='Box Proc \u7248\u672c\u540d', max_length=255, null=True, verbose_name='proc_version_name', blank=True)),
25
+            ],
26
+            options={
27
+                'verbose_name': 'boxprogramversioninfo',
28
+                'verbose_name_plural': 'boxprogramversioninfo',
29
+            },
30
+        ),
31
+    ]

+ 24 - 0
operation/models.py

@@ -148,3 +148,27 @@ class GuestEntranceControlInfo(CreateUpdateMixin, PlatformMixin, VersionMixin, P
148 148
             'max_adr': self.max_adr,
149 149
             'max_ios': self.max_ios,
150 150
         }
151
+
152
+
153
+class BoxProgramVersionInfo(CreateUpdateMixin):
154
+    srv_version_code = models.IntegerField(_(u'srv_version_code'), default=0, help_text=u'Box Server 版本号')
155
+    srv_version_name = models.CharField(_(u'srv_version_name'), max_length=255, blank=True, null=True, help_text=u'Box Server 版本名')
156
+
157
+    proc_version_code = models.IntegerField(_(u'proc_version_code'), default=0, help_text=u'Box Proc 版本号')
158
+    proc_version_name = models.CharField(_(u'proc_version_name'), max_length=255, blank=True, null=True, help_text=u'Box Proc 版本名')
159
+
160
+    class Meta:
161
+        verbose_name = _('boxprogramversioninfo')
162
+        verbose_name_plural = _('boxprogramversioninfo')
163
+
164
+    def __unicode__(self):
165
+        return u'{0.pk}'.format(self)
166
+
167
+    @property
168
+    def data(self):
169
+        return {
170
+            'srv_version_code': self.srv_version_code,
171
+            'srv_version_name': self.srv_version_name,
172
+            'proc_version_code': self.proc_version_code,
173
+            'proc_version_name': self.proc_version_name,
174
+        }

+ 13 - 0
operation/views.py

@@ -1,5 +1,7 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3
+import json
4
+
3 5
 from django.conf import settings
4 6
 from django.shortcuts import redirect
5 7
 from logit import logit
@@ -10,6 +12,7 @@ from utils.error.errno_utils import UserStatusCode
10 12
 from utils.error.response_utils import response
11 13
 from utils.redis.rapp import get_latest_app
12 14
 from utils.redis.rguest import get_guest_entrance_control
15
+from utils.redis.roperation.rbox_program_version import get_box_program_version
13 16
 from utils.redis.rpatch import get_app_patch_info
14 17
 from utils.redis.rsettings import get_app_settings_info
15 18
 from utils.version_utils import is_version_match
@@ -150,3 +153,13 @@ def download_api(request):
150 153
         return redirect(ios_url)
151 154
 
152 155
     return redirect(get_latest_app(src).get('latest_adr_url', ''))
156
+
157
+
158
+def box_program_version_api(request):
159
+    """ BOX 程序版本信息 """
160
+    bpversion = get_box_program_version()
161
+
162
+    return response(200, 'Get Box Program Version Success', u'获取盒子程序版本成功', {
163
+        'bpversion': bpversion,
164
+        'bpversion_str': json.dumps(bpversion),
165
+    })

+ 3 - 0
utils/redis/rkeys.py

@@ -63,3 +63,6 @@ GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info:%s'  # STRING,游
63 63
 LATEST_APP_INFO = 'latest:app:info:%s'  # STRING,最新 APP 信息,src
64 64
 APP_SETTINGS_INFO = 'app:settings:info:%s:%s:%s'  # STRING,APP 设置信息,platform、channel、version
65 65
 APP_PATCH_INFO = 'app:patch:info:%s:%s:%s'  # STRING,APP 补丁信息,platform、version、src
66
+
67
+# BOX 相关
68
+BOX_PROGRAM_VERSION_INFO = 'box:program:version:info'  # STRING,BOX 程序版本信息

+ 0 - 0
utils/redis/roperation/__init__.py


+ 20 - 0
utils/redis/roperation/rbox_program_version.py

@@ -0,0 +1,20 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from utils.redis.connect import r
4
+from utils.redis.rkeys import BOX_PROGRAM_VERSION_INFO
5
+
6
+
7
+def set_box_program_version():
8
+    """ 设置 BOX 程序版本信息 """
9
+    from operation.models import BoxProgramVersionInfo
10
+    try:
11
+        bpverion = BoxProgramVersionInfo.objects.filter(status=True)[0].data
12
+    except IndexError:
13
+        bpverion = {}
14
+    r.setjson(BOX_PROGRAM_VERSION_INFO, bpverion)
15
+    return bpverion
16
+
17
+
18
+def get_box_program_version():
19
+    """ 获取 BOX 程序版本信息 """
20
+    return r.getjson(BOX_PROGRAM_VERSION_INFO) or set_box_program_version()