예제 #1
0
class WorkerFilter(BaseFilterSet):
    name = filters.CharFilter()
    last_heartbeat = IsoDateTimeFilter()
    online = filters.BooleanFilter(method="filter_online")
    missing = filters.BooleanFilter(method="filter_missing")

    class Meta:
        model = Worker
        fields = {
            "name": NAME_FILTER_OPTIONS,
            "last_heartbeat": DATETIME_FILTER_OPTIONS,
            "online": ["exact"],
            "missing": ["exact"],
        }

    def filter_online(self, queryset, name, value):
        online_workers = Worker.objects.online_workers()

        if value:
            return queryset.filter(pk__in=online_workers)
        else:
            return queryset.exclude(pk__in=online_workers)

    def filter_missing(self, queryset, name, value):
        missing_workers = Worker.objects.missing_workers()

        if value:
            return queryset.filter(pk__in=missing_workers)
        else:
            return queryset.exclude(pk__in=missing_workers)
예제 #2
0
파일: task.py 프로젝트: jerrykan/pulpcore
class WorkerFilter(BaseFilterSet):
    name = filters.CharFilter()
    last_heartbeat = IsoDateTimeFilter()
    online = filters.BooleanFilter(method='filter_online')
    missing = filters.BooleanFilter(method='filter_missing')

    class Meta:
        model = Worker
        fields = {
            'name': NAME_FILTER_OPTIONS,
            'last_heartbeat': DATETIME_FILTER_OPTIONS,
            'online': ['exact'],
            'missing': ['exact']
        }

    def filter_online(self, queryset, name, value):
        online_workers = Worker.objects.online_workers()

        if value:
            return queryset.filter(pk__in=online_workers)
        else:
            return queryset.exclude(pk__in=online_workers)

    def filter_missing(self, queryset, name, value):
        missing_workers = Worker.objects.missing_workers()

        if value:
            return queryset.filter(pk__in=missing_workers)
        else:
            return queryset.exclude(pk__in=missing_workers)
예제 #3
0
class RecipeFilterSet(LocalizationFilterSet):
    input_id = filters.NumberFilter(method="filter_input")
    output_id = filters.NumberFilter(method="filter_output")
    is_event = filters.BooleanFilter(method="filter_event")
    requires_backer = filters.BooleanFilter(method="filter_backer")

    class Meta:
        model = Recipe
        fields = [
            "machine",
        ]

    def filter_input(self, queryset, name, value):
        return queryset.filter(
            Q(levels__inputs__item__game_id=value)
            | Q(levels__inputs__group__members__game_id=value))

    def filter_output(self, queryset, name, value):
        return queryset.filter(output__game_id=value)

    def filter_event(self, queryset, name, value):
        if value:
            queryset = queryset.filter(required_event__isnull=False)
        elif value is False:
            queryset = queryset.filter(required_event__isnull=True)
        return queryset

    def filter_backer(self, queryset, name, value):
        if value:
            queryset = queryset.filter(required_backer_tier__isnull=False)
        elif value is False:
            queryset = queryset.filter(required_backer_tier__isnull=True)
        return queryset
예제 #4
0
class ItemFilterSet(LocalizationFilterSet):
    has_colors = filters.BooleanFilter(
        label=_("Filters out items with/without colors"),
        method="filter_colors",
    )

    has_metal_variants = filters.BooleanFilter(
        label=_("Filters out items with/without metal variants"),
        method="filter_metals",
    )

    has_world_colors = filters.BooleanFilter(
        label=_("Filters out items that vary from world to world with "
                "colors (rock, grass, wood, etc.)"),
        method="filter_world_colors",
    )

    class Meta:
        model = Item
        fields = [
            "string_id",
            "item_subtitle_id",
            "list_type__string_id",
            "is_resource",
        ]

    def filter_colors(self, queryset, name, value):
        if value:
            queryset = queryset.filter(game_id__in=get_block_color_item_ids())
        elif value is False:
            queryset = queryset.exclude(game_id__in=get_block_color_item_ids())

        return queryset

    def filter_metals(self, queryset, name, value):
        if value:
            queryset = queryset.filter(game_id__in=get_block_metal_item_ids())
        elif value is False:
            queryset = queryset.exclude(game_id__in=get_block_metal_item_ids())

        return queryset

    def filter_world_colors(self, queryset, name, value):
        if value:
            queryset = queryset.filter(
                game_id__in=get_world_block_color_item_ids())
        elif value is False:
            queryset = queryset.exclude(
                game_id__in=get_world_block_color_item_ids())

        return queryset
