optimize orm database queries and little debug
authorcavaliet
Fri, 08 Feb 2013 16:50:23 +0100
changeset 30 a96a795aa08f
parent 29 333d128cc1ae
child 32 21b0003310f3
optimize orm database queries and little debug
src/egonomy/static/egonomy/css/egonomy.css
src/egonomy/templates/egonomy_all_fragments.html
src/egonomy/templates/registration/login.html
src/egonomy/views.py
--- a/src/egonomy/static/egonomy/css/egonomy.css	Fri Feb 08 12:32:58 2013 +0100
+++ b/src/egonomy/static/egonomy/css/egonomy.css	Fri Feb 08 16:50:23 2013 +0100
@@ -331,3 +331,8 @@
 a.clear-fragment {
     color: #800000;
 }
+
+/* loginform_div style */
+#loginform_div, #loginform_div ul, #loginform_div li{
+    margin: 10px 0 5px;
+}
--- a/src/egonomy/templates/egonomy_all_fragments.html	Fri Feb 08 12:32:58 2013 +0100
+++ b/src/egonomy/templates/egonomy_all_fragments.html	Fri Feb 08 16:50:23 2013 +0100
@@ -14,7 +14,7 @@
                         <ul class="fullwidth">
                           {% for frg in results %}
                             <li class="subcol_all">
-                              <a href="{% url 'view_fragment' fragment_pk=prg.pk %}">
+                              <a href="{% url 'view_fragment' fragment_pk=frg.pk %}">
                               <div class="center-image">
                                 <div class="image-and-fragment">
                                  {% with frg.image.info.image_file as image %}
--- a/src/egonomy/templates/registration/login.html	Fri Feb 08 12:32:58 2013 +0100
+++ b/src/egonomy/templates/registration/login.html	Fri Feb 08 16:50:23 2013 +0100
@@ -8,7 +8,7 @@
     {% if form.errors %}
     <p class="error">{% trans "Sorry, that's not a valid username or password." %}</p>
    {% endif %}
-    <div class="span-24 last">
+    <div class="fullwidth">
         <form action="" method='post' id="login-form">
             <div id="loginform_div" class="span-12">
             {% csrf_token %}
--- a/src/egonomy/views.py	Fri Feb 08 12:32:58 2013 +0100
+++ b/src/egonomy/views.py	Fri Feb 08 16:50:23 2013 +0100
@@ -34,10 +34,12 @@
 
 def annotate_picture(request, image_id):
 
-    img = get_object_or_404(Image, id=image_id)
-    frg_list = Fragment.objects.filter(image=img).order_by('-date_saved')
+    img = get_object_or_404(Image.objects.select_related('info', 'metadata'), id=image_id)
+    
+    # We force list() to get only one database hit instead of 3 (first request, count, [0])
+    frg_list = list(Fragment.objects.filter(image=img).order_by('-date_saved').select_related('image', 'image__info', 'image__metadata','author'))
     last_frg = None
-    if frg_list.count()>0:
+    if len(frg_list)>0:
         last_frg = frg_list[0]
     
     return render_to_response("egonomy_annotate_picture.html",
@@ -47,8 +49,8 @@
 
 def view_fragment(request, fragment_pk):
     
-    frg = get_object_or_404(Fragment, pk=fragment_pk)
-    frg_list = Fragment.objects.filter(image=frg.image)
+    frg = get_object_or_404(Fragment.objects.select_related('image', 'image__info', 'image__metadata','author'), pk=fragment_pk)
+    frg_list = Fragment.objects.filter(image=frg.image).select_related('image', 'image__info', 'image__metadata','author')
     
     return render_to_response("egonomy_view_fragment.html",
                               {'fragment': frg, 'fragment_list': frg_list},
@@ -57,8 +59,8 @@
 @login_required
 def create_fragment(request, image_id):
     
-    img = get_object_or_404(Image, id=image_id)
-    frg_list = Fragment.objects.filter(image=img)
+    img = get_object_or_404(Image.objects.select_related('info', 'metadata'), id=image_id)
+    frg_list = Fragment.objects.filter(image=img).order_by('-date_saved').select_related('image', 'image__info', 'image__metadata','author')
     
     return render_to_response("egonomy_create_fragment.html",
                               {'img': img, 'fragment_list': frg_list},
@@ -93,7 +95,7 @@
     cur_page_nb = request.GET.get("page") or 1
     cur_page_nb = int(cur_page_nb)
     
-    img_list = Image.objects.all().order_by('pk')
+    img_list = Image.objects.all().order_by('pk').select_related('info', 'metadata')
     nb = 32
     paginator = Paginator(img_list, nb)
     try:
@@ -112,7 +114,7 @@
     cur_page_nb = request.GET.get("page") or 1
     cur_page_nb = int(cur_page_nb)
     
-    frg_list = Fragment.objects.all().order_by('pk')
+    frg_list = Fragment.objects.all().order_by('pk').select_related('image', 'image__info', 'image__metadata','author')
     nb = 32
     paginator = Paginator(frg_list, nb)
     try: