拍爱

admin.py 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # -*- coding: utf-8 -*-
  2. from django.contrib import admin
  3. from django.db import transaction
  4. from django_admin import ChangeOnlyModelAdmin, ReadOnlyModelAdmin
  5. from django_curtail_uuid import CurtailUUID
  6. from account.models import LensmanIncomeExpensesInfo, LensmanInfo, TourGuideInfo, UserIncomeExpensesInfo, UserInfo
  7. class LensmanInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):
  8. exclude = ('username', 'password', 'encryption')
  9. list_display = ('lensman_id', 'unionid', 'username', 'name', 'sex', 'phone', 'location', 'proportion', 'nomark', 'origin', 'balance', 'user_status', 'outtake_status', 'status', 'created_at', 'updated_at')
  10. list_filter = ('is_common_lensman', 'is_outtake_lensman', 'sex', 'user_status', 'outtake_status', 'status')
  11. readonly_fields = ('lensman_id', )
  12. search_fields = ('lensman_id', 'name', 'phone', 'location')
  13. @transaction.atomic
  14. def save_model(self, request, obj, form, change):
  15. obj.save()
  16. if not obj.lensman_id:
  17. try:
  18. user_id = UserInfo.objects.select_for_update().get(unionid=obj.unionid).user_id
  19. except UserInfo.DoesNotExist:
  20. user_id = None
  21. obj.lensman_id = user_id or CurtailUUID.uuid(UserInfo, 'user_id')
  22. obj.save()
  23. fields = {
  24. 'user_from': UserInfo.LENSMAN_USER,
  25. 'unionid': obj.unionid,
  26. 'name': obj.name,
  27. 'sex': obj.sex,
  28. 'phone': obj.phone,
  29. 'location': obj.location,
  30. 'islensman': True,
  31. 'user_status': obj.user_status,
  32. 'outtake_status': obj.outtake_status,
  33. 'is_common_lensman': obj.is_common_lensman,
  34. 'is_outtake_lensman': obj.is_outtake_lensman,
  35. }
  36. user, created = UserInfo.objects.get_or_create(user_id=obj.lensman_id, defaults=fields)
  37. if not created:
  38. fields.pop('user_from', None)
  39. for key, value in fields.iteritems():
  40. setattr(user, key, value)
  41. user.save()
  42. class LensmanIncomeExpensesInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
  43. list_display = ('lensman_id', 'photo_id', 'type', 'amount', 'balance', 'remark', 'status', 'created_at', 'updated_at')
  44. list_filter = ('type', 'status')
  45. class TourGuideInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):
  46. list_display = ('tourguide_id', 'unionid', 'name', 'sex', 'phone', 'location', 'no', 'user_status', 'status', 'created_at', 'updated_at')
  47. list_filter = ('sex', 'user_status', 'status')
  48. readonly_fields = ('tourguide_id', )
  49. search_fields = ('tourguide_id', 'name', 'phone', 'location', 'no')
  50. @transaction.atomic
  51. def save_model(self, request, obj, form, change):
  52. if not obj.tourguide_id:
  53. try:
  54. user_id = UserInfo.objects.select_for_update().get(unionid=obj.unionid).user_id
  55. except UserInfo.DoesNotExist:
  56. user_id = None
  57. obj.tourguide_id = user_id or CurtailUUID.uuid(UserInfo, 'user_id')
  58. obj.save()
  59. fields = {
  60. 'user_from': UserInfo.TOURGUIDE_USER,
  61. 'unionid': obj.unionid,
  62. 'name': obj.name,
  63. 'sex': obj.sex,
  64. 'phone': obj.phone,
  65. 'location': obj.location,
  66. 'istourguide': True,
  67. 'user_status': obj.user_status,
  68. 'outtake_status': obj.outtake_status,
  69. }
  70. user, created = UserInfo.objects.get_or_create(user_id=obj.tourguide_id, defaults=fields)
  71. if not created:
  72. fields.pop('user_from', None)
  73. for key, value in fields.iteritems():
  74. setattr(user, key, value)
  75. user.save()
  76. class UserInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):
  77. list_display = ('user_id', 'user_from', 'username', 'openid', 'unionid', 'name', 'sex', 'nickname', 'phone', 'location', 'islensman', 'istourguide', 'balance', 'user_status', 'outtake_status', 'status', 'created_at', 'updated_at')
  78. list_filter = ('user_from', 'sex', 'islensman', 'istourguide', 'user_status', 'outtake_status', 'status')
  79. readonly_fields = ('user_id', )
  80. search_fields = ('user_id', 'name', 'phone', 'location')
  81. class UserIncomeExpensesInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
  82. list_display = ('user_id', 'photo_id', 'type', 'amount', 'balance', 'remark', 'status', 'created_at', 'updated_at')
  83. list_filter = ('type', 'status')
  84. admin.site.register(LensmanInfo, LensmanInfoAdmin)
  85. admin.site.register(LensmanIncomeExpensesInfo, LensmanIncomeExpensesInfoAdmin)
  86. admin.site.register(TourGuideInfo, TourGuideInfoAdmin)
  87. admin.site.register(UserInfo, UserInfoAdmin)
  88. admin.site.register(UserIncomeExpensesInfo, UserIncomeExpensesInfoAdmin)