예제 #5
0
class AdminNewsFilter(FilterSet):
    current_verdict = filters.ChoiceFilter(field_name="current_verdict",
                                           choices=NEWS_FINAL_VERDICT_TYPES)
    is_duplicate = filters.BooleanFilter(field_name="is_duplicate")
    deleted = filters.BooleanFilter(field_name="deleted")
    is_sensitive = filters.BooleanFilter(field_name="is_sensitive")

    class Meta:
        model = News
        fields = (
            "current_verdict",
            "is_duplicate",
            "deleted",
            "is_sensitive",
        )
예제 #6
0
class Pulp2RepositoriesFilter(BaseFilterSet):
    """
    Filter for Pulp2Repositories ViewSet.
    """
    pulp2_repo_id = filters.CharFilter()
    is_migrated = filters.BooleanFilter()
    not_in_plan = filters.BooleanFilter()

    class Meta:
        model = Pulp2Repository
        fields = {
            'pulp2_repo_id': ['exact', 'in'],
            'is_migrated': ['exact'],
            'not_in_plan': ['exact']
        }
예제 #7
0
class UserNameListFilterSet(FilterSet):
    username = filters.CharFilter(lookup_expr='icontains', min_length=3)
    is_active = filters.BooleanFilter(field_name='is_active')
    profile_department_code = filters.ModelMultipleChoiceFilter(
        queryset=_get_department_queryset(),
        to_field_name='code',
        field_name='profile__departments__code')
예제 #8
0
class NewsVerifiedFilter(FilterSet):
    current_verdict = filters.ChoiceFilter(
        choices=NEWS_CURRENT_VERDICT_CHOICES)
    is_duplicate = filters.BooleanFilter(field_name="is_duplicate")
    is_about_corona_virus = filters.BooleanFilter(
        field_name="is_about_corona_virus")
    is_assigned_to_me = filters.BooleanFilter(field_name="is_assigned_to_me")

    class Meta:
        model = News
        fields = (
            "current_verdict",
            "is_duplicate",
            "is_about_corona_virus",
            "is_assigned_to_me",
        )
예제 #9
0
class Pulp2RepositoriesFilter(BaseFilterSet):
    """
    Filter for Pulp2Repositories ViewSet.
    """

    pulp2_repo_id = filters.CharFilter()
    is_migrated = filters.BooleanFilter()
    not_in_plan = filters.BooleanFilter()

    class Meta:
        model = Pulp2Repository
        fields = {
            "pulp2_repo_id": ["exact", "in"],
            "is_migrated": ["exact"],
            "not_in_plan": ["exact"],
        }
예제 #10
0
class FactCheckerNewsFilter(FilterSet):
    is_opined = filters.BooleanFilter(field_name="is_opined")
    origin = filters.ChoiceFilter(field_name="origin",
                                  choices=NewsOrigin.choices)

    class Meta:
        model = News
        fields = ("is_opined", "origin")
예제 #11
0
class ExpertNewsFilter(FilterSet):
    current_verdict = filters.ChoiceFilter(
        choices=NEWS_CURRENT_VERDICT_CHOICES)
    is_duplicate = filters.BooleanFilter(field_name="is_duplicate")
    is_about_corona_virus = filters.BooleanFilter(
        field_name="is_about_corona_virus")
    is_spam = filters.BooleanFilter(field_name="is_spam")
    is_sensitive = filters.BooleanFilter(field_name="is_sensitive")

    class Meta:
        model = News
        fields = (
            "current_verdict",
            "is_duplicate",
            "is_about_corona_virus",
            "is_spam",
            "is_sensitive",
        )
예제 #12
0
class MacFilter(FilterSet):

    naam = filters.CharFilter()
    eigenaar = filters.CharFilter()
    eigenaar__faillissement = filters.BooleanFilter()
    bezoekadres__correctie = filters.BooleanFilter()

    class Meta:
        model = models.MaatschappelijkeActiviteit

        fields = (
            'eigenaar',
            'naam',
            'bezoekadres__correctie',
            'eigenaar__faillissement',
        )

    ordering = ('id',)
class CrewUsersFilter(FilterSet):
    specialization = filters.ChoiceFilter(
        field_name="specialization", choices=UserSpecializationType.choices)
    created = filters.DateFromToRangeFilter(field_name="created_at")
    is_active = filters.BooleanFilter(field_name="is_active")

    class Meta:
        model = User
        fields = ("specialization", "created", "is_active")
class NewsVerifiedFilter(FilterSet):
    current_verdict = filters.ChoiceFilter(
        choices=NEWS_CURRENT_VERDICT_CHOICES)
    is_assigned_to_me = filters.BooleanFilter(field_name="is_assigned_to_me")
    is_duplicate = filters.BooleanFilter(field_name="is_duplicate")
    is_published = filters.BooleanFilter(field_name="is_published")
    origin = filters.ChoiceFilter(field_name="origin",
                                  choices=NewsOrigin.choices)

    class Meta:
        model = News
        fields = (
            "current_verdict",
            "is_assigned_to_me",
            "is_duplicate",
            "is_published",
            "origin",
        )
예제 #15
0
class AccessPolicyFilter(BaseFilterSet):
    """
    FilterSet for AccessPolicy.
    """

    customized = filters.BooleanFilter()

    class Meta:
        model = AccessPolicy
        fields = {"viewset_name": NAME_FILTER_OPTIONS, "customized": ["exact"]}
예제 #16
0
class ExpertNewsFilter(FilterSet):
    assigned_to_me = filters.BooleanFilter(field_name="is_assigned_to_me")
    current_verdict = filters.ChoiceFilter(
        choices=NEWS_CURRENT_VERDICT_CHOICES)
    is_duplicate = filters.BooleanFilter(field_name="is_duplicate")
    is_sensitive = filters.BooleanFilter(field_name="is_sensitive")
    is_spam = filters.BooleanFilter(field_name="is_spam")
    origin = filters.ChoiceFilter(field_name="origin",
                                  choices=NewsOrigin.choices)

    class Meta:
        model = News
        fields = (
            "assigned_to_me",
            "current_verdict",
            "is_duplicate",
            "is_sensitive",
            "is_spam",
            "origin",
        )
예제 #17
0
class ContainerFilter(FilterSet):
    in_bammens = filters.BooleanFilter(method='in_bammens_filter',
                                       label='in_bammens')

    class Meta(object):
        model = EnevoContainer
        fields = ('site_id', 'site_content_type_id', 'container_slot_id',
                  'container_type_id', 'customer_key', 'valid')

    def in_bammens_filter(self, qs, name, value):
        return qs.filter(valid=value)
예제 #18
0
class KilogramFilter(FilterSet):
    id = filters.CharFilter()
    in_bbox = filters.CharFilter(method='in_bbox_filter', label='bbox')
    detailed = filters.BooleanFilter(method='detailed_filter',
                                     label='detailed view')

    weigh_at_gt = filters.DateTimeFilter('weigh_at', lookup_expr='gt')
    weigh_at_lt = filters.DateTimeFilter('weigh_at', lookup_expr='lt')

    location = filters.CharFilter(method="locatie_filter", label='x,y,r')

    fractie = filters.ChoiceFilter(choices=settings.WASTE_CHOICES,
                                   label='waste name')

    # stadsdeel = filters.ChoiceFilter(choices=STADSDELEN)
    # buurt_code = filters.ChoiceFilter(choices=buurt_choices)

    class Meta(object):
        model = KilogramWeighMeasurement
        fields = (
            "id",
            "seq_id",
            "fractie",
            "weigh_at",
            "weigh_at_gt",
            "weigh_at_lt",
            "stadsdeel",
            "buurt_code",
            "site_id",
            "first_weight",
            "second_weight",
            "net_weight",
            "in_bbox",
            "location",
            "detailed",
            "valid",
        )

    def in_bbox_filter(self, qs, name, value):
        bbox_values, err = bbox.valid_bbox(value)
        lat1, lon1, lat2, lon2 = bbox_values
        poly_bbox = Polygon.from_bbox((lon1, lat1, lon2, lat2))

        if err:
            raise ValidationError(f"bbox invalid {err}:{bbox_values}")
        return qs.filter(geometrie__bboverlaps=(poly_bbox))

    def locatie_filter(self, qs, name, value):
        point, radius = bbox.parse_xyr(value)
        return qs.filter(geometrie__dwithin=(point, radius))

    def detailed_filter(self, qs, name, valie):
        return qs
