Fix filtering

This commit is contained in:
TehomCD 2020-03-01 10:02:23 -05:00
parent c83567c95e
commit ec570a17cd
2 changed files with 7 additions and 1 deletions

View file

@ -8,7 +8,7 @@ https://django-filter.readthedocs.io/en/latest/guide/rest_framework.html
"""
from django.db.models import Q
from django_filters.rest_framework.filterset import FilterSet
from django_filters.filters import CharFilter
from django_filters.filters import CharFilter, EMPTY_VALUES
from evennia.objects.models import ObjectDB
from evennia.accounts.models import AccountDB
@ -22,6 +22,10 @@ class TagTypeFilter(CharFilter):
tag_type = None
def filter(self, qs, value):
# if no value is specified, we don't use the filter
if value in EMPTY_VALUES:
return qs
# if they enter a value, we filter objects by having a tag of this type with the given name
return qs.filter(Q(db_tags__db_tagtype=self.tag_type) & Q(db_tags__db_key=value))

View file

@ -19,6 +19,7 @@ urlpatterns = [
)
class TestEvenniaRESTApi(EvenniaTest):
client_class = APIClient
maxDiff = None
def setUp(self):
super().setUp()
@ -96,6 +97,7 @@ class TestEvenniaRESTApi(EvenniaTest):
with self.subTest(msg=f"Testing {view.view_name} "):
view_url = reverse(f"api:{view.view_name}")
response = self.client.get(view_url)
self.assertEqual(response.status_code, 200)
self.assertCountEqual(response.data['results'], [view.serializer(obj).data for obj in view.list])
def test_create(self):