Esempio n. 1
0
class ObjectChangeFilterSet(BaseFilterSet):
    q = django_filters.CharFilter(
        method='search',
        label='Search',
    )
    time = django_filters.DateTimeFromToRangeFilter()
    changed_object_type = ContentTypeFilter()
    user_id = django_filters.ModelMultipleChoiceFilter(
        queryset=User.objects.all(),
        label='User (ID)',
    )
    user = django_filters.ModelMultipleChoiceFilter(
        field_name='user__username',
        queryset=User.objects.all(),
        to_field_name='username',
        label='User name',
    )

    class Meta:
        model = ObjectChange
        fields = [
            'id',
            'user',
            'user_name',
            'request_id',
            'action',
            'changed_object_type_id',
            'changed_object_id',
            'object_repr',
        ]

    def search(self, queryset, name, value):
        if not value.strip():
            return queryset
        return queryset.filter(
            Q(user_name__icontains=value) | Q(object_repr__icontains=value))
Esempio n. 2
0
class RateFilter(django_filters.FilterSet):
    ordering = django_filters.OrderingFilter(
        label='Ordering',
        choices=(
            ('created', 'Date (ascending)'),
            ('-created', 'Date (descending)'),
            ('sale', 'Currency sale (ascending)'),
            ('-sale', 'Currency sale (descending)'),
            ('buy', 'Currency buy (ascending)'),
            ('-buy', 'Currency buy (descending)'),
        ),
    )
    created = django_filters.DateTimeFromToRangeFilter(
        label='Date range',
        field_name='created',
        lookup_expr='date',
        widget=DateRangeWidget(attrs={
            'class': 'form-control datetimepicker-input',
            'type': 'date',
        }))

    class Meta:
        model = Rate
        fields = '__all__'
class CurrentFilter(django_filters.FilterSet):
    #datetimeval = django_filters.DateTimeFromToRangeFilter(widget=SplitDateTimeWidget())
    datetimeval = django_filters.DateTimeFromToRangeFilter(
        widget=SplitDateTimeWidget(attrs={'type': 'date'}))
    datetimeval.label = 'Διάστημα '

    status_ok = django_filters.BooleanFilter(
        widget=django_filters.widgets.BooleanWidget())

    #country_id = django_filters.NumberFilter(method='country_id')

    ##    aaa=Country.objects.filter(countryft=1)
    ##    ccc=[]
    ##    for x in aaa.values():
    ##        print(x['id'],x['name'])
    ##        ccc.append((int(x['id']),x['name'].strip()))

    #    country_id = django_filters.MultipleChoiceFilter(choices=ccc)

    class Meta:
        model = ModelClassName
        exclude = ('id', )
        fields = {
            'datetimeval': [],
            'metric_id': [
                'exact',
            ],
            'metric_id__metric_category': [
                'exact',
            ],
            'country_id': [
                'exact',
            ],
            ##            'country_id': [],
            'status_ok': [],
        }
Esempio n. 4
0
class CustomerFilter(django_filters.FilterSet):
    entry_timestamp = django_filters.DateTimeFromToRangeFilter(
        label='Customer Date Filter',
        widget=CustomDateTimeRangeWidget()
    )

    class Meta:
        model = Customer
        fields = ['entry_timestamp']

    @property
    def qs(self):
        parent_qs = super(CustomerFilter, self).qs
        if not self.request:
            raise ValueError('request object is required. Pass request as kwargs when initializing Filter.')

        if self.request.user.has_perm('alter_all_customer_data'):
            return parent_qs

        if not hasattr(self.request.user, 'organization'):
            raise Http404('User manages no organization!!!')

        organization = self.request.user.organization
        return parent_qs.filter(organization=organization.id)
Esempio n. 5
0
class ObjectChangeFilterSet(BaseFilterSet):
    q = django_filters.CharFilter(
        method="search",
        label="Search",
    )
    time = django_filters.DateTimeFromToRangeFilter()
    changed_object_type = ContentTypeFilter()
    user_id = django_filters.ModelMultipleChoiceFilter(
        queryset=get_user_model().objects.all(),
        label="User (ID)",
    )
    user = django_filters.ModelMultipleChoiceFilter(
        field_name="user__username",
        queryset=get_user_model().objects.all(),
        to_field_name="username",
        label="User name",
    )

    class Meta:
        model = ObjectChange
        fields = [
            "id",
            "user",
            "user_name",
            "request_id",
            "action",
            "changed_object_type_id",
            "changed_object_id",
            "object_repr",
        ]

    def search(self, queryset, name, value):
        if not value.strip():
            return queryset
        return queryset.filter(
            Q(user_name__icontains=value) | Q(object_repr__icontains=value))
