--- 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
+