예제 #19
0
class ItemResourceCountFilterSet(BaseFilterSet):
    is_exo = filters.BooleanFilter(label=_("Filter out exo/non exoworlds"),
                                   method="filter_exo")
    is_sovereign = filters.BooleanFilter(
        label=_("Filter out Sovereign/non Sovereign worlds"),
        method="filter_sovereign",
    )

    class Meta:
        model = ResourceCount
        fields = [
            "world_poll__world__tier",
            "world_poll__world__region",
            "world_poll__world__world_type",
            "world_poll__world__name",
            "world_poll__world__display_name",
        ]

    def filter_exo(self, queryset, name, value):
        if value:
            queryset = queryset.filter(
                world_poll__world__assignment__isnull=False,
                world_poll__world__owner__isnull=True,
                world_poll__world__end__isnull=False,
            )
        elif value is False:
            queryset = queryset.exclude(
                world_poll__world__assignment__isnull=False,
                world_poll__world__owner__isnull=True,
                world_poll__world__end__isnull=False,
            )

        return queryset

    def filter_sovereign(self, queryset, name, value):
        if value:
            queryset = queryset.filter(world_poll__world__owner__isnull=False)
        elif value is False:
            queryset = queryset.filter(world_poll__world__owner__isnull=True)
        return queryset
예제 #20
0
class ManagementNewsFilter(FilterSet):
    current_verdict = filters.ChoiceFilter(field_name="current_verdict",
                                           choices=NEWS_FINAL_VERDICT_TYPES)
    deleted = filters.BooleanFilter(field_name="deleted")
    is_duplicate = filters.BooleanFilter(field_name="is_duplicate")
    is_pinned = filters.BooleanFilter(field_name="is_pinned")
    is_published = filters.BooleanFilter(field_name="is_published")
    is_sensitive = filters.BooleanFilter(field_name="is_sensitive")
    origin = filters.ChoiceFilter(field_name="origin",
                                  choices=NewsOrigin.choices)

    class Meta:
        model = News
        fields = (
            "current_verdict",
            "deleted",
            "is_duplicate",
            "is_pinned",
            "is_published",
            "is_sensitive",
            "origin",
        )
예제 #21
0
class PostFilter(FilterSet):
    text = filters.CharFilter(field_name="text", lookup_expr="icontains")
    is_current = filters.BooleanFilter(method='filter_is_current')

    class Meta:
        model = Post
        fields = ['author', 'text', 'pub_date']

    def filter_is_current(self, queryset, name, value):
        set1 = queryset.filter(pub_date__year=2021)
        set2 = queryset.filter(pub_date__month=5)

        return set1 & set2
예제 #22
0
class SiteFilter(FilterSet):
    no_site = filters.BooleanFilter(method='in_site_filter',
                                    label='in_bammens')

    class Meta(object):
        model = EnevoSite
        fields = {
            'site_id': ['exact'],
            'no_site': ['exact'],
        }

    def in_site_filter(self, qs, name, value):
        return qs.filter(site_id__isnull=not (value))
예제 #23
0
class ItemColorFilterSet(WorldBlockColorFilterSet):
    show_inactive_colors = filters.BooleanFilter(
        label=_("Include previous avaiable Sovereign colors"),
        method="filter_null",
    )
    show_inactive = filters.BooleanFilter(
        label=_("Include inactive worlds (no longer in game API)"),
        method="filter_null",
    )

    class Meta:
        model = WorldBlockColor
        fields = [
            "active",
            "is_default",
            "color__game_id",
            "world__active",
            "world__tier",
            "world__region",
            "world__world_type",
            "world__name",
            "world__display_name",
        ]

    def filter_null(self, queryset, name, value):
        return queryset

    def filter_queryset(self, queryset):
        queryset = super().filter_queryset(queryset)

        if (self.form.cleaned_data["show_inactive_colors"] is not True
                and self.form.cleaned_data["active"] is None):
            queryset = queryset.filter(active=True)

        if (self.form.cleaned_data["show_inactive"] is not True
                and self.form.cleaned_data["world__active"] is None):
            queryset = queryset.filter(world__active=True)

        return queryset
예제 #24
0
class InvoiceFilter(FilterSet):
    lease = filters.NumberFilter()
    going_to_sap = filters.BooleanFilter(method="filter_going_to_sap",
                                         label=_("Going to SAP"))

    class Meta:
        model = Invoice
        fields = ["lease", "state", "type"]

    def filter_going_to_sap(self, queryset, name, value):
        if value:
            return queryset.filter(due_date__gte=datetime.date.today(),
                                   sent_to_sap_at__isnull=True)
        return queryset
