General A/B testing.
[wolnelektury.git] / src / social / utils.py
old mode 100755 (executable)
new mode 100644 (file)
index f8fb241..67bc867
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
@@ -15,7 +14,7 @@ from social.models import Cite
 
 
 def likes(user, work, request=None):
 
 
 def likes(user, work, request=None):
-    if not user.is_authenticated():
+    if not user.is_authenticated:
         return False
 
     if request is None:
         return False
 
     if request is None:
@@ -52,6 +51,15 @@ def get_set(user, name):
     except Tag.DoesNotExist:
         tag = Tag.objects.create(
             category='set', user=user, name=name, slug=utils.get_random_hash(name), sort_key=name.lower())
     except Tag.DoesNotExist:
         tag = Tag.objects.create(
             category='set', user=user, name=name, slug=utils.get_random_hash(name), sort_key=name.lower())
+    except Tag.MultipleObjectsReturned:
+        # fix duplicated noname shelf
+        tags = list(Tag.objects.filter(category='set', user=user, name=name))
+        tag = tags[0]
+        for other_tag in tags[1:]:
+            for item in other_tag.items.all():
+                Tag.objects.remove_tag(item, other_tag)
+                Tag.objects.add_tag(item, tag)
+            other_tag.delete()
     return tag
 
 
     return tag
 
 
@@ -106,7 +114,7 @@ def choose_cite(book_id=None, tag_ids=None):
 def get_or_choose_cite(request, book_id=None, tag_ids=None):
     try:
         assert request.user.is_staff
 def get_or_choose_cite(request, book_id=None, tag_ids=None):
     try:
         assert request.user.is_staff
-        assert 'choose_cite' in request.GET
-        return Cite.objects.get(pk=request.GET['choose_cite'])
+        assert 'banner' in request.GET
+        return Cite.objects.get(pk=request.GET['banner'])
     except (AssertionError, Cite.DoesNotExist):
         return choose_cite(book_id, tag_ids)
     except (AssertionError, Cite.DoesNotExist):
         return choose_cite(book_id, tag_ids)