12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #coding=utf-8
- from django.utils import timezone
- import datetime
- import django_filters
- from apps.base import clean_datetime_range
- from .models import *
- from apps.customer.models import Customer
- from apps.account.models import Branch
- class BranchFilter(django_filters.FilterSet):
- name = django_filters.CharFilter(field_name='name',lookup_expr='icontains')
- tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
- enabled = django_filters.CharFilter(field_name='product_base__enabled')
- class Meta:
- model = Branch
- fields = (
- 'name', 'tel', 'enabled'
- )
- def __init__(self, data=None, *args, **kwargs):
- data = clean_datetime_range(data, 'create_time')
- super(BranchFilter, self).__init__(data, *args, **kwargs)
- class CustomerFilter(django_filters.FilterSet):
- nickname = django_filters.CharFilter(field_name='nickname', lookup_expr='icontains')
- tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
- class Meta:
- model = Customer
- fields = '__all__'
- class MemberCouponFilter(django_filters.FilterSet):
- write_off = django_filters.CharFilter(field_name='write_off')
- coupon_name = django_filters.CharFilter(field_name='coupon__name', lookup_expr='icontains')
- activity_name = django_filters.CharFilter(field_name='activity__title', lookup_expr='icontains')
- not_used = django_filters.CharFilter(method='find_not_used')
- used = django_filters.CharFilter(method='find_used')
- overdue = django_filters.CharFilter(method='find_overdue')
- class Meta:
- model = MemberCoupon
- fields = '__all__'
- def find_not_used(self, queryset, *args):
- if args[1]:
- now = datetime.datetime.date(timezone.now())
- queryset = queryset.filter(write_off=False, end_date__gt=now)
- return queryset
- def find_used(self, queryset, *args):
- if args[1]:
- queryset = queryset.filter(write_off=True)
- return queryset
- def find_overdue(self, queryset, *args):
- if args[1]:
- now = datetime.datetime.date(timezone.now())
- queryset = queryset.filter(write_off=False, end_date__lt=now)
- return queryset
- class OrderFilter(django_filters.FilterSet):
- activity_name = django_filters.CharFilter(field_name='activity__title', lookup_expr='icontains')
- delete = django_filters.CharFilter(field_name='delete')
- class Meta:
- model = Order
- fields = '__all__'
|