コード例 #1
0
ファイル: base.py プロジェクト: data-mermaid/mermaid-api
class BaseAPIFilterSet(FilterSet):
    created_on = DateTimeFromToRangeFilter()
    updated_on = DateTimeFromToRangeFilter()
    created_by = NullableUUIDFilter()
    updated_by = NullableUUIDFilter()

    class Meta:
        fields = ["created_on", "updated_on", "created_by", "updated_by"]
コード例 #2
0
class ReadingEntryFilter(filters.FilterSet):
    read = DateTimeFromToRangeFilter()
    created_at = DateTimeFromToRangeFilter()
    feed = NumberFilter(name='article__feed')

    class Meta:
        model = ReadingEntry
        fields = ['read', 'created_at', 'feed']
コード例 #3
0
class OrderFilter(filters.FilterSet):
    """Фильтры для товаров."""

    created_at = DateTimeFromToRangeFilter()
    updated_at = DateTimeFromToRangeFilter()

    class Meta:
        model = Order
        fields = ['status', 'created_at', 'updated_at', 'amount']
コード例 #4
0
class PostFilter(FilterSet):
    published_date = DateTimeFromToRangeFilter(widget=RangeWidget(
        attrs={"placeholder": "dd/mm/yyyy hh:mm"}))
    updated_date = DateTimeFromToRangeFilter(widget=RangeWidget(
        attrs={"placeholder": "dd/mm/yyyy hh:mm"}))

    class Meta:
        model = Post
        fields = ("title", "slug", "author__name", "published_date",
                  "updated_date")
コード例 #5
0
class RoleFilter(FilterSet):
    start_date = DateTimeFromToRangeFilter()
    end_date = DateTimeFromToRangeFilter()
    is_active = CharFilter(method="filter_is_active")
    permission = MultipleChoiceFilter(
        choices=zip(Role.PERMISSION_NAMES, Role.PERMISSION_NAMES),
        method="filter_permission",
    )

    class Meta:
        model = Role
        fields = (
            "start_date",
            "end_date",
            "user",
            "association",
            "is_active",
            "permission",
        )

    def filter_is_active(self, queryset, _, value):
        condition = Q(start_date__lte=date.today()) & (
            Q(end_date__isnull=True) | Q(end_date__gt=date.today())
        )

        if value.lower() == "true" or len(value) == 0:
            return queryset.filter(condition)
        else:
            return queryset.exclude(condition)

    def filter_permission(self, queryset, _, permissions_filter):
        """Filter by active permission."""

        # No filter or every filter.
        if (
            len(permissions_filter) == 0
            or len(permissions_filter) == Role.PERMISSION_NAMES
        ):
            return queryset

        # Looks like the canonical way to get an "always False" condition:
        # https://stackoverflow.com/questions/35893867/always-false-q-object
        condition = Q(pk__in=[])

        for permission_name in Role.PERMISSION_NAMES:
            if permission_name in permissions_filter:
                condition |= Q(
                    **{
                        f"{permission_name}_permission": True,
                        "start_date__lte": date.today(),
                    }
                ) & (Q(end_date__isnull=True) | Q(end_date__gt=date.today()))

        return queryset.filter(condition).distinct()
コード例 #6
0
ファイル: api.py プロジェクト: MerlMer/exist-1
class vulnFilter(FilterSet):
    vulndb_published_date = DateTimeFromToRangeFilter()
    vulndb_last_modified = DateTimeFromToRangeFilter()
    cve = CharFilter(field_name='nvds__id')
    tag = ModelMultipleChoiceFilter(field_name='tags__name',
                                    to_field_name='name',
                                    queryset=Tag.objects.all(),
                                    conjoined=True)

    class Meta:
        model = Vuln
        fields = ['vulndb_published_date', 'vulndb_last_modified']
