From 437e01c325a6af571f1fa4ef49d64975c2870b5a Mon Sep 17 00:00:00 2001
From: Bryan Brancotte <bryan.brancotte@pasteur.fr>
Date: Tue, 21 May 2019 16:06:06 +0200
Subject: [PATCH] BUGFIX when asking for Anonymous user preferences

---
 basetheme_bootstrap/tests.py            | 5 +++++
 basetheme_bootstrap/user_preferences.py | 2 ++
 setup.py                                | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/basetheme_bootstrap/tests.py b/basetheme_bootstrap/tests.py
index 5bd3599..e0aff44 100644
--- a/basetheme_bootstrap/tests.py
+++ b/basetheme_bootstrap/tests.py
@@ -2,12 +2,14 @@ import os
 
 from django.conf import settings
 from django.contrib.auth import get_user_model
+from django.contrib.auth.models import AnonymousUser
 from django.core.cache import cache
 from django.core.exceptions import ValidationError
 from django.test import TestCase, RequestFactory, override_settings
 from django.urls import reverse
 
 from basetheme_bootstrap import user_preferences
+from basetheme_bootstrap.user_preferences import get_user_preferences_for_user
 
 
 class AboutPageTests(TestCase):
@@ -337,6 +339,9 @@ class UserPreferencesTests(TestCase):
         pref.user = None
         self.assertRaises(ValidationError, pref.save)
 
+    def test_AnonymousUser_do_not_crash(self):
+        get_user_preferences_for_user(AnonymousUser())
+
     def test_caching_disabled_status_when_it_is_the_case(self):
         user_preferences.get_user_preference_class()
         self.assertTrue(
diff --git a/basetheme_bootstrap/user_preferences.py b/basetheme_bootstrap/user_preferences.py
index 0449344..a3dc8f3 100644
--- a/basetheme_bootstrap/user_preferences.py
+++ b/basetheme_bootstrap/user_preferences.py
@@ -55,6 +55,8 @@ class UserPreferencesAbstractModel(models.Model):
     def get_for_user(cls, user):
         try:
             pref = cls.objects.get(user=user)
+        except TypeError:
+            return cls.get_for_user(None)
         except cls.DoesNotExist:
             pref, _ = cls.objects.get_or_create(user=None)
             if user is not None:
diff --git a/setup.py b/setup.py
index a270234..211c889 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ readme = open('README.rst').read()
 
 setup(
     name='django-basetheme-bootstrap',
-    version='0.1.1',
+    version='0.1.2',
     description='Django Basetheme Bootstrap',
     long_description=readme,
     author='Bryan Brancotte',
-- 
GitLab