Skip to content

Commit 5766e07

Browse files
authored
Merge pull request #167 from willemarcel/develop
fix bug in AoIs with hide_whitelist filter
2 parents 9497acd + 0b8c2e9 commit 5766e07

File tree

3 files changed

+100
-4
lines changed

3 files changed

+100
-4
lines changed

osmchadjango/supervise/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ class AreaOfInterest(models.Model):
2020
def __str__(self):
2121
return '{} by {}'.format(self.name, self.user.username)
2222

23-
def changesets(self):
23+
def changesets(self, request=None):
2424
"""Return the changesets that match the filters, including the geometry
2525
of the AreaOfInterest.
2626
"""
27-
qs = ChangesetFilter(self.filters).qs
27+
qs = ChangesetFilter(self.filters, request=request).qs
2828
if self.geometry is not None:
2929
return qs.filter(
3030
bbox__intersects=self.geometry

osmchadjango/supervise/tests/test_views.py

+96-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
from ...changeset.tests.modelfactories import (
1212
ChangesetFactory, HarmfulChangesetFactory, GoodChangesetFactory,
13-
SuspicionReasonsFactory, TagFactory
13+
SuspicionReasonsFactory, TagFactory, UserWhitelistFactory
1414
)
1515
from ...users.models import User
1616
from ..models import AreaOfInterest, BlacklistedUser
@@ -638,6 +638,101 @@ def test_aoi_with_in_bbox_filter(self):
638638
self.assertEqual(response.data['count'], 51)
639639
self.assertEqual(len(response.data['features']), 50)
640640

641+
def test_aoi_with_hide_whitelist_filter(self):
642+
aoi = AreaOfInterest.objects.create(
643+
name='Another place in the world',
644+
user=self.user,
645+
filters={
646+
'editor': 'Potlatch 2',
647+
'hide_whitelist': 'True'
648+
},
649+
)
650+
UserWhitelistFactory(user=self.user, whitelist_user='test')
651+
ChangesetFactory()
652+
ChangesetFactory(user='other_user', uid='333')
653+
ChangesetFactory(user='another_user', uid='4333')
654+
655+
self.client.login(username=self.user.username, password='password')
656+
response = self.client.get(
657+
reverse('supervise:aoi-list-changesets', args=[aoi.pk])
658+
)
659+
self.assertEqual(response.status_code, 200)
660+
self.assertEqual(response.data['count'], 2)
661+
self.assertEqual(len(response.data['features']), 2)
662+
663+
def test_aoi_with_false_hide_whitelist_filter(self):
664+
aoi = AreaOfInterest.objects.create(
665+
name='Another place in the world',
666+
user=self.user,
667+
filters={
668+
'editor': 'Potlatch 2',
669+
'hide_whitelist': 'False'
670+
},
671+
)
672+
UserWhitelistFactory(user=self.user, whitelist_user='test')
673+
ChangesetFactory()
674+
ChangesetFactory(user='other_user', uid='333')
675+
ChangesetFactory(user='another_user', uid='4333')
676+
677+
self.client.login(username=self.user.username, password='password')
678+
response = self.client.get(
679+
reverse('supervise:aoi-list-changesets', args=[aoi.pk])
680+
)
681+
self.assertEqual(response.status_code, 200)
682+
self.assertEqual(response.data['count'], 3)
683+
self.assertEqual(len(response.data['features']), 3)
684+
685+
def test_aoi_with_blacklist_filter(self):
686+
aoi = AreaOfInterest.objects.create(
687+
name='Another place in the world',
688+
user=self.user,
689+
filters={
690+
'editor': 'Potlatch 2',
691+
'blacklist': 'True'
692+
},
693+
)
694+
BlacklistedUser.objects.create(
695+
username='test',
696+
uid='123123',
697+
added_by=self.user,
698+
)
699+
ChangesetFactory()
700+
ChangesetFactory(user='other_user', uid='333')
701+
ChangesetFactory(user='another_user', uid='4333')
702+
self.client.login(username=self.user.username, password='password')
703+
response = self.client.get(
704+
reverse('supervise:aoi-list-changesets', args=[aoi.pk])
705+
)
706+
self.assertEqual(response.status_code, 200)
707+
self.assertEqual(response.data['count'], 1)
708+
self.assertEqual(len(response.data['features']), 1)
709+
710+
def test_aoi_with_false_blacklist_filter(self):
711+
aoi = AreaOfInterest.objects.create(
712+
name='Another place in the world',
713+
user=self.user,
714+
filters={
715+
'editor': 'Potlatch 2',
716+
'blacklist': 'False'
717+
},
718+
)
719+
BlacklistedUser.objects.create(
720+
username='test',
721+
uid='123123',
722+
added_by=self.user,
723+
)
724+
ChangesetFactory()
725+
ChangesetFactory(user='other_user', uid='333')
726+
ChangesetFactory(user='another_user', uid='4333')
727+
728+
self.client.login(username=self.user.username, password='password')
729+
response = self.client.get(
730+
reverse('supervise:aoi-list-changesets', args=[aoi.pk])
731+
)
732+
self.assertEqual(response.status_code, 200)
733+
self.assertEqual(response.data['count'], 3)
734+
self.assertEqual(len(response.data['features']), 3)
735+
641736
def test_aoi_changesets_feed_view(self):
642737
ChangesetFactory(bbox=Polygon(((10, 10), (10, 11), (11, 11), (10, 10))))
643738
ChangesetFactory(

osmchadjango/supervise/views.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
ChangesetSerializer, ChangesetSerializerToStaff, ChangesetStatsSerializer
1818
)
1919
from ..changeset.views import StandardResultsSetPagination
20+
from ..changeset.filters import ChangesetFilter
2021
from .models import AreaOfInterest, BlacklistedUser
2122
from .serializers import (
2223
AreaOfInterestSerializer, BlacklistSerializer,
@@ -182,7 +183,7 @@ def get_serializer_class(self):
182183
return ChangesetSerializer
183184

184185
def list(self, request, *args, **kwargs):
185-
queryset = self.get_object().changesets().select_related(
186+
queryset = self.get_object().changesets(request).select_related(
186187
'check_user'
187188
).prefetch_related('tags', 'reasons')
188189

0 commit comments

Comments
 (0)