filters.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #coding=utf-8
  2. from django.utils import timezone
  3. import datetime
  4. import django_filters
  5. from apps.base import clean_datetime_range
  6. from .models import *
  7. from apps.customer.models import Customer
  8. from apps.account.models import Branch
  9. class BranchFilter(django_filters.FilterSet):
  10. name = django_filters.CharFilter(field_name='name',lookup_expr='icontains')
  11. tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
  12. enabled = django_filters.CharFilter(field_name='enabled')
  13. class Meta:
  14. model = Branch
  15. fields = (
  16. 'name', 'tel', 'enabled'
  17. )
  18. def __init__(self, data=None, *args, **kwargs):
  19. data = clean_datetime_range(data, 'create_time')
  20. super(BranchFilter, self).__init__(data, *args, **kwargs)
  21. class CustomerFilter(django_filters.FilterSet):
  22. nickname = django_filters.CharFilter(field_name='nickname', lookup_expr='icontains')
  23. tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
  24. class Meta:
  25. model = Customer
  26. fields = '__all__'
  27. class MemberCouponFilter(django_filters.FilterSet):
  28. write_off = django_filters.CharFilter(field_name='write_off')
  29. coupon_name = django_filters.CharFilter(field_name='coupon__name', lookup_expr='icontains')
  30. activity_name = django_filters.CharFilter(field_name='activity__title', lookup_expr='icontains')
  31. status = django_filters.CharFilter(method='find_coupon_by_status')
  32. class Meta:
  33. model = MemberCoupon
  34. fields = '__all__'
  35. def find_coupon_by_status(self, queryset, *args):
  36. if args[1]:
  37. if args[1] == '1':#待使用
  38. now = datetime.datetime.date(timezone.now())
  39. queryset = queryset.filter(write_off=False, end_date__gt=now)
  40. elif args[1] == '2':#已使用
  41. queryset = queryset.filter(write_off=True)
  42. elif args[1] == '3':#已过期
  43. now = datetime.datetime.date(timezone.now())
  44. queryset = queryset.filter(write_off=False, end_date__lt=now)
  45. return queryset
  46. class OrderFilter(django_filters.FilterSet):
  47. activity_name = django_filters.CharFilter(field_name='activity_detail__main__title', lookup_expr='icontains')
  48. activity_detail = django_filters.CharFilter(field_name='activity_detail__name', lookup_expr='icontains')
  49. branch_name = django_filters.CharFilter(field_name='branch__name', lookup_expr='icontains')
  50. activity = django_filters.CharFilter(field_name='activity_detail__main')
  51. delete = django_filters.CharFilter(field_name='delete')
  52. order_status = django_filters.CharFilter(method='find_by_order_status')
  53. class Meta:
  54. model = Order
  55. fields = '__all__'
  56. def find_by_order_status(self, queryset, *args):
  57. if args[1]:
  58. if args[1] == '1': # 进行中
  59. queryset = queryset.filter(status=Order.DEFAULT)
  60. elif args[1] == '2': # 已完成
  61. queryset = queryset.filter(status=Order.FINISH)
  62. elif args[1] == '3': # 已失败
  63. queryset = queryset.filter(status=Order.FAIL)
  64. return queryset
  65. class CouponFilter(django_filters.FilterSet):
  66. name = django_filters.CharFilter(field_name='name',lookup_expr='icontains')
  67. enabled = django_filters.CharFilter(field_name='enabled')
  68. class Meta:
  69. model = Coupon
  70. fields = (
  71. 'name', 'enabled'
  72. )
  73. def __init__(self, data=None, *args, **kwargs):
  74. data = clean_datetime_range(data, 'create_time')
  75. super(CouponFilter, self).__init__(data, *args, **kwargs)
  76. class ActivityFilter(django_filters.FilterSet):
  77. title = django_filters.CharFilter(field_name='title',lookup_expr='icontains')
  78. branch_name = django_filters.CharFilter(field_name='branch_name', lookup_expr='icontains')
  79. enabled = django_filters.CharFilter(field_name='enabled')
  80. check_status = django_filters.CharFilter(field_name='check_status')
  81. class Meta:
  82. model = Activity
  83. fields = (
  84. 'title', 'branch_name', 'check_status', 'enabled'
  85. )
  86. def __init__(self, data=None, *args, **kwargs):
  87. data = clean_datetime_range(data, 'create_time')
  88. super(ActivityFilter, self).__init__(data, *args, **kwargs)
  89. class ActivityDetailsFilter(django_filters.FilterSet):
  90. name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
  91. main = django_filters.CharFilter(field_name='main')
  92. class Meta:
  93. model = ActivityDetails
  94. fields = (
  95. 'name', 'main'
  96. )
  97. class ActivityCouponFilter(django_filters.FilterSet):
  98. name = django_filters.CharFilter(field_name='main__name', lookup_expr='icontains')
  99. order = django_filters.CharFilter(field_name='main__main')
  100. main = django_filters.CharFilter(field_name='main')
  101. class Meta:
  102. model = ActivityCoupon
  103. fields = (
  104. 'name', 'main', 'order'
  105. )