Esempio n. 6
0
class ObjectChangeFilter(django_filters.FilterSet):
    q = django_filters.CharFilter(
        method='search',
        label='Search',
    )
    time = django_filters.DateTimeFromToRangeFilter()

    class Meta:
        model = ObjectChange
        fields = [
            'user',
            'user_name',
            'request_id',
            'action',
            'changed_object_type',
            'changed_object_id',
            'object_repr',
        ]

    def search(self, queryset, name, value):
        if not value.strip():
            return queryset
        return queryset.filter(
            Q(user_name__icontains=value) | Q(object_repr__icontains=value))
Esempio n. 7
0
class SampleEventFilterSet(BaseAPIFilterSet):
    sample_date = django_filters.DateTimeFromToRangeFilter(field_name="sample_date")

    class Meta:
        model = SampleEvent
        fields = ['site', 'management', 'sample_date']
Esempio n. 8
0
class PackFilter(django_filters.rest_framework.FilterSet):
    time = django_filters.DateTimeFromToRangeFilter()

    class Meta:
        model = CurrentSignalPack
        fields = ['time','motor', ]
Esempio n. 9
0
class MainRequestFilter(HelpfulFilterSet):
    number = django_filters.NumberFilter(
        label='№',
        lookup_expr='exact',
        widget=NumberInput(attrs={'new_line': 'true'}))
    input_datetime = django_filters.DateTimeFromToRangeFilter(
        label='Дата вводда',
        lookup_expr='range',
        widget=MyRangeWidget(attrs={
            'display': 'inline',
            'class': 'datepicker-need'
        }))
    input_user = django_filters.ModelChoiceFilter(
        label='Пользователь',
        lookup_expr='exact',
        queryset=Profile.objects.filter())

    request_dateTime = django_filters.DateTimeFromToRangeFilter(
        label='Дата подачи заявки',
        lookup_expr='range',
        widget=MyRangeWidget(attrs={
            'display': 'inline',
            'class': 'datepicker-need'
        }))
    request_user = django_filters.ModelChoiceFilter(
        label='Подал',
        lookup_expr='exact',
        queryset=Profile.objects.filter(),
        help_text='Можно ввести с клавиатуры')
    request_outer_User = django_filters.CharFilter(label='')

    receive_dateTime = django_filters.DateTimeFromToRangeFilter(
        label='Дата принятия',
        lookup_expr='rangdbe',
        widget=MyRangeWidget(attrs={
            'display': 'inline',
            'class': 'datepicker-need'
        }))
    receive_user = django_filters.ModelChoiceFilter(
        label='Принял', lookup_expr='exact', queryset=Profile.objects.filter())

    close_dateTime = django_filters.DateTimeFromToRangeFilter(
        label='Дата закрытия',
        lookup_expr='range',
        widget=MyRangeWidget(attrs={
            'display': 'inline',
            'class': 'datepicker-need'
        }))

    close_user = django_filters.ModelChoiceFilter(
        label='Закрыл', lookup_expr='exact', queryset=Profile.objects.filter())
    place = django_filters.ModelChoiceFilter(label='Место',
                                             lookup_expr='exact',
                                             queryset=Places.objects.all())
    close_user__isnull = django_filters.BooleanFilter(name='close_user',
                                                      label='Только закрытые',
                                                      lookup_expr='isnull',
                                                      exclude=True)
    departure__end_datetime__isnull = django_filters.BooleanFilter(
        name='departure__end_datetime',
        label='Только с незакрытыми выездами',
        lookup_expr='isnull',
        method='filter_departures_not_closed')

    def filter_departures_not_closed(self, queryset, name, value):
        # construct the full lookup expression.
        lookup = '__'.join([name, 'isnull'])
        l2 = '__'.join(['departure__id', 'isnull'])
        ll = ','.join([lookup, l2])
        print(value)
        if value:
            return queryset.filter(departure__id__isnull=False,
                                   departure__end_datetime__isnull=True)
        else:
            return queryset
        #return queryset.filter(**{lookup: False})

        # alternatively, it may not be necessary to construct the lookup.
        return queryset.filter(published_on__isnull=False)

    class Meta:
        model = MainRequest
        fields = [
            'number', 'input_datetime', 'input_user', 'request_dateTime',
            'request_user'
        ]

        filter_overrides = {
            models.BooleanField: {
                'filter_class': django_filters.BooleanFilter,
                'extra': lambda f: {
                    'widget': CheckboxInput,
                },
            },
        }