コード例 #7
0
class BaseAPIFilterSet(FilterSet):
    created_on = DateTimeFromToRangeFilter()
    updated_on = DateTimeFromToRangeFilter()
    created_by = NullableUUIDFilter()
    updated_by = NullableUUIDFilter()

    class Meta:
        fields = [
            'created_on',
            'updated_on',
            'created_by',
            'updated_by',
        ]
コード例 #8
0
class SentMessageFilter(FilterSet):
    prefix = 'sent'

    BOOLE_CHOICES = ((True, 'Only Archived'), (False, 'Only Not Archived'))

    time_sent = DateTimeFromToRangeFilter()
    recipient = CharFilter(field_name='recipient__user__name',
                           label='To',
                           method='filter_recipient',
                           lookup_expr='icontains')
    unread = ChoiceFilter(field_name='unread',
                          label='Read?',
                          choices=((True, 'Unread Only'), (False, 'Read Only')))
    subject = CharFilter(field_name='subject', lookup_expr='icontains')
    high_priority = ChoiceFilter(label='High Pri?',
                                 choices=((True, 'High Pri'), (False, 'Normal')))

    def filter_recipient(self, queryset, name, value):
        return queryset.annotate(slug=Concat(
            'recipient__user__username',
            Value('-'),
            'recipient__user__first_name',
            Value(' '),
            'recipient__user__last_name',
        )).filter(slug__icontains=value)

    def __init__(self, data=None, *args, **kwargs):
        newdict = data.dict()
        super(SentMessageFilter, self).__init__(newdict, *args, **kwargs)
        self.filters['high_priority'].extra.update({'empty_label': 'Any Pri'})
        self.filters['unread'].extra.update({'empty_label': 'Read/Unread'})

    class Meta:
        fields = ['time_sent', 'recipient', 'subject', 'unread', 'high_priority']
コード例 #9
0
ファイル: filters.py プロジェクト: KamilOblej/PracaDyplomowa
class PhotosFilter(django_filters.FilterSet):
    start_date = DateTimeFromToRangeFilter(field_name='date_taken')

    class Meta:
        model = Photo
        fields = '__all__'
        exclude = ['image', 'name', 'date_taken']
コード例 #10
0
ファイル: filters.py プロジェクト: lzn/SendMail
class EmailFilter(filters.FilterSet):
    date = DateTimeFromToRangeFilter()
    sent = BooleanFilter(field_name='sent_date',  lookup_expr='isnull', exclude=True, label="Email Sent?")

    class Meta:
        model = Email
        fields = ['date', 'sent_date', 'sent']
