filters.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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__title', lookup_expr='icontains')
  48. branch_name = django_filters.CharFilter(field_name='branch__name', lookup_expr='icontains')
  49. activity = django_filters.CharFilter(field_name='activity')
  50. delete = django_filters.CharFilter(field_name='delete')
  51. order_status = django_filters.CharFilter(method='find_by_order_status')
  52. class Meta:
  53. model = Order
  54. fields = '__all__'
  55. def find_by_order_status(self, queryset, *args):
  56. if args[1]:
  57. if args[1] == '1': # 进行中
  58. queryset = queryset.filter(status=Order.DEFAULT)
  59. elif args[1] == '2': # 已完成
  60. queryset = queryset.filter(status=Order.FINISH)
  61. elif args[1] == '3': # 已失败
  62. queryset = queryset.filter(status=Order.FAIL)
  63. return queryset
  64. class CouponFilter(django_filters.FilterSet):
  65. name = django_filters.CharFilter(field_name='name',lookup_expr='icontains')
  66. enabled = django_filters.CharFilter(field_name='enabled')
  67. class Meta:
  68. model = Coupon
  69. fields = (
  70. 'name', 'enabled'
  71. )
  72. def __init__(self, data=None, *args, **kwargs):
  73. data = clean_datetime_range(data, 'create_time')
  74. super(CouponFilter, self).__init__(data, *args, **kwargs)
  75. class ActivityFilter(django_filters.FilterSet):
  76. title = django_filters.CharFilter(field_name='title',lookup_expr='icontains')
  77. branch_name = django_filters.CharFilter(field_name='branch_name', lookup_expr='icontains')
  78. enabled = django_filters.CharFilter(field_name='enabled')
  79. check_status = django_filters.CharFilter(field_name='check_status')
  80. class Meta:
  81. model = Activity
  82. fields = (
  83. 'title', 'branch_name', 'check_status', 'enabled'
  84. )
  85. def __init__(self, data=None, *args, **kwargs):
  86. data = clean_datetime_range(data, 'create_time')
  87. super(ActivityFilter, self).__init__(data, *args, **kwargs)
  88. class ActivityDetailsFilter(django_filters.FilterSet):
  89. name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
  90. main = django_filters.CharFilter(field_name='main')
  91. class Meta:
  92. model = ActivityDetails
  93. fields = (
  94. 'name', 'main'
  95. )
  96. class ActivityCouponFilter(django_filters.FilterSet):
  97. name = django_filters.CharFilter(field_name='main__name', lookup_expr='icontains')
  98. order = django_filters.CharFilter(field_name='main__main')
  99. main = django_filters.CharFilter(field_name='main')
  100. class Meta:
  101. model = ActivityCoupon
  102. fields = (
  103. 'name', 'main', 'order'
  104. )