Esempio n. 10
0
class GeneratedCerticatesFilter(BaseDataApiFilter):
    """
    TODO: add me
    """
    DOWNLOADABLE = 'downloadable'
    ALL = 'all'

    site = django_filters.CharFilter(field_name="user__usersignupsource__site",
                                     lookup_expr='iexact')
    username = django_filters.CharFilter(field_name="user__username",
                                         lookup_expr='icontains')
    created_date = django_filters.DateTimeFromToRangeFilter()
    course_id = django_filters.CharFilter(method="filter_course_id")
    status = django_filters.CharFilter(method="filter_status")
    grade = django_filters.CharFilter()
    mode = django_filters.CharFilter()

    def filter_course_id(self, queryset, name, value):
        """
        This custom filter was created to enable filtering by course_id.
        See common.djangoapps.xmodule_django.models
        When doing queries over opaque fields, we need to instance the
        KEY_CLASS of the field with the query string first, and then pass
        this instance to the queryset filter.
        In this case, the KEY_CLASS for course_id field is CourseKey
        """
        if value:
            # CourseKey instance creation will fail if course does not exist
            try:
                # Instantiating CourseKey of the field with query string
                instance = CourseKey.from_string(str(value))
                # Passing instance to queryset filter
                return queryset.filter(course_id=instance)
            except Exception:  # pylint: disable=broad-except
                # If CourseKey instantiation fails, return an empty queryset
                return queryset.none()

        return queryset

    def filter_status(self, queryset, name, value):
        """
        This custom filter was created to return a queryset
        where certificates have downloadable status or
        another queryset with all available certificates.
        """
        if value:
            if value == self.DOWNLOADABLE:
                return queryset.filter(status=value)
            if value == self.ALL:
                return queryset.exclude(status=self.DOWNLOADABLE)

        return queryset

    class Meta:
        """
        TODO: add me
        """
        model = get_generated_certificate()
        fields = [
            'id', 'course_id', 'grade', 'mode', 'username', 'status', 'site',
            'created_date'
        ]
Esempio n. 11
0
class TripFilter(django_filters.FilterSet):
    route_name__price__gte = django_filters.NumberFilter(
        field_name='route_name',
        lookup_expr='price__gte',
        label='Минимальная цена')
    route_name__price__lte = django_filters.NumberFilter(
        field_name='route_name',
        lookup_expr='price__lte',
        label='Максимальная цена')
    country = django_filters.ModelChoiceFilter(
        queryset=Country.objects.all(),
        method='search_trips_by_countries',
        label='Страна')
    date_range = django_filters.DateTimeFromToRangeFilter(
        widget=django_filters.widgets.RangeWidget(
            attrs={'placeholder': 'yyyy-mm-dd hh:mm'}),
        method='search_trips_by_range',
        label="Сроки")
    transport = django_filters.ModelChoiceFilter(
        queryset=Transport.objects.all(),
        method='exclude_transport',
        label='Исключить транспорт')
    hot_trips = django_filters.BooleanFilter(field_name='hot_trips',
                                             method='show_hot_trips',
                                             label='Горячие путевки')
    order_f = django_filters.OrderingFilter(label='Сортировка',
                                            fields=(('route_name__price',
                                                     'route_name__price'), ),
                                            field_labels={
                                                'route_name__price': 'Цена',
                                            })

    class Meta:
        model = Trip
        fields = [
            'route_name__price__gte', 'route_name__price__lte', 'country',
            'date_range', 'transport', 'hot_trips', 'order_f'
        ]

    def search_trips_by_countries(self, queryset, name, value):
        routes = queryset.values('route_name')
        moves = Move.objects.filter(route__in=routes).filter(
            city__country=value)
        return queryset.filter(route_name__in=moves.values('route'))

    def search_trips_by_range(self, queryset, name, value):
        routes = queryset.values('route_name')
        moves = Move.objects.filter(
            route__in=routes).order_by('departure_time')
        start_date = value.start
        stop_date = value.stop
        country = self.form.cleaned_data['country']

        departure_time = None
        arrival_time = None
        new_move = moves
        for move in moves:
            departure_time = move.departure_time
            if arrival_time and (not country or country and country == move.city.country) \
                and arrival_time <= start_date and stop_date <= departure_time:
                pass
            else:
                new_move = new_move.exclude(id=move.id)
            arrival_time = move.arrival_time

        return queryset.filter(route_name__in=new_move.values('route'))

    def exclude_transport(self, queryset, name, value):
        routes = queryset.values('route_name')
        moves = Move.objects.filter(route__in=routes)

        new_move = moves.filter(transport=value)

        return queryset.exclude(route_name__in=new_move.values('route'))

    def show_hot_trips(self, queryset, name, value):
        now = datetime.datetime.now()
        now += datetime.timedelta(days=5)

        if value:
            return queryset.filter(departure_time__lte=now)
        else:
            return queryset.exclude(departure_time__lte=now)
Esempio n. 12
0
class SharerSearchFilter(django_filters.FilterSet):
    arrival_between = django_filters.DateTimeFromToRangeFilter(field_name='arrival', label='Arrival(Between)')

    class Meta:
        model = Ride
        fields = ['address']
Esempio n. 13
0
class CommentFilter(django_filters.FilterSet):
    created_at = django_filters.DateTimeFromToRangeFilter()

    class Meta:
        model = Comment
        fields = ['movie', 'created_at']