コード例 #11
0
class AllFiltersFilterSet(FilterSet):
    number_AllValuesFilter = AllValuesFilter(field_name='number', lookup_expr='exact')
    number_AllValuesMultipleFilter_OR = AllValuesMultipleFilter(field_name='number', lookup_expr='exact', conjoined=False)  # OR
    number_AllValuesMultipleFilter_AND = AllValuesMultipleFilter(field_name='number', lookup_expr='exact', conjoined=True)  # AND
    number_BaseCSVFilterNumber = BaseCSVFilterNumber(field_name='number', lookup_expr='in')
    number_BaseInFilterNumber = BaseInFilterNumber(field_name='number', lookup_expr='in')
    number_BaseRangeFilterNumber = BaseRangeFilterNumber(field_name='number', lookup_expr='range')
    is_true_BooleanFilter = BooleanFilter(field_name='is_true', lookup_expr='exact')
    text_CharFilter = CharFilter(field_name='text', lookup_expr='exact')
    number_ChoiceFilter = ChoiceFilter(field_name='number', lookup_expr='exact', choices=NUMBER_CHOICES)
    date_DateFilter = DateFilter(field_name='date', lookup_expr='exact')
    date_DateFromToRangeFilter = DateFromToRangeFilter(field_name='date', lookup_expr='range')
    date_DateRangeFilter = DateRangeFilter(field_name='date', lookup_expr='exact')
    date_time_DateTimeFilter = DateTimeFilter(field_name='date_time', lookup_expr='exact')
    date_time_DateTimeFromToRangeFilter = DateTimeFromToRangeFilter(field_name='date_time', lookup_expr='range')
    duration_DurationFilter = DurationFilter(field_name='duration', lookup_expr='exact')
    iso_date_time_IsoDateTimeFilter = IsoDateTimeFilter(field_name='iso_date_time', lookup_expr='lt')
    iso_date_time_IsoDateTimeFromToRangeFilter = IsoDateTimeFromToRangeFilter(field_name='iso_date_time', lookup_expr='range')
    number_MultipleChoiceFilter_OR = MultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=False, choices=NUMBER_CHOICES)
    number_MultipleChoiceFilter_AND = MultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=True, choices=NUMBER_CHOICES)
    number_NumberFilter = NumberFilter(field_name='number', lookup_expr='exact')
    number_OrderingFilter = OrderingFilter(fields=('number', 'number'))
    number_RangeFilter = RangeFilter(field_name='number', lookup_expr='range')
    time_TimeFilter = TimeFilter(field_name='time', lookup_expr='exact')
    time_TimeRangeFilter = TimeRangeFilter(field_name='time', lookup_expr='range')
    number_TypedChoiceFilter = TypedChoiceFilter(field_name='number', lookup_expr='exact', choices=NUMBER_CHOICES)
    text_TypedMultipleChoiceFilter_OR = TypedMultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=False, choices=NUMBER_CHOICES)
    text_TypedMultipleChoiceFilter_AND = TypedMultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=True, choices=NUMBER_CHOICES)
    uuid_UUIDFilter = UUIDFilter(field_name='uuid', lookup_expr='exact')
    number_LookupChoiceFilter = LookupChoiceFilter(field_name='number')

    class Meta:
        model = BenchmarkModel
        exclude = ['number', 'text', 'is_true', 'date', 'date_time', 'duration']
    class DateTimeFromToRangeFilterSet(FilterSet):
        date_time = DateTimeFromToRangeFilter(field_name='date_time',
                                              lookup_expr=lookup_xpr)

        class Meta:
            model = DateTimeFromToRangeFilterModel
            fields = ['date_time']
コード例 #13
0
ファイル: filterclass.py プロジェクト: RonDingDing/Python
class OrderFilter(filters.FilterSet):
    member = CharFilter(field_name='member__name', lookup_expr='contains')
    sale_time = DateTimeFromToRangeFilter(field_name='sale_time')

    class Meta:
        model = Order
        fields = ['sale_time', 'member']
コード例 #14
0
class ReviewFilter(filters.FilterSet):
    """Фильтры для товаров."""

    created_at = DateTimeFromToRangeFilter()

    class Meta:
        model = Review
        fields = ['creator', 'product', 'created_at']
コード例 #15
0
class RoleFilter(FilterSet):
    start_date = DateTimeFromToRangeFilter()
    end_date = DateTimeFromToRangeFilter()
    is_active = CharFilter(method="filter_is_active")

    class Meta:
        model = Role
        fields = ("start_date", "end_date", "user", "association", "is_active")

    def filter_is_active(self, queryset, _, value):
        condition = Q(start_date__lte=date.today()) & (
            Q(end_date__isnull=True) | Q(end_date__gt=date.today()))

        if value.lower() == "true" or len(value) == 0:
            return queryset.filter(condition)
        else:
            return queryset.exclude(condition)
コード例 #16
0
class WeatherFilter(django_filters.rest_framework.FilterSet):
    datetime = DateTimeFromToRangeFilter(
        lookup_expr=("icontains"),
        widget=RangeWidget(attrs={"type": "datetime-local"}))

    class Meta:
        model = WeatherForecast
        fields = ("datetime", )
