No Description

admin.py 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. # -*- coding: utf-8 -*-
  2. import monetary
  3. from django.conf import settings
  4. from django.contrib import admin
  5. from django.contrib.auth.hashers import make_password
  6. from django_admin import AdvancedActionsModelAdmin, AdvancedExportExcelModelAdmin, DeleteModelAdmin, ReadOnlyModelAdmin
  7. from django_models_ext import ProvinceShortModelMixin
  8. from pysnippets.strsnippets import strip
  9. from integral.models import SaleclerkSubmitLogInfo
  10. from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, CameraModelInfo, ConsumeInfoSubmitLogInfo,
  11. ConsumeShotUnbindingInfo, DistributorInfo, LatestAppInfo, LatestAppScreenInfo,
  12. MaintenancemanInfo, ModelCameraBodyInfo, ModelInfo, OperatorInfo, SaleclerkInfo)
  13. from utils.redis.rshot import update_member_shot_data
  14. class AdministratorInfoAdmin(admin.ModelAdmin):
  15. list_display = ('admin_id', 'admin_type', 'phone', 'password', 'encryption', 'name', 'brand_id', 'brand_name', 'user_status', 'status', 'created_at', 'updated_at')
  16. list_filter = ('admin_type', 'user_status', 'status', 'brand_name')
  17. readonly_fields = ('encryption', 'brand_name')
  18. def save_model(self, request, obj, form, change):
  19. obj.phone = strip(obj.phone)
  20. obj.password = strip(obj.password)
  21. if obj.password:
  22. obj.encryption = make_password(obj.password, settings.MAKE_PASSWORD_SALT, settings.MAKE_PASSWORD_HASHER)
  23. obj.password = ''
  24. obj.brand_id = strip(obj.brand_id)
  25. try:
  26. obj.brand_name = BrandInfo.objects.get(brand_id=obj.brand_id).brand_name
  27. except BrandInfo.DoesNotExist:
  28. obj.brand_name = ''
  29. obj.save()
  30. class OperatorInfoAdmin(admin.ModelAdmin):
  31. list_display = ('operator_id', 'phone', 'password', 'encryption', 'name', 'brand_id', 'brand_name', 'brand_domain', 'user_status', 'status', 'created_at', 'updated_at')
  32. list_filter = ('user_status', 'status', 'brand_name')
  33. readonly_fields = ('brand_domain', 'encryption', 'brand_name')
  34. def save_model(self, request, obj, form, change):
  35. obj.phone = strip(obj.phone)
  36. obj.password = strip(obj.password)
  37. if obj.password:
  38. obj.encryption = make_password(obj.password, settings.MAKE_PASSWORD_SALT, settings.MAKE_PASSWORD_HASHER)
  39. obj.password = ''
  40. obj.brand_id = strip(obj.brand_id)
  41. try:
  42. obj.brand_name = BrandInfo.objects.get(brand_id=obj.brand_id).brand_name
  43. except BrandInfo.DoesNotExist:
  44. obj.brand_name = ''
  45. obj.save()
  46. class BrandInfoAdmin(admin.ModelAdmin):
  47. list_display = ('brand_id', 'brand_name', 'brand_descr', 'brand_logo', 'brand_domain', 'position', 'status', 'created_at', 'updated_at')
  48. def save_model(self, request, obj, form, change):
  49. obj.save()
  50. OperatorInfo.objects.filter(brand_id=obj.brand_id).update(brand_domain=obj.brand_domain)
  51. class ModelInfoAdmin(AdvancedExportExcelModelAdmin, DeleteModelAdmin, admin.ModelAdmin):
  52. list_display = ('pk', 'brand_id', 'brand_name', 'jancode', 'model_id', 'model_name', 'model_uni_name', 'model_full_name', 'model_descr', 'image', 'url', 'image2', 'integral', 'position', 'display', 'is_important', 'shot_type_id', 'shot_member_integral', 'shot_member_image', 'shot_member_name', 'status', 'created_at', 'updated_at')
  53. list_filter = ('brand_name', 'shot_type_id', 'display', 'status')
  54. readonly_fields = ('brand_name', )
  55. search_fields = ('brand_id', 'brand_name', 'jancode', 'model_id', 'model_name', 'model_uni_name', 'model_full_name', 'model_descr')
  56. def save_model(self, request, obj, form, change):
  57. obj.brand_id = strip(obj.brand_id)
  58. try:
  59. obj.brand_name = BrandInfo.objects.get(brand_id=obj.brand_id).brand_name
  60. except BrandInfo.DoesNotExist:
  61. obj.brand_name = ''
  62. obj.is_show_shot = True
  63. obj.save()
  64. ModelInfo.objects.filter(brand_id=obj.brand_id, model_uni_name=obj.model_uni_name).exclude(model_id=obj.model_id).update(is_show_shot=False)
  65. update_member_shot_data()
  66. # 更新用户提交列表和销售员提交列表
  67. SaleclerkSubmitLogInfo.objects.filter(model_pk=obj.pk).update(
  68. model_name=obj.model_name,
  69. model_uni_name=obj.model_uni_name,
  70. )
  71. ConsumeInfoSubmitLogInfo.objects.filter(model_id=obj.model_id).update(
  72. model_uni_name=obj.model_uni_name,
  73. model_name=obj.model_name,
  74. )
  75. # 更新"型号机身适配"型号图片
  76. ModelCameraBodyInfo.objects.filter(
  77. brand_id=obj.brand_id,
  78. model_name=obj.model_uni_name,
  79. ).update(
  80. model_image=obj.shot_member_image,
  81. is_important=obj.is_important,
  82. )
  83. def delete_model(self, request, obj):
  84. obj.delete()
  85. update_member_shot_data()
  86. class CameraModelInfoAdmin(admin.ModelAdmin):
  87. list_display = ('brand_id', 'brand_name', 'camera_brand_name', 'camera_name', 'camera_image', 'camera_market_time', 'status', 'created_at', 'updated_at')
  88. list_filter = ('brand_name', 'camera_brand_name', 'status')
  89. def save_model(self, request, obj, form, change):
  90. obj.save()
  91. # 更新"型号机身适配"机身图片
  92. ModelCameraBodyInfo.objects.filter(
  93. brand_id=obj.brand_id,
  94. camera_brand_name=obj.camera_brand_name,
  95. camera_name=obj.camera_name,
  96. ).update(
  97. camera_image=obj.camera_image,
  98. camera_market_time=obj.camera_market_time,
  99. )
  100. class ModelCameraBodyInfoAdmin(DeleteModelAdmin, admin.ModelAdmin):
  101. list_display = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'model_image', 'is_important', 'camera_brand_name', 'camera_name', 'camera_image', 'camera_market_time', 'status', 'created_at', 'updated_at')
  102. list_filter = ('brand_name', 'model_name', 'is_important', 'camera_brand_name', 'status')
  103. readonly_fields = ('model_image', 'camera_image', 'camera_market_time')
  104. search_fields = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'camera_name')
  105. class ModelImageInfoAdmin(admin.ModelAdmin):
  106. list_display = ('model_id', 'model_name', 'image', 'url', 'position', 'status', 'created_at', 'updated_at')
  107. list_filter = ('model_name', 'status')
  108. def save_model(self, request, obj, form, change):
  109. obj.model_id = strip(obj.model_id)
  110. try:
  111. obj.model_name = ModelInfo.objects.get(model_id=obj.model_id).model_name
  112. except BrandInfo.DoesNotExist:
  113. obj.model_name = ''
  114. obj.save()
  115. class DistributorInfoAdmin(admin.ModelAdmin):
  116. list_display = ('brand_id', 'brand_name', 'department_id', 'distributor_id', 'distributor_name', 'distributor_short_name', 'distributor_province_name', 'position', 'status', 'created_at', 'updated_at')
  117. list_filter = ('brand_name', 'sr_id', 'distributor_province_name', 'status')
  118. readonly_fields = ('brand_name', 'distributor_province_code')
  119. search_fields = ('brand_id', 'brand_name', 'distributor_id', 'distributor_name', 'distributor_short_name', 'distributor_descr', 'distributor_province_code', 'distributor_province_name')
  120. def save_model(self, request, obj, form, change):
  121. obj.brand_id = strip(obj.brand_id)
  122. try:
  123. obj.brand_name = BrandInfo.objects.get(brand_id=obj.brand_id).brand_name
  124. except BrandInfo.DoesNotExist:
  125. obj.brand_name = ''
  126. obj.distributor_province_code = ProvinceShortModelMixin.PROVINCE_NAME_CODE_DICT.get(obj.distributor_province_name, '')
  127. obj.save()
  128. class SaleclerkInfoAdmin(AdvancedExportExcelModelAdmin, AdvancedActionsModelAdmin, admin.ModelAdmin):
  129. list_display = ('brand_id', 'brand_name', 'distributor_id', 'distributor_name', 'clerk_id', 'clerk_name', 'clerk_sex', 'clerk_phone', 'unionid', 'openid', 'num', 'integral', 'total_integral', 'user_status', 'test_user', 'is_online_sales', 'status', 'created_at', 'updated_at')
  130. list_filter = ('test_user', 'user_status', 'is_online_sales', 'status')
  131. search_fields = ('brand_id', 'brand_name', 'distributor_id', 'distributor_name', 'clerk_id', 'clerk_name', 'clerk_phone', 'unionid', 'openid')
  132. actions_exclude = ('delete_selected', )
  133. class MaintenancemanInfoAdmin(AdvancedExportExcelModelAdmin, AdvancedActionsModelAdmin, admin.ModelAdmin):
  134. list_display = ('brand_name', 'wx_userid', 'maintenance_id', 'maintenance_name', 'maintenance_phone', 'status', 'created_at', 'updated_at')
  135. search_fields = ('maintenance_id', 'maintenance_name', 'maintenance_phone')
  136. actions_exclude = ('delete_selected', )
  137. class BrandModelDistributorPriceInfoAdmin(admin.ModelAdmin):
  138. list_display = ('brand_id', 'brand_name', 'model_id', 'model_name', 'distributor_id', 'distributor_name', 'factory_yuan', 'integral', 'status', 'created_at', 'updated_at')
  139. list_filter = ('brand_name', 'model_name', 'distributor_name', 'status')
  140. readonly_fields = ('brand_name', 'model_name', 'distributor_name', 'factory_fee', )
  141. search_fields = ('brand_id', 'brand_name', 'model_id', 'model_name', 'distributor_id', 'distributor_name')
  142. def save_model(self, request, obj, form, change):
  143. obj.brand_id = strip(obj.brand_id)
  144. try:
  145. obj.brand_name = BrandInfo.objects.get(brand_id=obj.brand_id).brand_name
  146. except BrandInfo.DoesNotExist:
  147. obj.brand_name = ''
  148. obj.model_id = strip(obj.model_id)
  149. try:
  150. obj.model_name = ModelInfo.objects.get(model_id=obj.model_id).model_name
  151. except BrandInfo.DoesNotExist:
  152. obj.model_name = ''
  153. obj.distributor_id = strip(obj.distributor_id)
  154. try:
  155. obj.distributor_name = DistributorInfo.objects.get(distributor_id=obj.distributor_id).distributor_name
  156. except BrandInfo.DoesNotExist:
  157. obj.distributor_name = ''
  158. obj.save()
  159. class LatestAppInfoAdmin(admin.ModelAdmin):
  160. list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'status', 'created_at', 'updated_at')
  161. list_filter = ('status', )
  162. readonly_fields = ('status', )
  163. def save_model(self, request, obj, form, change):
  164. if not obj.pk and LatestAppInfo.objects.filter(status=True).exists():
  165. return
  166. obj.latest_adr_version_name = strip(obj.latest_adr_version_name)
  167. obj.latest_adr_app = strip(obj.latest_adr_app)
  168. obj.latest_adr_url = strip(obj.latest_adr_url)
  169. obj.save()
  170. class LatestAppScreenInfoAdmin(admin.ModelAdmin):
  171. list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'status', 'created_at', 'updated_at')
  172. list_filter = ('status', )
  173. readonly_fields = ('status', )
  174. def save_model(self, request, obj, form, change):
  175. if not obj.pk and LatestAppInfo.objects.filter(status=True).exists():
  176. return
  177. obj.latest_adr_version_name = strip(obj.latest_adr_version_name)
  178. obj.latest_adr_app = strip(obj.latest_adr_app)
  179. obj.latest_adr_url = strip(obj.latest_adr_url)
  180. obj.save()
  181. class ConsumeInfoSubmitLogInfoAdmin(AdvancedExportExcelModelAdmin, admin.ModelAdmin):
  182. list_display = ('user_id', 'phone', 'model_name', 'serialNo', 'dupload', 'submit_during_activity', 'integral', 'has_used', 'created_at')
  183. list_filter = ('brand_id', 'submit_during_activity', 'activity_id', 'dupload', 'test_user', 'verifyResult', 'has_used', 'status', 'code_version', 'created_at')
  184. excel_fields = ('created_at', 'phone', 'model_uni_name', 'model_name', 'serialNo')
  185. search_fields = ('user_id', 'phone', 'serialNo', 'model_name')
  186. class ConsumeShotUnbindingInfoAdmin(admin.ModelAdmin):
  187. list_display = ('user_id', 'submit_pk', 'submit_at', 'model_id', 'sn', 'reason', 'created_at')
  188. search_fields = ('sn', )
  189. class ActivityInfoAdmin(admin.ModelAdmin):
  190. list_display = ('activity_id', 'activity_name', 'model_uni_names', 'start_at', 'end_at', 'coupon_expire_type', 'coupon_valid_period', 'coupon_expire_at', 'coupon_value', 'status', 'created_at', 'updated_at')
  191. list_filter = ('coupon_expire_type', 'status')
  192. admin.site.register(AdministratorInfo, AdministratorInfoAdmin)
  193. admin.site.register(OperatorInfo, OperatorInfoAdmin)
  194. admin.site.register(BrandInfo, BrandInfoAdmin)
  195. admin.site.register(ModelInfo, ModelInfoAdmin)
  196. admin.site.register(CameraModelInfo, CameraModelInfoAdmin)
  197. admin.site.register(ModelCameraBodyInfo, ModelCameraBodyInfoAdmin)
  198. # admin.site.register(ModelImageInfo, ModelImageInfoAdmin)
  199. admin.site.register(DistributorInfo, DistributorInfoAdmin)
  200. admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin)
  201. # admin.site.register(BrandModelDistributorPriceInfo, BrandModelDistributorPriceInfoAdmin)
  202. admin.site.register(LatestAppInfo, LatestAppInfoAdmin)
  203. admin.site.register(LatestAppScreenInfo, LatestAppScreenInfoAdmin)
  204. admin.site.register(ConsumeInfoSubmitLogInfo, ConsumeInfoSubmitLogInfoAdmin)
  205. admin.site.register(ActivityInfo, ActivityInfoAdmin)
  206. admin.site.register(MaintenancemanInfo, MaintenancemanInfoAdmin)
  207. admin.site.register(ConsumeShotUnbindingInfo, ConsumeShotUnbindingInfoAdmin)