# HG changeset patch # User cavaliet # Date 1397481437 -7200 # Node ID 1494fc70a5a2132ca50ec85509022882ef007366 # Parent eb12e89fdbb1cd2fbde48b72784195214e1a00b0 v1.53.1 : better tagging cloud management diff -r eb12e89fdbb1 -r 1494fc70a5a2 src/ldt/ldt/__init__.py --- a/src/ldt/ldt/__init__.py Thu Apr 10 15:56:20 2014 +0200 +++ b/src/ldt/ldt/__init__.py Mon Apr 14 15:17:17 2014 +0200 @@ -1,6 +1,6 @@ __all__ = ["VERSION", "get_version", "__version__"] -VERSION = (1, 53, 0, "final", 0) +VERSION = (1, 53, 1, "final", 0) def get_version(): diff -r eb12e89fdbb1 -r 1494fc70a5a2 src/ldt/ldt/templatetags/taggit_extras_ldt.py --- a/src/ldt/ldt/templatetags/taggit_extras_ldt.py Thu Apr 10 15:56:20 2014 +0200 +++ b/src/ldt/ldt/templatetags/taggit_extras_ldt.py Mon Apr 14 15:17:17 2014 +0200 @@ -32,9 +32,9 @@ else: if isinstance(forvar, str) or isinstance(forvar, SafeText): # extract app label and model name - beginning, applabel, model = None, None, None + _, applabel, model = None, None, None try: - beginning, applabel, model = forvar.rsplit('.', 2) + _, applabel, model = forvar.rsplit('.', 2) except ValueError: try: applabel, model = forvar.rsplit('.', 1) @@ -46,23 +46,25 @@ queryset = TaggedItem.objects.filter(content_type__app_label=applabel.lower()) if model: queryset = queryset.filter(content_type__model=model.lower()) + tag_ids = queryset.values_list('tag_id', flat=True) + queryset = Tag.objects.filter(id__in=tag_ids) + + if applabel and not model : + return queryset.extra(select={ "num_times": 'SELECT count(*) FROM "taggit_taggeditem" U0 INNER JOIN "django_content_type" U1 ON ( U0."content_type_id" = U1."id" ) WHERE ( U1."app_label" = \'' + applabel.lower() + '\' ) AND ("taggit_tag"."id" = U0."tag_id")' }) + elif applabel and model: + return queryset.extra(select={ "num_times": 'SELECT count(*) FROM "taggit_taggeditem" U0 INNER JOIN "django_content_type" U1 ON ( U0."content_type_id" = U1."id" ) WHERE (U1."app_label" = \'' + applabel.lower() + '\' AND U1."model" = \'' + model.lower() + '\' ) AND ("taggit_tag"."id" = U0."tag_id")' }) + else: # forvar is a query set content_type = ContentType.objects.get_for_model(forvar[0]) queryset = TaggedItem.objects.filter(content_type=content_type, object_id__in=[o.pk for o in forvar]) - - # get tags - tag_ids = queryset.values_list('tag_id', flat=True) - queryset = Tag.objects.filter(id__in=tag_ids) - - - # Retain compatibility with older versions of Django taggit - # a version check (for example taggit.VERSION <= (0,8,0)) does NOT - # work because of the version (0,8,0) of the current dev version of django-taggit - try: - return queryset.annotate(num_times=Count('taggeditem_items')) - except FieldError: - return queryset.annotate(num_times=Count('taggit_taggeditem_items')) + # get tags + tag_ids = queryset.values_list('tag_id', flat=True) + queryset = Tag.objects.filter(id__in=tag_ids) + return queryset.annotate(num_times=Count('taggit_taggeditem_items')) + + return queryset.annotate(num_times=Count('taggit_taggeditem_items')) + def get_weight_fun(t_min, t_max, f_min, f_max): def weight_fun(f_i, t_min=t_min, t_max=t_max, f_min=f_min, f_max=f_max):