コード例 #17
0
class threatAttrFilter(FilterSet):
    timestamp = DateTimeFromToRangeFilter()
    value = CharFilter(field_name='value', lookup_expr='iexact')
    type = CharFilter(field_name='type')

    class Meta:
        model = Attribute
        fields = ['id', 'timestamp', 'event__id']
    class PropertyDateTimeFromToRangeFilterSet(PropertyFilterSet):
        date_time = DateTimeFromToRangeFilter(field_name='date_time',
                                              lookup_expr=lookup_xpr)
        prop_date_time = PropertyDateTimeFromToRangeFilter(
            field_name='prop_date_time', lookup_expr=lookup_xpr)

        class Meta:
            model = DateTimeFromToRangeFilterModel
            fields = ['prop_date_time']
コード例 #19
0
ファイル: filterclass.py プロジェクト: RonDingDing/Python
class CostFilter(filters.FilterSet):
    name = CharFilter(field_name='name', lookup_expr='contains')
    costtype = CharFilter(field_name='costtype__name', lookup_expr='contains')
    buy_time = DateTimeFromToRangeFilter(field_name='buy_time')
    price = RangeFilter(field_name='_price')

    class Meta:
        model = Cost
        fields = ['name', 'costtype', 'buy_time', '_price']
コード例 #20
0
class CryptoCurrencyFilter(FilterSet):
    created_at = DateTimeFromToRangeFilter(name='created_at')

    class Meta:
        model = CryptoCurrency
        fields = [
            'bot',
            'created_at',
        ]
コード例 #21
0
class FullReceivedMessageFilter(FilterSet):
    prefix = 'received'

    BOOLE_CHOICES = ((True, 'Only Archived'), (False, 'Only Not Archived'))
    HANDLED_CHOICES = ((True, 'Only Handled'), (False, 'Only Unhandled'))

    time_sent = DateTimeFromToRangeFilter()
    sender = CharFilter(field_name='sender__user__name',
                        label='Frxom',
                        method='filter_sender',
                        lookup_expr='icontains')
    unread = ChoiceFilter(field_name='unread',
                          label='Read?',
                          choices=((True, 'Unread Only'), (False, 'Read Only')))
    archived = ChoiceFilter(field_name='archived',
                            label='Archived?',
                            choices=BOOLE_CHOICES,
                            initial=False)
    subject = CharFilter(field_name='subject', lookup_expr='icontains')
    handled = ChoiceFilter(field_name='handled', label='Handled?', choices=HANDLED_CHOICES)
    high_priority = ChoiceFilter(label='High Pri?',
                                 choices=((True, 'High Pri'), (False, 'Normal')))

    def filter_recipient(self, queryset, name, value):
        return queryset.annotate(slug=Concat(
            'recipient__user__username',
            Value('-'),
            'recipient__user__first_name',
            Value(' '),
            'recipient__user__last_name',
        )).filter(slug__icontains=value)

    def filter_sender(self, queryset, name, value):
        return queryset.annotate(slug=Concat(
            'sender__user__username',
            Value('-'),
            'sender__user__first_name',
            Value(' '),
            'sender__user__last_name',
        )).filter(slug__icontains=value)

    def __init__(self, data=None, *args, **kwargs):
        newdict = data.dict()
        if len(newdict) == 0:
            newdict[f'{self.prefix}-archived'] = False
        super(FullReceivedMessageFilter, self).__init__(newdict, *args, **kwargs)

        self.filters['high_priority'].extra.update({'empty_label': 'Any Pri'})
        self.filters['unread'].extra.update({'empty_label': 'Read/Unread'})
        self.filters['archived'].extra.update({'empty_label': 'Archived?'})
        self.filters['handled'].extra.update({'empty_label': 'Handled?'})

    class Meta:
        fields = [
            'time_sent', 'sender', 'subject', 'unread', 'high_priority', 'handled', 'archived'
        ]
