# HG changeset patch # User cavaliet # Date 1361462803 -3600 # Node ID 7fc32e1b2abf4a5a27fb969305003d18079f6438 # Parent a4c1ba7c1250cac3f0199c57ac841669649cceb8 ORM db request optimisation. diff -r a4c1ba7c1250 -r 7fc32e1b2abf src/ldt/ldt/ldt_utils/templates/front/front_home.html --- a/src/ldt/ldt/ldt_utils/templates/front/front_home.html Thu Feb 21 13:13:20 2013 +0100 +++ b/src/ldt/ldt/ldt_utils/templates/front/front_home.html Thu Feb 21 17:06:43 2013 +0100 @@ -112,7 +112,7 @@ {% thumbnail group.get_profile.image "54x40" format="PNG" crop="center" as im %}{% trans 'group picture' %}{% endthumbnail %}
-
{{ group.user_set.count }}
+
{{ group.nb_users }}

{{group.name}}

{% if group.get_profile.description|striptags|length > 69 %}{{group.get_profile.description|striptags|slice:":69"}}...{% else %}{{group.get_profile.description|striptags}}{% endif %}

diff -r a4c1ba7c1250 -r 7fc32e1b2abf src/ldt/ldt/ldt_utils/views/front.py --- a/src/ldt/ldt/ldt_utils/views/front.py Thu Feb 21 13:13:20 2013 +0100 +++ b/src/ldt/ldt/ldt_utils/views/front.py Thu Feb 21 17:06:43 2013 +0100 @@ -2,6 +2,7 @@ from django.contrib.auth.models import Group, User from django.core.paginator import Paginator, InvalidPage, EmptyPage from django.core.urlresolvers import reverse +from django.db.models import Count from django.shortcuts import render_to_response from django.template import RequestContext from guardian.shortcuts import get_objects_for_group @@ -13,23 +14,24 @@ from ldt.utils.url import absstatic import base64 +import logging +logger = logging.getLogger(__name__) def front_home(request): # Get the 3 last annotated contents - last_contents = Content.safe_objects.order_by('-stat_annotation__last_annotated').exclude(stat_annotation__nb_annotations=0)[:3] + last_contents = Content.safe_objects.order_by('-stat_annotation__last_annotated').select_related('stat_annotation').exclude(stat_annotation__nb_annotations=0)[:3] # Get the most annotated contents - most_contents = Content.safe_objects.order_by('-stat_annotation__nb_annotations')[:8] + most_contents = Content.safe_objects.order_by('-stat_annotation__nb_annotations').select_related('stat_annotation')[:8] # Get the active groups - active_groups = Group.objects.exclude(name=settings.PUBLIC_GROUP_NAME)[:5] + active_groups = Group.objects.select_related("profile").annotate(nb_users=Count("user")).exclude(name=settings.PUBLIC_GROUP_NAME)[:5] # Get the main tag list front_tags = settings.FRONT_TAG_LIST # Get the all tags list tag_cloud = get_content_tags() - is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); - + return render_to_response("front/front_home.html", {'last_contents': last_contents, 'most_contents':most_contents, 'active_groups':active_groups, 'front_tags':front_tags, 'tag_cloud': tag_cloud, 'is_gecko': is_gecko}, @@ -65,11 +67,11 @@ tag_label = request.GET.get("tag") # Get all the public contents group if tag_label is None : - content_list = Content.safe_objects.all() + content_list = Content.safe_objects.all().select_related('stat_annotation') else : - content_list = TaggedItem.objects.get_by_model(Content.safe_objects.all(), '"'+tag_label+'"') + content_list = TaggedItem.objects.get_by_model(Content.safe_objects.all().select_related('stat_annotation'), '"'+tag_label+'"') else : - content_list = Content.safe_objects.filter(title__icontains=media_title) + content_list = Content.safe_objects.filter(title__icontains=media_title).select_related('stat_annotation') nb = settings.LDT_FRONT_MEDIA_PER_PAGE @@ -158,7 +160,6 @@ content_list = TaggedItem.objects.get_by_model(Content.objects.all(), '"'+content_tag+'"') results, nb, nb_segment = get_search_results(request, search, field, page, content_list) - return render_to_response('front/front_search_results.html', {'results': results, 'nb_results' : nb, 'nb_segment':nb_segment, 'search' : search, 'field': field, 'tag_label':content_tag, 'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl}, context_instance=RequestContext(request)) diff -r a4c1ba7c1250 -r 7fc32e1b2abf src/ldt/ldt/ldt_utils/views/workspace.py --- a/src/ldt/ldt/ldt_utils/views/workspace.py Thu Feb 21 13:13:20 2013 +0100 +++ b/src/ldt/ldt/ldt_utils/views/workspace.py Thu Feb 21 17:06:43 2013 +0100 @@ -320,7 +320,7 @@ results = get_results_with_context(field, search, content_list) all_segments = Segment.objects.filter(element_id__in=[e['element_id'] for e in results]) all_projects = Project.objects.filter(ldt_id__in=[e['project_id'] for e in results], state=2) - all_contents = Content.objects.filter(iri_id__in=[e['iri_id'] for e in results]) + all_contents = Content.objects.filter(iri_id__in=[e['iri_id'] for e in results]).select_related('stat_annotation') viewable_projects_id = [p.ldt_id for p in all_projects] nb_segment=0 complete_results = []