# HG changeset patch # User veltr # Date 1341390719 -7200 # Node ID 7070d3acc3d4638efdc8d65af3d043c15302ed69 # Parent 8ff4fd1a6e9c710b82503833097e76fe9b162d1d improved category filtering diff -r 8ff4fd1a6e9c -r 7070d3acc3d4 web/hdalab/management/commands/query_category_inclusion.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] diff -r 8ff4fd1a6e9c -r 7070d3acc3d4 web/hdalab/models/categories.py --- 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: diff -r 8ff4fd1a6e9c -r 7070d3acc3d4 web/hdalab/views/ajax.py --- 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):