Allow no tags. Sort tags by usage, hide unused.
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 1 Mar 2013 13:25:21 +0000 (14:25 +0100)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 1 Mar 2013 13:25:21 +0000 (14:25 +0100)
menu/helpers.py
prawokultury/menu_items.py
questions/models.py
questions/views.py

index 15d8646..33e90b7 100755 (executable)
@@ -15,7 +15,12 @@ class MenuItem(object):
 
     def is_active(self, request, value):
         url = request.get_full_path()
-        return url == str(self.url) or url in set(str(url) for url in self.more_urls)
+        if url.startswith(str(self.url)):
+            return True
+        for other_url in self.more_urls:
+            if url.startswith(str(other_url)):
+                return True
+        return False
 
     def check_active(self, request, value):
         try:
index 2a85fd6..1da9c69 100644 (file)
@@ -14,8 +14,7 @@ ITEMS.append(ObjectMenuItem(
 ITEMS.append(ModelMenuItem(Entry, reverse_lazy('migdal_entry_list_publications'),
         field_lookups={'type': 'publications'}, title=_('Publications')))
 
-ITEMS.append(MenuItem(reverse_lazy('events'), _('Events'),
-        more_urls=(reverse_lazy('events_past'),)))
+ITEMS.append(MenuItem(reverse_lazy('events'), _('Events')))
 
 ITEMS.append(ObjectMenuItem(
     obj_get=lambda:Category.objects.get(slug_pl='stanowisko'),
@@ -23,12 +22,7 @@ ITEMS.append(ObjectMenuItem(
     title=_('Positions')
 ))
 
-ITEMS.append(MenuItem(reverse_lazy('questions'), _('First aid'),
-        more_urls=(
-            reverse_lazy('questions_form'),
-            #reverse_lazy('questions_question'),
-            reverse_lazy('questions_thanks'),
-        )))
+ITEMS.append(MenuItem(reverse_lazy('questions'), _('First aid')))
 
 ITEMS.append(ObjectMenuItem(
     obj_get=lambda:Entry.published_objects.get(slug_pl='pierwsza-pomoc'),
index 1540191..ed86730 100644 (file)
@@ -45,7 +45,7 @@ class Question(models.Model):
         help_text=_('Check to display answered question on site.'))
     published_at = models.DateTimeField(_('published at'), null=True, blank=True, db_index=True)
 
-    tags = TaggableManager(through=TagItem)
+    tags = TaggableManager(through=TagItem, blank=True)
 
     class Meta:
         ordering = ['-created_at']
index b68d24b..9c75ac6 100644 (file)
@@ -3,6 +3,8 @@
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from django.core.urlresolvers import reverse_lazy
+from django.db import models
+from django.shortcuts import get_object_or_404
 from django.views.generic import ListView
 from django.views.generic.edit import FormView
 from .forms import QuestionForm
@@ -24,20 +26,21 @@ class QuestionListView(ListView):
         self.tag = None
         if 'tag' in request.GET:
             try:
-                self.tag = Tag.objects.get(slug=request.GET['tag'])
-            except Tag.DoesNotExist:
+                self.tag = Tag.objects.filter(items__question__published=True, slug=request.GET['tag'])[0]
+            except IndexError:
                 pass
         return super(QuestionListView, self).get(request, *args, **kwargs)
 
     def get_queryset(self):
         qs = Question.objects.filter(published=True
                 ).order_by('-published_at')
-        if 'tag' in self.request.GET:
-            qs = qs.filter(tags__slug=self.request.GET['tag'])
+        if self.tag:
+            qs = qs.filter(tags=self.tag)
         return qs
 
     def get_context_data(self, *args, **kwargs):
         context = super(QuestionListView, self).get_context_data(*args, **kwargs)
-        context['tags'] = Tag.objects.all()
+        context['tags'] = Tag.objects.filter(items__question__published=True
+            ).annotate(c=models.Count('items__tag')).order_by('-c', 'slug')
         context['tag'] = self.tag
         return context