# -*- coding: utf-8 -*- from django.conf import settings from django.contrib import admin from django.template.loader import render_to_string from pysnippets.strsnippets import strip from operation.models import APPSettingsInfo, FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo from utils.disk_utils import write_to_disk from utils.redis.rapp import set_latest_app from utils.redis.rguest import delete_guest_entrance_control, set_guest_entrance_control from utils.redis.rsettings import del_app_settings_info, set_app_settings_info class LatestAppInfoAdmin(admin.ModelAdmin): 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') list_filter = ('src', 'status') def save_model(self, request, obj, form, change): obj.latest_adr_version_code = strip(obj.latest_adr_version_code) obj.latest_adr_version_name = strip(obj.latest_adr_version_name) obj.latest_adr_app = strip(obj.latest_adr_app) obj.latest_ios_version_code = strip(obj.latest_ios_version_code) obj.latest_ios_version_name = strip(obj.latest_ios_version_name) obj.latest_ios_url = strip(obj.latest_ios_url) obj.save() if obj.src == LatestAppInfo.PAIAI_USER: # 更新安卓下载页面 write_to_disk(render_to_string('page/download.tmpl.html', { 'src': obj.src, 'version': obj.latest_adr_version_name, }), settings.PAI2_USER_DOWNLOAD_ADR_PAGE_PATH) # 更新 iOS 下载页面 write_to_disk(render_to_string('page/download.tmpl.html', { 'src': obj.src, 'version': obj.latest_ios_version_name, }), settings.PAI2_USER_DOWNLOAD_IOS_PAGE_PATH) elif obj.src == LatestAppInfo.PAIAI_LENSMAN: # 更新安卓下载页面 write_to_disk(render_to_string('page/download.tmpl.html', { 'src': obj.src, 'version': obj.latest_adr_version_name, }), settings.PAI2_LENSMAN_DOWNLOAD_ADR_PAGE_PATH) # 更新 iOS 下载页面 write_to_disk(render_to_string('page/download.tmpl.html', { 'src': obj.src, 'version': obj.latest_ios_version_name, }), settings.PAI2_LENSMAN_DOWNLOAD_IOS_PAGE_PATH) elif obj.src == LatestAppInfo.PAIAI_TOURGUIDE: # 更新安卓下载页面 write_to_disk(render_to_string('page/download.tmpl.html', { 'src': obj.src, 'version': obj.latest_adr_version_name, }), settings.PAI2_TOURGUIDE_DOWNLOAD_ADR_PAGE_PATH) # 更新 iOS 下载页面 write_to_disk(render_to_string('page/download.tmpl.html', { 'src': obj.src, 'version': obj.latest_ios_version_name, }), settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_PAGE_PATH) # 设置最新 APP 信息 set_latest_app(obj.src) class APPSettingsInfoAdmin(admin.ModelAdmin): list_display = ('platform', 'channel', 'version', 'online', 'status', 'created_at', 'updated_at') list_filter = ('platform', 'online', 'status') def save_model(self, request, obj, form, change): obj.channel = strip(obj.channel) obj.version = strip(obj.version) obj.save() # 设置 APP 设置信息 set_app_settings_info(obj) def delete_model(self, request, obj): obj.delete() # 删除 APP 设置信息 del_app_settings_info(obj) class SplashInfoAdmin(admin.ModelAdmin): list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'src', 'status', 'created_at', 'updated_at') list_filter = ('src', 'status') class FeedbackInfoAdmin(admin.ModelAdmin): list_display = ('user_id', 'feedback', 'src', 'status', 'created_at', 'updated_at') list_filter = ('src', 'status') class GuestEntranceControlInfoAdmin(admin.ModelAdmin): list_display = ('platform', 'min_adr', 'max_adr', 'min_ios', 'max_ios', 'status', 'created_at', 'updated_at') def save_model(self, request, obj, form, change): obj.min_adr = strip(obj.min_adr) obj.max_adr = strip(obj.max_adr) obj.min_ios = strip(obj.min_ios) obj.max_ios = strip(obj.max_ios) obj.save() # 设置游客入口控制 set_guest_entrance_control(obj) def delete_model(self, request, obj): obj.delete() # 删除游客入口控制 delete_guest_entrance_control() admin.site.register(LatestAppInfo, LatestAppInfoAdmin) admin.site.register(APPSettingsInfo, APPSettingsInfoAdmin) admin.site.register(SplashInfo, SplashInfoAdmin) admin.site.register(FeedbackInfo, FeedbackInfoAdmin) admin.site.register(GuestEntranceControlInfo, GuestEntranceControlInfoAdmin)