Skip to content

Commit

Permalink
Merge pull request #2286 from kobotoolbox/1804-anonymous-user-fix
Browse files Browse the repository at this point in the history
Handle anonymous users properly in `PerUserSetting`
  • Loading branch information
jnm authored May 31, 2019
2 parents f466a97 + b05158d commit 11826de
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
4 changes: 4 additions & 0 deletions hub/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
from jsonfield import JSONField
from markitup.fields import MarkupField

from kpi.models.object_permission import get_anonymous_user


class SitewideMessage(models.Model):
slug = models.CharField(max_length=50)
Expand Down Expand Up @@ -67,6 +69,8 @@ class PerUserSetting(models.Model):
value_when_not_matched = models.CharField(max_length=2048, blank=True)

def user_matches(self, user):
if user.is_anonymous():
user = get_anonymous_user()
manager = user._meta.model.objects
queryset = manager.none()
for user_query in self.user_queries:
Expand Down
7 changes: 6 additions & 1 deletion hub/tests/test_perusersetting.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.contrib.auth.models import User
from django.contrib.auth.models import User, AnonymousUser
from django.core.urlresolvers import reverse
from django.test import TestCase

Expand Down Expand Up @@ -33,6 +33,11 @@ def test_non_matching_user(self):
self.assertFalse(self.setting.user_matches(u))
self.assertEqual(self.setting.get_for_user(u), 'okay...')

def test_anonymous_user(self):
u = AnonymousUser()
self.assertFalse(self.setting.user_matches(u))
self.assertEqual(self.setting.get_for_user(u), 'okay...')


class IntercomConfigurationTestCase(TestCase):
fixtures = ['test_data']
Expand Down

0 comments on commit 11826de

Please sign in to comment.