keep descendants on shelves
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 18 Jun 2010 12:29:00 +0000 (14:29 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 18 Jun 2010 12:29:00 +0000 (14:29 +0200)
apps/catalogue/views.py
wolnelektury/templates/catalogue/tagged_object_list.html

index 47abe63..102b38e 100644 (file)
@@ -105,8 +105,9 @@ def tagged_object_list(request, tags=''):
         raise Http404
 
     theme_is_set = [tag for tag in tags if tag.category == 'theme']
         raise Http404
 
     theme_is_set = [tag for tag in tags if tag.category == 'theme']
-    shelf_is_set = len(tags) == 1 and tags[0].category == 'set'
-    my_shelf_is_set = shelf_is_set and request.user.is_authenticated() and request.user == tags[0].user
+    shelf_is_set = [tag for tag in tags if tag.category == 'set']
+    only_shelf = shelf_is_set and len(tags) == 1
+    only_my_shelf = only_shelf and request.user.is_authenticated() and request.user == tags[0].user
 
     objects = only_author = pd_counter = None
     categories = {}
 
     objects = only_author = pd_counter = None
     categories = {}
@@ -136,11 +137,12 @@ def tagged_object_list(request, tags=''):
     else:
         # get relevant books and their tags
         objects = models.Book.tagged.with_all(tags).order_by()
     else:
         # get relevant books and their tags
         objects = models.Book.tagged.with_all(tags).order_by()
-        l_tags = [book.book_tag() for book in objects]
-        # eliminate descendants
-        descendants_keys = [book.pk for book in models.Book.tagged.with_any(l_tags)]
-        if descendants_keys:
-            objects = objects.exclude(pk__in=descendants_keys)
+        if not shelf_is_set:
+            # eliminate descendants
+            l_tags = [book.book_tag() for book in objects]
+            descendants_keys = [book.pk for book in models.Book.tagged.with_any(l_tags)]
+            if descendants_keys:
+                objects = objects.exclude(pk__in=descendants_keys)
 
         # get related tags from `tag_counter` and `theme_counter`
         related_counts = {}
 
         # get related tags from `tag_counter` and `theme_counter`
         related_counts = {}
@@ -169,10 +171,10 @@ def tagged_object_list(request, tags=''):
         template_name='catalogue/tagged_object_list.html',
         extra_context={
             'categories': categories,
         template_name='catalogue/tagged_object_list.html',
         extra_context={
             'categories': categories,
-            'shelf_is_set': shelf_is_set,
+            'only_shelf': only_shelf,
             'only_author': only_author,
             'pd_counter': pd_counter,
             'only_author': only_author,
             'pd_counter': pd_counter,
-            'user_is_owner': my_shelf_is_set,
+            'only_my_shelf': only_my_shelf,
             'formats_form': forms.DownloadFormatsForm(),
 
             'tags': tags,
             'formats_form': forms.DownloadFormatsForm(),
 
             'tags': tags,
index 952ba2b..b24929c 100644 (file)
@@ -10,7 +10,7 @@
     <h1>{% title_from_tags tags %}</h1>
     {% breadcrumbs tags %}
 
     <h1>{% title_from_tags tags %}</h1>
     {% breadcrumbs tags %}
 
-    {% if shelf_is_set and not object_list %}
+    {% if only_shelf and not object_list %}
     <div id="books-list">
         <h2>{% trans "Your shelf is empty" %}</h2>
         <p>{% trans "You can put a book on a shelf by entering page of the reading and clicking 'Put on the shelf'." %}</p>
     <div id="books-list">
         <h2>{% trans "Your shelf is empty" %}</h2>
         <p>{% trans "You can put a book on a shelf by entering page of the reading and clicking 'Put on the shelf'." %}</p>
@@ -27,7 +27,7 @@
             <div class="clearboth"></div>
             <div id="toggle-description"><p></p></div>
         {% endif %}
             <div class="clearboth"></div>
             <div id="toggle-description"><p></p></div>
         {% endif %}
-        {% if shelf_is_set %}
+        {% if only_shelf %}
             <a id="download-shelf" href="{% url download_shelf last_tag.slug %}">
                 {% trans "Download all books from this shelf" %}
             </a>
             <a id="download-shelf" href="{% url download_shelf last_tag.slug %}">
                 {% trans "Download all books from this shelf" %}
             </a>
@@ -44,7 +44,7 @@
                     <div class="clearboth"></div>
                 </form>
             </div>
                     <div class="clearboth"></div>
                 </form>
             </div>
-            {% if user_is_owner %}
+            {% if only_my_shelf %}
             <div id="toggle-share-shelf"><p>{% trans "Share this shelf" %}</p></div>
             <div id="share-shelf">
                 <p>{% trans "Copy this link and share it with other people to let them see your shelf." %}
             <div id="toggle-share-shelf"><p>{% trans "Share this shelf" %}</p></div>
             <div id="share-shelf">
                 <p>{% trans "Copy this link and share it with other people to let them see your shelf." %}