拍爱

admin.py 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from django.contrib import admin
  4. from django.template.loader import render_to_string
  5. from django_admin import AdvancedExportExcelModelAdmin, ReadOnlyModelAdmin
  6. from pysnippets.strsnippets import strip
  7. from operation.models import (APPSettingsInfo, BoxProgramVersionInfo, FeedbackInfo, GuestEntranceControlInfo,
  8. LatestAppInfo, PatchInfo, SplashInfo)
  9. from utils.disk_utils import write_to_disk
  10. from utils.redis.rapp import set_latest_app
  11. from utils.redis.rguest import delete_guest_entrance_control, set_guest_entrance_control
  12. from utils.redis.roperation.rbox_program_version import set_box_program_version
  13. from utils.redis.rpatch import del_app_patch_info, set_app_patch_info
  14. from utils.redis.rsettings import del_app_settings_info, set_app_settings_info
  15. class LatestAppInfoAdmin(admin.ModelAdmin):
  16. 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')
  17. list_filter = ('src', 'status')
  18. readonly_fields = ('status', )
  19. def save_model(self, request, obj, form, change):
  20. if not obj.pk and LatestAppInfo.objects.filter(src=obj.src, status=True).exists():
  21. return
  22. obj.latest_adr_version_name = strip(obj.latest_adr_version_name)
  23. obj.latest_adr_app = strip(obj.latest_adr_app)
  24. obj.latest_adr_url = strip(obj.latest_adr_url)
  25. obj.latest_ios_version_name = strip(obj.latest_ios_version_name)
  26. obj.latest_ios_url = strip(obj.latest_ios_url)
  27. obj.save()
  28. if obj.src == LatestAppInfo.PAIAI_USER:
  29. # 更新安卓下载页面
  30. write_to_disk(render_to_string('page/download.tmpl.html', {
  31. 'src': obj.src,
  32. 'version': obj.latest_adr_version_name,
  33. }), settings.PAI2_USER_DOWNLOAD_ADR_PAGE_PATH)
  34. # 更新 iOS 下载页面
  35. write_to_disk(render_to_string('page/download.tmpl.html', {
  36. 'src': obj.src,
  37. 'version': obj.latest_ios_version_name,
  38. }), settings.PAI2_USER_DOWNLOAD_IOS_PAGE_PATH)
  39. elif obj.src == LatestAppInfo.PAIAI_LENSMAN:
  40. # 更新安卓下载页面
  41. write_to_disk(render_to_string('page/download.tmpl.html', {
  42. 'src': obj.src,
  43. 'version': obj.latest_adr_version_name,
  44. }), settings.PAI2_LENSMAN_DOWNLOAD_ADR_PAGE_PATH)
  45. # 更新 iOS 下载页面
  46. write_to_disk(render_to_string('page/download.tmpl.html', {
  47. 'src': obj.src,
  48. 'version': obj.latest_ios_version_name,
  49. }), settings.PAI2_LENSMAN_DOWNLOAD_IOS_PAGE_PATH)
  50. elif obj.src == LatestAppInfo.PAIAI_TOURGUIDE:
  51. # 更新安卓下载页面
  52. write_to_disk(render_to_string('page/download.tmpl.html', {
  53. 'src': obj.src,
  54. 'version': obj.latest_adr_version_name,
  55. }), settings.PAI2_TOURGUIDE_DOWNLOAD_ADR_PAGE_PATH)
  56. # 更新 iOS 下载页面
  57. write_to_disk(render_to_string('page/download.tmpl.html', {
  58. 'src': obj.src,
  59. 'version': obj.latest_ios_version_name,
  60. }), settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_PAGE_PATH)
  61. # 设置最新 APP 信息
  62. set_latest_app(obj.src)
  63. def delete_model(self, request, obj):
  64. obj.delete()
  65. # 设置最新 APP 信息
  66. set_latest_app(obj.src)
  67. class PatchInfoAdmin(admin.ModelAdmin):
  68. list_display = ('platform', 'version', 'patch', 'src', 'status', 'created_at', 'updated_at')
  69. list_filter = ('platform', 'src', 'status')
  70. def save_model(self, request, obj, form, change):
  71. obj.version = strip(obj.version)
  72. obj.save()
  73. # 设置 APP 补丁信息
  74. set_app_patch_info(obj)
  75. def delete_model(self, request, obj):
  76. obj.delete()
  77. # 删除 APP 补丁信息
  78. del_app_patch_info(obj)
  79. class APPSettingsInfoAdmin(admin.ModelAdmin):
  80. list_display = ('platform', 'channel', 'version', 'online', 'status', 'created_at', 'updated_at')
  81. list_filter = ('platform', 'online', 'status')
  82. def save_model(self, request, obj, form, change):
  83. obj.channel = strip(obj.channel)
  84. obj.version = strip(obj.version)
  85. obj.save()
  86. # 设置 APP 设置信息
  87. set_app_settings_info(obj)
  88. def delete_model(self, request, obj):
  89. obj.delete()
  90. # 删除 APP 设置信息
  91. del_app_settings_info(obj)
  92. class SplashInfoAdmin(admin.ModelAdmin):
  93. list_display = ('splash_image', 'spalash_image_airtime', 'spalash_image_deadline', 'src', 'status', 'created_at', 'updated_at')
  94. list_filter = ('src', 'status')
  95. class FeedbackInfoAdmin(AdvancedExportExcelModelAdmin, ReadOnlyModelAdmin, admin.ModelAdmin):
  96. list_display = ('user_id', 'feedback', 'src', 'status', 'created_at', 'updated_at')
  97. list_filter = ('src', 'status')
  98. class GuestEntranceControlInfoAdmin(admin.ModelAdmin):
  99. list_display = ('platform', 'min_adr', 'max_adr', 'min_ios', 'max_ios', 'src', 'status', 'created_at', 'updated_at')
  100. list_filter = ('src', 'status')
  101. def save_model(self, request, obj, form, change):
  102. obj.min_adr = strip(obj.min_adr)
  103. obj.max_adr = strip(obj.max_adr)
  104. obj.min_ios = strip(obj.min_ios)
  105. obj.max_ios = strip(obj.max_ios)
  106. obj.save()
  107. # 设置游客入口控制
  108. set_guest_entrance_control(obj)
  109. def delete_model(self, request, obj):
  110. obj.delete()
  111. # 删除游客入口控制
  112. delete_guest_entrance_control()
  113. class BoxProgramVersionInfoAdmin(admin.ModelAdmin):
  114. list_display = ('srv_version_code', 'srv_version_name', 'srv_sha1', 'proc_version_code', 'proc_version_name', 'proc_sha1', 'status', 'created_at', 'updated_at')
  115. list_filter = ('status', )
  116. def save_model(self, request, obj, form, change):
  117. obj.srv_version_name = strip(obj.srv_version_name)
  118. obj.srv_sha1 = strip(obj.srv_sha1)
  119. obj.proc_version_name = strip(obj.proc_version_name)
  120. obj.proc_sha1 = strip(obj.proc_sha1)
  121. obj.save()
  122. # 设置 BOX 程序版本信息
  123. set_box_program_version()
  124. def delete_model(self, request, obj):
  125. obj.delete()
  126. # 设置 BOX 程序版本信息
  127. set_box_program_version()
  128. admin.site.register(LatestAppInfo, LatestAppInfoAdmin)
  129. admin.site.register(PatchInfo, PatchInfoAdmin)
  130. admin.site.register(APPSettingsInfo, APPSettingsInfoAdmin)
  131. admin.site.register(SplashInfo, SplashInfoAdmin)
  132. admin.site.register(FeedbackInfo, FeedbackInfoAdmin)
  133. admin.site.register(GuestEntranceControlInfo, GuestEntranceControlInfoAdmin)
  134. admin.site.register(BoxProgramVersionInfo, BoxProgramVersionInfoAdmin)