2018-09-13 15:18:23 +00:00
|
|
|
import django_filters.widgets
|
2018-04-10 21:17:51 +00:00
|
|
|
|
2018-04-12 21:02:41 +00:00
|
|
|
from funkwhale_api.common import fields
|
|
|
|
|
2018-04-10 21:17:51 +00:00
|
|
|
from . import models
|
|
|
|
|
|
|
|
|
|
|
|
class FollowFilter(django_filters.FilterSet):
|
2018-06-09 13:36:16 +00:00
|
|
|
pending = django_filters.CharFilter(method="filter_pending")
|
2018-04-10 21:17:51 +00:00
|
|
|
ordering = django_filters.OrderingFilter(
|
|
|
|
# tuple-mapping retains order
|
|
|
|
fields=(
|
2018-06-09 13:36:16 +00:00
|
|
|
("creation_date", "creation_date"),
|
|
|
|
("modification_date", "modification_date"),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
q = fields.SearchFilter(
|
|
|
|
search_fields=["actor__domain", "actor__preferred_username"]
|
2018-04-10 21:17:51 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = models.Follow
|
2018-06-09 13:36:16 +00:00
|
|
|
fields = ["approved", "pending", "q"]
|
2018-04-14 16:50:37 +00:00
|
|
|
|
|
|
|
def filter_pending(self, queryset, field_name, value):
|
2018-06-09 13:36:16 +00:00
|
|
|
if value.lower() in ["true", "1", "yes"]:
|
2018-04-14 16:50:37 +00:00
|
|
|
queryset = queryset.filter(approved__isnull=True)
|
|
|
|
return queryset
|
2018-09-06 18:35:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
class LibraryFollowFilter(django_filters.FilterSet):
|
|
|
|
class Meta:
|
|
|
|
model = models.LibraryFollow
|
|
|
|
fields = ["approved"]
|
2018-09-13 15:18:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
class InboxItemFilter(django_filters.FilterSet):
|
|
|
|
is_read = django_filters.BooleanFilter(
|
|
|
|
"is_read", widget=django_filters.widgets.BooleanWidget()
|
|
|
|
)
|
|
|
|
before = django_filters.NumberFilter(method="filter_before")
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = models.InboxItem
|
|
|
|
fields = ["is_read", "activity__type", "activity__actor"]
|
|
|
|
|
|
|
|
def filter_before(self, queryset, field_name, value):
|
|
|
|
return queryset.filter(pk__lte=value)
|
2019-04-18 12:37:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class FetchFilter(django_filters.FilterSet):
|
|
|
|
ordering = django_filters.OrderingFilter(
|
|
|
|
# tuple-mapping retains order
|
|
|
|
fields=(("creation_date", "creation_date"), ("fetch_date", "fetch_date"))
|
|
|
|
)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = models.Fetch
|
|
|
|
fields = ["status", "object_id", "url"]
|