From 71a9a1bdc013b553a45bf4c5865d82eb73f70252 Mon Sep 17 00:00:00 2001 From: afilsaime Date: Tue, 9 Jun 2015 11:52:32 +0200 Subject: [PATCH] the multi selection for playlist now work on collections --- telemeta/haystack_urls.py | 2 +- telemeta/templates/search/addplaylist.html | 22 ++-- .../search/confirmation_add_playslist.html | 22 ++-- .../search/mediacollection_listhaystack.html | 85 ++++++++++----- telemeta/templates/search/search.html | 102 +++++++++++++----- telemeta/views/new_playlist.py | 38 +++++-- 6 files changed, 200 insertions(+), 71 deletions(-) diff --git a/telemeta/haystack_urls.py b/telemeta/haystack_urls.py index 4acb0937..0692c714 100644 --- a/telemeta/haystack_urls.py +++ b/telemeta/haystack_urls.py @@ -10,6 +10,6 @@ urlpatterns = patterns('', url(r'^quick/(?P[A-Za-z0-9._-]+)/$', HaystackSearch(), name='haystack_search_type'), url(r'^advance/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search'), url(r'^advance/(?P[A-Za-z0-9._-]+)/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search_type'), - url(r'^playlist_add/$', NewPlaylistView().display, name='haystack_playlist'), + url(r'^playlist_add/(?P[A-Za-z0-9._-]+)/$', NewPlaylistView().display, name='haystack_playlist'), url(r'^playlist_confirmation/$',NewPlaylistView().addToPlaylist, name='add_confirmation'), ) diff --git a/telemeta/templates/search/addplaylist.html b/telemeta/templates/search/addplaylist.html index 3509777a..778bb45c 100644 --- a/telemeta/templates/search/addplaylist.html +++ b/telemeta/templates/search/addplaylist.html @@ -63,13 +63,23 @@ - {% for item in selected_items_list %} - + {% ifequal type "item" %} + {% for item in selected_items_list %} + - - {{item}} - - {% endfor %} + + {{item}} + + {% endfor %} + {% else %} + {% for item in selected_items_list %} + + + + {{item.title}} + + {% endfor %} + {% endifequal %} diff --git a/telemeta/templates/search/confirmation_add_playslist.html b/telemeta/templates/search/confirmation_add_playslist.html index 0cf4ce5d..b5438e74 100644 --- a/telemeta/templates/search/confirmation_add_playslist.html +++ b/telemeta/templates/search/confirmation_add_playslist.html @@ -12,13 +12,23 @@ - {% for item in selected_items_list %} - + {% ifequal type "item" %} + {% for item in selected_items_list %} + - - {{item}} - - {% endfor %} + + {{item}} + + {% endfor %} + {% else %} + {% for item in selected_items_list %} + + + + {{item.title}} + + {% endfor %} + {% endifequal %}
return to search results diff --git a/telemeta/templates/search/mediacollection_listhaystack.html b/telemeta/templates/search/mediacollection_listhaystack.html index 07a90d4b..2c5df32b 100644 --- a/telemeta/templates/search/mediacollection_listhaystack.html +++ b/telemeta/templates/search/mediacollection_listhaystack.html @@ -5,39 +5,74 @@ - + {% if user.is_authenticated %} + + + {% else %} + + {% endif %} -{% for result in page.object_list %} - - - +{% if user.is_authenticated %} + {% for result in page.object_list %} + + + + - - - + + - - -{% endfor %} + + + + {% endfor %} +{% else %} + {% for result in page.object_list %} + + + + + + + + + + {% endfor %} +{% endif %}
{% trans "Title" %} select all {% trans "Title" %}{% trans "Title" %}{% trans "Digitized" %} {% field_label "MediaCollection" "creator" %} {% trans "Recordist" %} {% trans "Recording period" %} {% trans "Code" %}
- {{ result.object.title }} - - {% if result.object.has_mediafile %} -
- {% endif %} -
+ {{ result.object.title }} + + {% if result.object.has_mediafile %} +
+ {% endif %} +
{{ result.object.creator }}{{ result.object.apparent_collector }} - {% if result.object.recorded_from_year %} - {{ result.object.recorded_from_year }} - {% if result.object.recorded_to_year and not result.object.recorded_to_year|equals:result.object.recorded_from_year %} - - {{ result.object.recorded_to_year }} + {{ result.object.creator }}{{ result.object.apparent_collector }} + {% if result.object.recorded_from_year %} + {{ result.object.recorded_from_year }} + {% if result.object.recorded_to_year and not result.object.recorded_to_year|equals:result.object.recorded_from_year %} + - {{ result.object.recorded_to_year }} + {% endif %} {% endif %} - {% endif %} - - {{ result.object.code|default:result.object.old_code }} -
+ {{ result.object.code|default:result.object.old_code }} +
+ {{ result.object.title }} + + {% if result.object.has_mediafile %} +
+ {% endif %} +
{{ result.object.creator }}{{ result.object.apparent_collector }} + {% if result.object.recorded_from_year %} + {{ result.object.recorded_from_year }} + {% if result.object.recorded_to_year and not result.object.recorded_to_year|equals:result.object.recorded_from_year %} + - {{ result.object.recorded_to_year }} + {% endif %} + {% endif %} + + {{ result.object.code|default:result.object.old_code }} +
{% else %}

