improved category filtering
authorveltr
Wed, 04 Jul 2012 10:31:59 +0200
changeset 206 7070d3acc3d4
parent 205 8ff4fd1a6e9c
child 207 44ddbffbfea5
improved category filtering
web/hdalab/management/commands/query_category_inclusion.py
web/hdalab/models/categories.py
web/hdalab/views/ajax.py
--- a/web/hdalab/management/commands/query_category_inclusion.py	Tue Jul 03 17:50:26 2012 +0200
+++ b/web/hdalab/management/commands/query_category_inclusion.py	Wed Jul 04 10:31:59 2012 +0200
@@ -38,11 +38,6 @@
             dest='force',
             default=False,
             help='ask no questions'),
-        make_option('--random',
-            action='store_true',
-            dest='random',
-            default=False,
-            help='randomize query on categories'),
         make_option('--site',
             action='store',
             type='string',
@@ -117,28 +112,21 @@
         
         site_url = options.get('site_url', settings.WIKIPEDIA_API_URL)
         
-        random = options.get('random', False)
-        
         types_mask = 0
         
         if self.verbosity > 2:
             print "option passed : " + repr(options)
 
-        queryset = WpCategory.objects
+        queryset = WpCategory.objects.filter(tags__hidden = False).distinct()
         
         cat_list = options.get("category", []);
         
         if cat_list:
             queryset = queryset.filter(label__in=cat_list)
         elif not options.get('all',False):            
-            queryset = queryset.annotate(wpc=Count('child_categories')).filter(wpc = 0)
-        #else:
-        #    queryset = Tag.objects.filter(url_status=None)                    
+            queryset = queryset.annotate(wpc=Count('child_categories')).filter(wpc = 0)                    
         
-        if random:
-            queryset = queryset.order_by("?")
-        else:
-            queryset = queryset.order_by("label")
+        queryset = queryset.order_by("label")
         
         if limit >= 0:
             queryset = queryset[start:limit]
--- a/web/hdalab/models/categories.py	Tue Jul 03 17:50:26 2012 +0200
+++ b/web/hdalab/models/categories.py	Wed Jul 04 10:31:59 2012 +0200
@@ -19,7 +19,7 @@
 
 class TagWpCategory(models.Model):
     tag = models.ForeignKey(Tag, related_name="wp_categories")
-    wp_category = models.ForeignKey(WpCategory)
+    wp_category = models.ForeignKey(WpCategory, related_name="tags")
     hidden = models.BooleanField(blank=False, null=False)
     
     class Meta:
--- a/web/hdalab/views/ajax.py	Tue Jul 03 17:50:26 2012 +0200
+++ b/web/hdalab/views/ajax.py	Wed Jul 04 10:31:59 2012 +0200
@@ -230,10 +230,15 @@
     
     q = request.GET.get('term',None)
     
-    qs = WpCategory.objects.filter( Q(label__icontains = ' ' + q ) | Q(label__istartswith = q))      
+    qs = WpCategory.objects.filter(tags__hidden = False).distinct().filter(Q(label__icontains = ' ' + q ) | Q(label__istartswith = q))
+
+#    qs = WpCategory.objects.filter(label__istartswith = q).order_by('label')[:40]
     
     res = [{'value':t.label} for t in qs]
     
+#    qs = WpCategory.objects.filter(label__icontains = ' ' + q).order_by('label')[:30]        
+#    res += [{'value':t.label} for t in qs]
+    
     return HttpResponse(content=json.dumps(res), mimetype='application/json')
 
 def filter(request):