src/egonomy/views.py
changeset 159 b98558f8d2c1
parent 121 447ffbbddc7f
child 168 c90576d18319
--- a/src/egonomy/views.py	Wed Jun 26 12:02:49 2013 +0200
+++ b/src/egonomy/views.py	Wed Jun 26 16:53:45 2013 +0200
@@ -8,7 +8,7 @@
 from django.shortcuts import get_object_or_404, render_to_response, redirect
 from django.template import RequestContext
 from django.utils.translation import ugettext as _
-from egonomy.models import ImageMetadata, Image, Fragment, ImageInfo
+from egonomy.models import ImageMetadata, Image, Fragment, ImageInfo, Collection
 from egonomy.search_indexes import QueryParser
 from egonomy.search_indexes.paginator import SearchPaginator
 from egonomy.search_indexes.query import ModelRelatedSearchQuerySet
@@ -36,7 +36,7 @@
     frg_list = Fragment.objects.all().order_by('-date_saved').select_related('image', 'image__info', 'image__metadata','author')[:nb_display]
     
     return render_to_response("egonomy_home.html",
-                              {'img_list':img_list, 'fragment_list':frg_list},
+                              {'img_list':img_list, 'fragment_list':frg_list, 'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 
@@ -51,7 +51,8 @@
         last_frg = frg_list[0]
     
     return render_to_response("egonomy_annotate_picture.html",
-                              {'img': img, 'fragment_list': frg_list, 'last_frg':last_frg},
+                              {'img': img, 'fragment_list': frg_list, 'last_frg':last_frg,
+                               'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 
@@ -63,7 +64,8 @@
     fragment_only = {'true': True, 'false': False, "0": False, "1": True}.get((request.GET.get("fragment_only") or "1").lower())
     
     return render_to_response("egonomy_view_fragment.html",
-                              {'fragment': frg, 'fragment_list': frg_list, 'fragment_only':fragment_only},
+                              {'fragment': frg, 'fragment_list': frg_list, 'fragment_only':fragment_only,
+                               'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 @login_required
@@ -153,7 +155,8 @@
         url_pagination = url_pagination + "&search=" + search
 
     return render_to_response("egonomy_all_pictures.html",
-                              {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination},
+                              {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination,
+                               'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 
@@ -193,7 +196,8 @@
         url_pagination = url_pagination + "&search=" + search
 
     return render_to_response("egonomy_all_fragments.html",
-                              {"search_fragment":True, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination},
+                              {"search_fragment":True, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination,
+                               'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 
@@ -217,7 +221,8 @@
     url_pagination = reverse("user_fragments", args=[username]) + "?limit=" + str(nb)
 
     return render_to_response("egonomy_all_fragments.html",
-                              {"user_fragments":True, 'username':username, 'results':results, 'nb_pages':paginator.num_pages, "search":None, 'cur_page_nb':cur_page_nb, "url_pagination":url_pagination},
+                              {"user_fragments":True, 'username':username, 'results':results, 'nb_pages':paginator.num_pages, "search":None, 'cur_page_nb':cur_page_nb, "url_pagination":url_pagination,
+                               'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 
@@ -358,3 +363,94 @@
     
     return HttpResponse(json.dumps({"keywords":keywords, "images":images_data}), content_type="application/json")
 
+
+
+def all_collections(request):
+        
+    # Get the cur_page_nb number parameter if possible
+    cur_page_nb = request.GET.get("page") or 1
+    cur_page_nb = int(cur_page_nb)
+    
+    collections = Collection.objects.filter(public=True).order_by('-creation').select_related('items')
+    nb = request.GET.get("limit") or getattr(settings,"IMAGES_PER_PAGE", 32)
+    paginator = Paginator(collections, nb)
+        
+    try:
+        results = paginator.page(cur_page_nb)
+    except (EmptyPage, InvalidPage):
+        results = paginator.page(paginator.num_pages)
+        
+    url_pagination = reverse("all_collections") + "?limit=" + str(nb)
+
+    return render_to_response("egonomy_all_collections.html",
+                              {"user_collections":False, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "url_pagination":url_pagination},
+                              context_instance=RequestContext(request))
+
+
+
+def user_collections(request, username):
+        
+    # Get the cur_page_nb number parameter if possible
+    cur_page_nb = request.GET.get("page") or 1
+    cur_page_nb = int(cur_page_nb)
+    # get the username
+    user = get_object_or_404(User, username=username)
+    
+    if user==request.user:
+        user_collections = True
+        collections = Collection.objects.filter(author=user).order_by('-creation').select_related('items')
+    else:
+        user_collections = False
+        collections = Collection.objects.filter(author=user).filter(public=True).order_by('-creation').select_related('items')
+        
+    nb = request.GET.get("limit") or getattr(settings,"IMAGES_PER_PAGE", 32)
+    paginator = Paginator(collections, nb)
+        
+    try:
+        results = paginator.page(cur_page_nb)
+    except (EmptyPage, InvalidPage):
+        results = paginator.page(paginator.num_pages)
+        
+    url_pagination = reverse("user_collections", args=[username]) + "?limit=" + str(nb)
+    
+    return render_to_response("egonomy_all_collections.html",
+                              {"user_collections":user_collections, 'username':username, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "url_pagination":url_pagination},
+                              context_instance=RequestContext(request))
+
+
+
+@login_required
+def new_collection(request):
+        
+    col_title = request.POST["collection-title"]
+    col_desc = request.POST["collection-description"]
+    
+    col = Collection()
+    col.title = col_title
+    col.description = col_desc
+    col.author = request.user
+    col.save()
+    
+    return redirect("view_collection", collection_pk=col.pk)
+
+
+
+
+def view_collection(request, collection_pk):
+    
+    col = get_object_or_404(Collection.objects.select_related('items'), pk=collection_pk)
+    
+    return render_to_response("egonomy_view_collection.html",
+                              {'col':col},
+                              context_instance=RequestContext(request))
+
+
+
+
+def current_user_collection_list(request):
+    
+    if request.user.is_authenticated():
+        return Collection.objects.filter(author=request.user).order_by("title")
+    else:
+        return None
+