{% trans "No collection" %}

diff --git a/telemeta/templates/search/search.html b/telemeta/templates/search/search.html index 6faa362f..30caef5e 100644 --- a/telemeta/templates/search/search.html +++ b/telemeta/templates/search/search.html @@ -7,6 +7,51 @@ {% endblock %} {% block extra_stylesheets %} + {% endblock %} {% block content %} @@ -23,33 +68,37 @@

{% trans "Results" %}

- - {% ifequal type 'item' %} -

Items ({{item_count}}) | Collections ({{collection_count}})

- {% else %} - {% ifequal type 'collection'%} -

Items ({{item_count}}) | Collections ({{collection_count}})

- {% endifequal %} - {% endifequal %} -
-
- -
+
+
+ {% ifequal type 'item' %} +

Items ({{item_count}}) | Collections ({{collection_count}})

+ {% else %} + {% ifequal type 'collection'%} +

Items ({{item_count}}) | Collections ({{collection_count}})

+ {% endifequal %} + {% endifequal %} +
+
+
+ +
+ +
+
+
- {{results_page}} - {{selected_facets_url|join:'&selected_facets='}} {% include "search/filters.html" %} -
{% csrf_token %} + {% csrf_token %} {% with object_list as items %}
{% ifequal type 'item' %} @@ -108,6 +157,11 @@ }); } }); + $(document).ready(function() { + $("#results-per-page").selectmenu({ + icons : {button: "ui-icon-carat-2-n-s"} + }).selectmenu("menuWidget").addClass("overflow"); + }); }); {% endblock %} diff --git a/telemeta/views/new_playlist.py b/telemeta/views/new_playlist.py index 6fb2f980..b60fc855 100644 --- a/telemeta/views/new_playlist.py +++ b/telemeta/views/new_playlist.py @@ -5,21 +5,32 @@ import uuid class NewPlaylistView(object): - def display(self, request): + def display(self, request, type=None): + + self.type=type template_name = loader.get_template('search/addplaylist.html') idlist = request.POST.getlist('selected_items_list') itemlist = [] - for itemid in idlist: - itemlist.append(MediaItem.objects.all().get(id=itemid)) + if self.type =="items": + for itemid in idlist: + itemlist.append(MediaItem.objects.all().get(id=itemid)) + + if self.type =="collection": + for itemid in idlist: + itemlist.append(MediaCollection.objects.all().get(id=itemid)) + context = RequestContext(request, { 'selected_items_list': itemlist, 'existing_playlists': Playlist.objects.all().filter(author=request.user), + 'type':self.type, 'lastquerypath':request.POST.get('lastquerypath')}) return HttpResponse(template_name.render(context)) - def addToPlaylist(self, request): + def addToPlaylist(self, request, type=None): + self.type=type + template_name = loader.get_template('search/confirmation_add_playslist.html') idlist = request.POST.getlist('item_id') @@ -27,15 +38,24 @@ class NewPlaylistView(object): selected_playlist = Playlist.objects.all().get(id=selected_playlist_id) itemlist = [] - for itemid in idlist: - itemlist.append(MediaItem.objects.all().get(id=itemid)) + if self.type == "item": + for itemid in idlist: + itemlist.append(MediaItem.objects.all().get(id=itemid)) + + for item in itemlist: + new_id = uuid.uuid4() + PlaylistResource.objects.get_or_create(resource_type='item',public_id=new_id,resource_id=item.id,playlist=selected_playlist) + else: + for itemid in idlist: + itemlist.append(MediaCollection.objects.all().get(id=itemid)) - for item in itemlist: - new_id = uuid.uuid4() - PlaylistResource.objects.get_or_create(resource_type='item',public_id=new_id,resource_id=item.id,playlist=selected_playlist) + for item in itemlist: + new_id = uuid.uuid4() + PlaylistResource.objects.get_or_create(resource_type='collection',public_id=new_id,resource_id=item.id,playlist=selected_playlist) context = RequestContext(request, { 'selected_items_list': itemlist, + 'type':self.type, 'lastquerypath': request.POST.get('lastquerypath')}) return HttpResponse(template_name.render(context)) -- 2.39.5