コード例 #22
0
class RequestFilter(django_filters.FilterSet):
    created = DateFilter(field_name='created',
                         lookup_expr='icontains',
                         label='Created',
                         widget=DateInput(attrs={'type': 'date'}))
    created_range = DateTimeFromToRangeFilter(
        field_name='created',
        lookup_expr='icontains',
        label='Created Range',
        widget=RangeWidget(attrs={'type': 'datetime-local'}))
    fulfilled = DateFilter(field_name='fulfilled',
                           lookup_expr='icontains',
                           label='Fulfilled',
                           widget=DateInput(attrs={'type': 'date'}))
    fulfilled_range = DateTimeFromToRangeFilter(
        field_name='fulfilled',
        lookup_expr='icontains',
        label='Fulfilled Range',
        widget=RangeWidget(attrs={'type': 'datetime-local'}))
    reopened = NumberFilter(field_name='reopened',
                            lookup_expr='exact',
                            label='Reopened Count')
    reopened_range = RangeFilter(field_name='reopened',
                                 lookup_expr='icontains',
                                 label='Reopened Count Range')

    #Set choices for select fields
    assignee = MultipleChoiceFilter(choices=get_all_customer_choices())
    assignment_group = MultipleChoiceFilter(
        choices=get_assignment_group_choices())
    customer = MultipleChoiceFilter(choices=get_all_customer_choices())
    location = MultipleChoiceFilter(choices=get_all_location_choices())
    priority = MultipleChoiceFilter(choices=get_priority_choices())
    status = MultipleChoiceFilter(choices=get_status_choices(
        ticket_type=TicketType.objects.get(name='Request')))

    class Meta:
        model = Request
        fields = '__all__'
        exclude = [
            'sysID',
            'ticket_type',
        ]
コード例 #23
0
class DadoFilter(django_filters.FilterSet):
    date_range = DateTimeFromToRangeFilter(
        field_name='date',
        widget=RangeWidget(attrs={'placeholder': 'DD/MM/YYYY hh:mm'}))

    sensor = ModelChoiceFilter(queryset=dispositivo)

    class Meta:
        model = Dado
        fields = ['valor_char', 'valor_int']
コード例 #24
0
class threatEventFilter(FilterSet):
    publish_timestamp = DateTimeFromToRangeFilter()
    attr = CharFilter(method='getEventsByAttribute', label='attr')

    class Meta:
        model = Event
        fields = ['id', 'publish_timestamp', 'threat_level_id']

    def getEventsByAttribute(self, queryset, name, value):
        events = Attribute.objects.filter(
            Q(value__icontains=value)).values_list('event')
        return queryset.filter(id__in=events)
コード例 #25
0
ファイル: filters.py プロジェクト: Itech-org/ITSchoolProject
class StudyRequestFilter(django_filters.FilterSet):
    SPECIALIST_CHOICES = [(m.id, m.last_name + m.first_name) for m in AdvUser.objects.filter(groups__name='Manager')]
    STATUS_CHOICES = (
        ('Ready', 'Ready'),
        ('In Progress', 'In Progress'),
        ('Denial', 'Denial'),
    )
    enter_date = DateTimeFromToRangeFilter(widget=RangeWidget(attrs={'class': 'form-control mb-2', 'placeholder': 'dd.mm.yyyy'}))
    specialist = django_filters.ChoiceFilter(choices=SPECIALIST_CHOICES, widget=widgets.Select(attrs = {'class': 'form-control mb-2', 'placeholder': 'Специалист'}))
    status = django_filters.ChoiceFilter(choices=STATUS_CHOICES, widget=widgets.Select(attrs = {'class': 'form-control mb-2', 'placeholder': 'Статус'}))
    class Meta:
        model = StudyRequest
        fields = ['enter_date', 'specialist', "status"]
コード例 #26
0
class EventFilter(FilterSet):
    # https://django-filter.readthedocs.io/en/latest/guide/usage.html#declaring-filters

    start = DateTimeFromToRangeFilter(field_name="occurrences__start")
    category = ModelMultipleChoiceFilter(
        field_name="categories__name",
        to_field_name="name",
        queryset=EventCategory.objects.all(),
    )
    tag = ModelMultipleChoiceFilter(field_name="tags__name",
                                    to_field_name="name",
                                    queryset=Tag.objects.all())

    class Meta:
        model = Event
        fields = ["occurrences__start", "category", "tag"]