예제 #25
0
class JurisdictionFilter(FilterSet):
    whitelisted = filters.BooleanFilter()
    slug = filters.ChoiceFilter(choices=jur_choices, label='Name')
    name_long = filters.CharFilter(label='Long Name')

    class Meta:
        model = models.Jurisdiction
        fields = [
            'id',
            'name',
            'name_long',
            'whitelisted',
            'slug',
        ]
예제 #26
0
class SubjectFilter(FilterSet):
    """
    Filter subjecten.
    """
    buurt = filters.CharFilter(method="buurt_filter", label='buurt')

    zakelijk_recht = filters.NumberFilter(method="recht_filter", label='recht')

    bewoners = filters.BooleanFilter(method="bewoners_filter")

    class Meta(object):
        model = models.KadastraalSubject

        fields = (
            'naam',
            'type',
            'buurt',
            'kvknummer',
            'statutaire_naam',
            'zakelijk_recht',
        )

    def buurt_filter(self, queryset, _filter_name, value):
        """
        Buurt code 4 chars
        """
        recht_type = 2  # eigenaar

        if 'zakelijk_recht' in self.request.GET:
            recht_type = self.request.GET['zakelijk_recht']

        if len(value) != 4:
            raise drf_serializers.ValidationError('Buurt vollcode is 4 chars')

        # remove ordering.
        # SUPER SLOW because of some weirdness.
        qs = queryset.order_by()

        return qs.filter(rechten__verblijfsobjecten__buurt__vollcode=value,
                         rechten__aard_zakelijk_recht__code=recht_type)

    def recht_filter(self, queryset, _filter_name, value):

        if self.request.GET['buurt']:
            # will be recht filter will be done
            # in buurt filter
            return queryset

        return queryset.filter(rechten__aard_zakelijk_recht__code=value)
class UserFilter(FilterSet):
    nickname = filters.CharFilter(field_name='nickname',
                                  lookup_expr="icontains")
    is_hy1 = filters.BooleanFilter(method='filter_is_hy1')

    class Meta:
        model = User
        fields = ['nickname']

    def filter_is_hy1(self, queryset, name, value):
        filtered_queryset = queryset.filter(nickname__contains="1")
        filtered_queryset2 = queryset.filter(~Q(nickname__contains="1"))
        if value == True:
            return filtered_queryset
        else:
            return filtered_queryset2
예제 #28
0
파일: filters.py 프로젝트: spreeker/signals
class UserFilterSet(FilterSet):
    id = filters.NumberFilter()
    username = filters.CharFilter(lookup_expr='icontains')
    active = filters.BooleanFilter(field_name='is_active')

    role = filters.ModelMultipleChoiceFilter(queryset=_get_group_queryset(),
                                             to_field_name='name',
                                             field_name='groups__name')

    order = OrderingExtraKwargsFilter(
        fields=(
            ('username', 'username'),
            ('is_active', 'active'),
        ),
        extra_kwargs={
            'username': {'apply': Lower}  # Will apply the Lower function when ordering
        }
    )
예제 #29
0
class TitleFilter(filterset.FilterSet):
    titleType = filters.CharFilter(lookup_expr=choices.FILTER_EQUALS,
                                   field_name='titleType')
    primaryTitle = filters.CharFilter(lookup_expr=choices.FILTER_LIKE)
    originalTitle = filters.CharFilter(lookup_expr=choices.FILTER_LIKE)
    isAdult = filters.BooleanFilter()
    startYear = filters.NumberFilter()
    endYear = filters.NumberFilter()
    runtimeMinutes = filters.NumberFilter()
    genres = filters.CharFilter(lookup_expr=choices.FILTER_LIKE,
                                field_name='genres')
    averageRating = filters.NumberFilter()

    class Meta:
        model = models.Title
        fields = [
            'titleType', 'primaryTitle', 'originalTitle', 'isAdult',
            'startYear', 'endYear', 'runtimeMinutes', 'genres', 'averageRating'
        ]
예제 #30
0
    def test_widget(self):
        # Ensure that `BooleanFilter` uses the correct widget when importing
        # from `rest_framework.filters`.
        f = filters.BooleanFilter()

        self.assertEqual(f.extra['widget'], BooleanWidget)