@@ -78,6 +78,7 @@ urlpatterns += [ |
||
| 78 | 78 |
url(r'^op/upgrade$', op_views.upgrade_api, name='upgrade_api'), # APP 升级 |
| 79 | 79 |
url(r'^op/splash$', op_views.splash_api, name='splash_api'), # 启动页面 |
| 80 | 80 |
url(r'^op/feedback$', op_views.feedback_api, name='feedback_api'), # 用户反馈 |
| 81 |
+ url(r'^op/downlaod$', op_views.download_api, name='download_api'), # 下载接口 |
|
| 81 | 82 |
] |
| 82 | 83 |
|
| 83 | 84 |
# 支付相关 |
@@ -6,6 +6,7 @@ from django.template.loader import render_to_string |
||
| 6 | 6 |
|
| 7 | 7 |
from operation.models import FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo |
| 8 | 8 |
from utils.disk_utils import write_to_disk |
| 9 |
+from utils.redis.rapp import set_latest_app |
|
| 9 | 10 |
from utils.redis.rversion import delete_guest_entrance_control, set_guest_entrance_control |
| 10 | 11 |
|
| 11 | 12 |
|
@@ -20,6 +21,9 @@ class LatestAppInfoAdmin(admin.ModelAdmin): |
||
| 20 | 21 |
'version': obj.latest_version, |
| 21 | 22 |
}), settings.DOWNLOAD_PAGE_PATH) |
| 22 | 23 |
|
| 24 |
+ # 设置最新 APP 信息 |
|
| 25 |
+ set_latest_app() |
|
| 26 |
+ |
|
| 23 | 27 |
|
| 24 | 28 |
class SplashInfoAdmin(admin.ModelAdmin): |
| 25 | 29 |
list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'status', 'created_at', 'updated_at')
|
@@ -1,11 +1,14 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 |
+from django.conf import settings |
|
| 3 | 4 |
from django.http import JsonResponse |
| 5 |
+from django.shortcuts import redirect |
|
| 4 | 6 |
|
| 5 | 7 |
from account.models import UserInfo |
| 6 | 8 |
from operation.models import FeedbackInfo, LatestAppInfo, SplashInfo |
| 7 | 9 |
from utils.error.errno_utils import UserStatusCode |
| 8 | 10 |
from utils.error.response_utils import response |
| 11 |
+from utils.redis.rapp import get_latest_app |
|
| 9 | 12 |
|
| 10 | 13 |
|
| 11 | 14 |
def upgrade_api(request): |
@@ -14,16 +17,11 @@ def upgrade_api(request): |
||
| 14 | 17 |
:param request: |
| 15 | 18 |
:return: |
| 16 | 19 |
""" |
| 17 |
- try: |
|
| 18 |
- appinfo = LatestAppInfo.objects.all()[0].data |
|
| 19 |
- except IndexError: |
|
| 20 |
- appinfo = {}
|
|
| 21 |
- |
|
| 22 | 20 |
return JsonResponse({
|
| 23 | 21 |
'status': 200, |
| 24 | 22 |
'message': u'获取最新版信息成功', |
| 25 | 23 |
'data': {
|
| 26 |
- 'appinfo': appinfo, |
|
| 24 |
+ 'appinfo': get_latest_app(), |
|
| 27 | 25 |
}, |
| 28 | 26 |
}) |
| 29 | 27 |
|
@@ -69,3 +67,16 @@ def feedback_api(request): |
||
| 69 | 67 |
'data': {
|
| 70 | 68 |
}, |
| 71 | 69 |
}) |
| 70 |
+ |
|
| 71 |
+ |
|
| 72 |
+def download_api(request): |
|
| 73 |
+ """ |
|
| 74 |
+ 下载接口 |
|
| 75 |
+ :param request: |
|
| 76 |
+ :return: |
|
| 77 |
+ """ |
|
| 78 |
+ if request.weixin: |
|
| 79 |
+ return redirect(settings.DOWNLOAD_WX_URL) |
|
| 80 |
+ if request.iOS: |
|
| 81 |
+ return redirect(settings.DOWNLOAD_IOS_URL) |
|
| 82 |
+ return redirect(get_latest_app().get('latest_url', ''))
|
@@ -271,6 +271,10 @@ PAI2_HOME_MAX_ROWS = 400 # 首页照片最大数量, PAI2_HOME_PER_PAGE * PAI2_ |
||
| 271 | 271 |
DOWNLOAD_TMPL_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.tmpl.html').replace('\\', '/')
|
| 272 | 272 |
DOWNLOAD_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.html').replace('\\', '/')
|
| 273 | 273 |
|
| 274 |
+# 下载设置 |
|
| 275 |
+DOWNLOAD_WX_URL = '' |
|
| 276 |
+DOWNLOAD_IOS_URL = '' |
|
| 277 |
+ |
|
| 274 | 278 |
# 群组设置 |
| 275 | 279 |
GROUP_PER_PAGE = 20 # 群组每页数量 |
| 276 | 280 |
|
@@ -0,0 +1,29 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+import json |
|
| 4 |
+ |
|
| 5 |
+from django.conf import settings |
|
| 6 |
+ |
|
| 7 |
+from operation.models import LatestAppInfo |
|
| 8 |
+from utils.redis.rkeys import LATEST_APP_INFO |
|
| 9 |
+ |
|
| 10 |
+ |
|
| 11 |
+r = settings.REDIS_CACHE |
|
| 12 |
+ |
|
| 13 |
+ |
|
| 14 |
+# 最新 APP 相关 |
|
| 15 |
+ |
|
| 16 |
+ |
|
| 17 |
+def set_latest_app(): |
|
| 18 |
+ """ 设置最新 APP 信息 """ |
|
| 19 |
+ try: |
|
| 20 |
+ appinfo = LatestAppInfo.objects.all()[0].data |
|
| 21 |
+ except IndexError: |
|
| 22 |
+ appinfo = {}
|
|
| 23 |
+ r.set(LATEST_APP_INFO, json.dumps(appinfo)) |
|
| 24 |
+ return appinfo |
|
| 25 |
+ |
|
| 26 |
+ |
|
| 27 |
+def get_latest_app(): |
|
| 28 |
+ """ 获取最新 APP 信息 """ |
|
| 29 |
+ return json.loads(r.get(LATEST_APP_INFO) or '{}') or set_latest_app()
|
@@ -30,3 +30,6 @@ SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s' # STRING,系 |
||
| 30 | 30 |
|
| 31 | 31 |
# 游客入口相关 |
| 32 | 32 |
GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info' # STRING,游客入口控制信息 |
| 33 |
+ |
|
| 34 |
+# APP 相关 |
|
| 35 |
+LATEST_APP_INFO = 'latest:app:info' # STRING,最新 APP 信息 |