Use a given default for getting a preference

This commit is contained in:
thedeadparrot
2014-02-14 08:50:36 -05:00
committed by Julia Hansbrough
parent 48686793d7
commit 7e38c3ad6b
2 changed files with 10 additions and 6 deletions

View File

@@ -24,15 +24,15 @@ class UserPreference(models.Model):
user_pref.save()
@classmethod
def get_preference(cls, user, preference_key):
def get_preference(cls, user, preference_key, default=None):
"""
Gets the user preference value for a given key
Returns None if there isn't a preference for the given key
Returns the given default if there isn't a preference for the given key
"""
try:
user_pref = cls.objects.get(user=user, key=preference_key)
return user_pref.value
except cls.DoesNotExist:
return None
return default

View File

@@ -83,6 +83,10 @@ class ApiTestCase(TestCase):
"""Assert that the given response has the status code 403"""
self.assertEqual(response.status_code, 403)
def assertHttpBadRequest(self, response):
"""Assert that the given response has the status code 403"""
self.assertEqual(response.status_code, 400)
def assertHttpMethodNotAllowed(self, response):
"""Assert that the given response has the status code 405"""
self.assertEqual(response.status_code, 405)
@@ -358,7 +362,7 @@ class UserPreferenceViewSetTest(UserApiTestCase):
)
class TestLanguageSetting(TestCase):
class TestLanguageSetting(ApiTestCase):
"""
Test setting languages
"""
@@ -369,7 +373,7 @@ class TestLanguageSetting(TestCase):
lang = 'en'
response = self.client.post(reverse('user_api_set_language'), {'language': lang})
self.assertEqual(response.status_code, 200)
self.assertHttpOK(response)
user_pref = UserPreference.get_preference(user, LANGUAGE_KEY)
self.assertEqual(user_pref, lang)
@@ -379,6 +383,6 @@ class TestLanguageSetting(TestCase):
response = self.client.post(reverse('user_api_set_language'))
self.assertEqual(response.status_code, 400)
self.assertHttpBadRequest(response)
self.assertIsNone(UserPreference.get_preference(user, LANGUAGE_KEY))