Merge with a96a795aa08f19b5a43c59d1ba9612c9e4a7bfb2
authorymh <ymh.work@gmail.com>
Mon, 11 Feb 2013 14:14:24 +0100
changeset 32 21b0003310f3
parent 31 29caac899e1f (current diff)
parent 30 a96a795aa08f (diff)
child 33 71028c5eb7eb
Merge with a96a795aa08f19b5a43c59d1ba9612c9e4a7bfb2
.hgignore
src/egonomy/config.py.tmpl
--- a/.hgignore	Mon Feb 11 14:10:22 2013 +0100
+++ b/.hgignore	Mon Feb 11 14:14:24 2013 +0100
@@ -11,4 +11,5 @@
 \.DS_Store$
 ^web/static/media
 ^src/log\.txt$
-^run/log/
\ No newline at end of file
+^run/log/
+^log$
\ No newline at end of file
--- a/src/egonomy/config.py.tmpl	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/config.py.tmpl	Mon Feb 11 14:14:24 2013 +0100
@@ -6,7 +6,8 @@
 WEB_URL = 'http://localhost/'
 STATIC_URL = BASE_URL + 'static/site/'
 
-LOGIN_URL = BASE_URL + "ego/login/"
+# if necessary
+#EGONOMY_BASE_URL = BASE_URL + 'ego/'
 
 DEBUG = True
 
--- a/src/egonomy/settings.py	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/settings.py	Mon Feb 11 14:14:24 2013 +0100
@@ -160,3 +160,9 @@
 }
 
 from .config import * #@UnusedWildImport
+
+if not "EGONOMY_BASE_URL" in locals():
+    EGONOMY_BASE_URL = BASE_URL + 'ego/' 
+
+if not "LOGIN_URL" in locals():
+    LOGIN_URL = EGONOMY_BASE_URL + 'login/'
\ No newline at end of file
--- a/src/egonomy/static/egonomy/css/egonomy.css	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/static/egonomy/css/egonomy.css	Mon Feb 11 14:14:24 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	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/templates/egonomy_all_fragments.html	Mon Feb 11 14:14:24 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/egonomy_home.html	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/templates/egonomy_home.html	Mon Feb 11 14:14:24 2013 +0100
@@ -46,7 +46,7 @@
 	                             {% endif %}
 	                             {% endwith %}
                                 </div>
-                                <h3>{{ img.metadata.titre }} : {{img.date_modif}}</h3></a>
+                                <h3>{{ img.metadata.titre }}</h3></a>
                                 <p>{% trans "Annotated by" %} <strong>{{ img.metadata.auteur }}</strong></p>
                             </li>
                           {% endfor %}
--- a/src/egonomy/templates/registration/login.html	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/templates/registration/login.html	Mon Feb 11 14:14:24 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	Mon Feb 11 14:10:22 2013 +0100
+++ b/src/egonomy/views.py	Mon Feb 11 14:14:24 2013 +0100
@@ -5,7 +5,9 @@
 from django.template import RequestContext
 from models import Image, Fragment
 from django.db.models.aggregates import Max
+import logging
 
+logger = logging.getLogger(__name__)
 
 
 def home(request):
@@ -19,9 +21,11 @@
         if "field" in request.GET:
             field = request.GET["field"]
     
-    
-    img_list = Image.objects.annotate(date_modif=Max('fragment__date_saved')).exclude(date_modif=None).order_by('-date_modif')[:12]
-    frg_list = Fragment.objects.all().order_by('-date_saved')[:12]
+    # We force list() because if not, img_id_list is a valuelistqueryset and not a list of values.
+    # We separate image requests and make requests with select_related to optimize database hits.
+    img_id_list = list(Image.objects.values_list('id', flat=True).annotate(date_modif=Max('fragment__date_saved')).exclude(date_modif=None).order_by('-date_modif')[:12])
+    img_list = Image.objects.filter(id__in=img_id_list).select_related('info', 'metadata')
+    frg_list = Fragment.objects.all().order_by('-date_saved').select_related('image', 'image__info', 'image__metadata','author')[:12]
     
     return render_to_response("egonomy_home.html",
                               {'img_list':img_list, 'fragment_list':frg_list, "search":search, "nb_results":nb_results},
@@ -30,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",
@@ -43,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},
@@ -53,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},
@@ -89,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:
@@ -108,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: