Нет описания

admin.py 12KB

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