コード例 #27
0
class CurrencyHistoryFilterSet(rest_framework.FilterSet):
    """Currency History FilterSet"""

    hour: rest_framework.NumberFilter = rest_framework.NumberFilter(
        method="filter_hour",
        label="Hour",
    )

    date_range: DateTimeFromToRangeFilter = DateTimeFromToRangeFilter(
        method="filter_date_range",
        label="Date range",
        widget=DateRangeWidget(attrs={"type": "date"}),
    )

    date_: rest_framework.DateFilter = rest_framework.DateFilter(
        method="filter_date",
        label="Date",
    )

    class Meta:
        """Meta."""

        model: Type[CurrencyHistory] = CurrencyHistory
        fields: Dict[str, List[str]] = {
            "currency": ["exact"],
        }

    def filter_hour(self, queryset: QuerySet, name: str,
                    value: int) -> QuerySet:
        """Filter history by hour"""
        return queryset.filter(creation_date__hour=value)

    def filter_date_range(self, queryset: QuerySet, name: str,
                          value: slice) -> QuerySet:
        """Filter history between to dates"""
        return queryset.filter(creation_date__gte=value.start,
                               creation_date__lte=value.stop)

    def filter_date(self, queryset: QuerySet, name: str,
                    value: date) -> QuerySet:
        """Filter history by date"""
        return queryset.filter(
            creation_date__day=value.day,
            creation_date__year=value.year,
            creation_date__month=value.month,
        )
コード例 #28
0
ファイル: filters.py プロジェクト: Itech-org/ITSchoolProject
class StudyRequestFilter(django_filters.FilterSet):
    SPECIALIST_CHOICES = [(m.id, m.last_name + m.first_name) for m in AdvUser.objects.filter(groups__name='Manager')]
    STATUS_CHOICES = (
        ('Ready', 'Готов к договору'),
        ('In Progress', 'В процессе'),
        ('Denial', 'Отказ'),
    )
    enter_date = DateTimeFromToRangeFilter(widget=RangeWidget(attrs={'type': 'date',
                                                                     'class': 'main-header__button-change-speciality'}))
    specialist = django_filters.ChoiceFilter(
        choices=SPECIALIST_CHOICES, widget=widgets.Select(attrs = {'class': 'main-header__button-change-speciality',
                                                                   'placeholder': 'Специалист'}))
    status = django_filters.ChoiceFilter(
        choices=STATUS_CHOICES, widget=widgets.Select(attrs = {'class': 'main-header__button-change-speciality',
                                                               'placeholder': 'Статус'}))
    class Meta:
        model = StudyRequest
        fields = ['enter_date', 'specialist', "status"]
コード例 #29
0
ファイル: views.py プロジェクト: TOMToolkit/tom_base
class ObservationFilter(FilterSet):
    """
    Defines the available fields for filtering the list of ``ObservationRecord`` objects.
    """
    ordering = OrderingFilter(fields=[
        'scheduled_start', 'scheduled_end', 'status', 'created', 'modified'
    ])
    scheduled_start = DateTimeFromToRangeFilter()
    scheduled_end = DateTimeFromToRangeFilter
    observationgroup = ModelMultipleChoiceFilter(
        label='Observation Groups', queryset=ObservationGroup.objects.all())

    class Meta:
        model = ObservationRecord
        fields = [
            'ordering', 'observation_id', 'target_id', 'observationgroup',
            'facility', 'status'
        ]
コード例 #30
0
class UserFilterAPI(FilterSet):
    date_joined = DateTimeFromToRangeFilter(
        label='Date joined range',
        field_name='created',
        lookup_expr='date',
        widget=DateRangeWidget(attrs={
            'class': 'form-control datetimepicker-input',
            'type': 'date',
        }))
    is_active = BooleanFilter()
    user_id = BaseInFilter(field_name='id', label='User id')

    class Meta:
        model = User
        fields = {
            'email': ['icontains'],
            'first_name': ['icontains'],
            'last_name': ['icontains'],
        }