return self.filter(q)
+
def without_collection(self):
"Find items which do not belong to any collection"
return self.extra(
class MediaItemIndex(indexes.SearchIndex, indexes.Indexable):
- text = indexes.CharField(document=True)
+ text = indexes.NgramField(document=True, use_template=True)
+ #rec_date = indexes.DateTimeField(use_template=True, null=True)
def get_model(self):
return MediaItem
text-decoration: none;
}
+#btn{
+ font-weight: bold;
+ color:#ffffff;
+ background-color:#6a0307;
+ border-color:#6a0307;
+ box-shadow: 5px 5px 5px #888888;
+}
+
+#btn:hover{
+ font-weight: bold;
+ color:#6a0307;
+ background-color:#ffffff;
+ border-color:#6a0307;
+ box-shadow: 5px 5px 5px #888888;
+}
+
.list_item, .list_item:visited, .list_item:hover{
display:block;
color:#6A0307;
{{ object.title }}
+{{ object.recorded_from_date }}
+{{ object.recorded_to_date }}
+{{ object.code }}
+{{ object.location }}
{{ object.body }}
</table>
{% if query %}
- <h3>Results</h3>
-
- {% for result in page.object_list %}
- <p>
- <a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a>
- </p>
- {% empty %}
- <p>No results found.</p>
- {% endfor %}
+ <h1>{% trans "Results" %}</h1>
+ <div class="fullpage">
+ {% include "search/mediaitem_listhaystack.html" %}
+ </div>
{% if page.has_previous or page.has_next %}
<div>
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
</form>
-{% endblock %}
\ No newline at end of file
+{% endblock %}
<div class="home-description">
<img class="align-left" src="{{ STATIC_URL }}telemeta/images/vox.png" alt="vox" style="vertical-align:middle;" />
-{{ page_content|render_flatpage }}
+<button type="button" id="btn" class="btn btn-default" onclick="location.href='{%url "telemeta-fullaccess-items"%}'"> <span class="glyphicon glyphicon-play" aria-hidden="true"></span> Accéder aux items en libre acces</a>
+{#{{ page_content|render_flatpage }}#}
</div>
{% if sound_pub_items %}
<h1><img src="{{ STATIC_URL }}telemeta/images/playlist_title.png" alt="playlists" style="vertical-align:middle" />
{% trans "Musical selection" %}</h1>
</div>
-{% for item in sound_pub_items %}
+{% for item in sound_pub_items %}
<div style="float: left; margin: 3px; width: 48%" align="center"><a href="{% url "telemeta-item-detail" item.public_id %}">{{ item }}</a>{% if item.alt_title %} ({{ item.alt_title }}){% endif %}<br /><span style="font-size: 80%">{{ item.location.fullnames|to_string }}</span><br />
<iframe width='376' height='220' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='/archives/items/{{ item.public_id }}/player/362x130/'></iframe></div>
-{% endfor %}
+{% endfor %}
</div>
{% endif %}
<ul class="dropdown-menu" role="menu">
<li><a href="{% url "telemeta-search-type" "items" %}?{{criteria|with_no_sound|build_query_string}}" class="">{% trans "All" %}</a></li>
<li><a href="{% url "telemeta-search-type" "items" %}?{{criteria|with_sound|build_query_string}}">{% trans "Sounds" %}</a></li>
+ <li><a href="{% url "telemeta-search-published" "items" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "Published" %}</a></li>
+ <li><a href="{% url "telemeta-search-unpublished" "items" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "Unpublished" %}</a></li>
+ <li><a href="{% url "telemeta-search-full" "items" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "Full" %}</a></li>
+ <li><a href="{% url "telemeta-search-none" "items" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "None" %}</a></li>
</ul>
{% endifequal %}
{% ifequal type 'collections' %}
<ul class="dropdown-menu" role="menu">
<li><a href="{% url "telemeta-search-type" "collections" %}?{{criteria|with_no_sound|build_query_string}}" class="">{% trans "All" %}</a></li>
<li><a href="{% url "telemeta-search-type" "collections" %}?{{criteria|with_sound|build_query_string}}">{% trans "Sounds" %}</a></li>
+ <li><a href="{% url "telemeta-search-published" "collections" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "Published" %}</a></li>
+ <li><a href="{% url "telemeta-search-unpublished" "collections" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "Unpublished" %}</a></li>
+ <li><a href="{% url "telemeta-search-full" "collections" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "Full" %}</a></li>
+ <li><a href="{% url "telemeta-search-none" "collections" %}?{{criteria|with_no_sound|build_query_string}}">{% trans "None" %}</a></li>
</ul>
{% endifequal %}
</div>
{% endif %}
{% ifequal type 'items' %}
-<p><b>Items ({{items_num}}) | <a href="{% url "telemeta-search-type" "collections" %}?{{criteria|build_query_string}}">Collections ({{collections_num}})</a> | <a href="{% url "telemeta-search-type" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-type" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a></b></p>
- {% with object_list as items %}
- <div class="fullpage">
- {% include "telemeta/inc/mediaitem_list.html" %}
- </div>
- {% endwith %}
+ {% ifequal result_filter "published"%}
+ <p><b>Items ({{items_num}}) | <a href="{% url "telemeta-search-published" "collections" %}?{{criteria|build_query_string}}">Collections ({{collections_num}})</a> | <a href="{% url "telemeta-search-published" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-published" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a></b></p>
+ {% with object_list as items %}
+ <div class="fullpage">
+ {% include "telemeta/inc/mediaitem_list.html" %}
+ </div>
+ {% endwith %}
+ {% else%}
+ {% ifequal result_filter "unpublished"%}
+ <p><b>Items ({{items_num}}) | <a href="{% url "telemeta-search-unpublished" "collections" %}?{{criteria|build_query_string}}">Collections ({{collections_num}})</a> | <a href="{% url "telemeta-search-unpublished" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-unpublished" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a></b></p>
+ {% with object_list as items %}
+ <div class="fullpage">
+ {% include "telemeta/inc/mediaitem_list.html" %}
+ </div>
+ {% endwith %}
+ {% else%}
+ {% ifequal result_filter "full"%}
+ <p><b>Items ({{items_num}}) | <a href="{% url "telemeta-search-full" "collections" %}?{{criteria|build_query_string}}">Collections ({{collections_num}})</a> | <a href="{% url "telemeta-search-full" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-full" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a></b></p>
+ {% with object_list as items %}
+ <div class="fullpage">
+ {% include "telemeta/inc/mediaitem_list.html" %}
+ </div>
+ {% endwith %}
+ {% else%}
+ {% ifequal result_filter "none"%}
+ <p><b>Items ({{items_num}}) | <a href="{% url "telemeta-search-none" "collections" %}?{{criteria|build_query_string}}">Collections ({{collections_num}})</a> | <a href="{% url "telemeta-search-none" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-none" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a></b></p>
+ {% with object_list as items %}
+ <div class="fullpage">
+ {% include "telemeta/inc/mediaitem_list.html" %}
+ </div>
+ {% endwith %}
+ {% else%}
+ <p><b>Items ({{items_num}}) | <a href="{% url "telemeta-search-type" "collections" %}?{{criteria|build_query_string}}">Collections ({{collections_num}})</a> | <a href="{% url "telemeta-search-type" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-type" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a></b></p>
+ {% with object_list as items %}
+ <div class="fullpage">
+ {% include "telemeta/inc/mediaitem_list.html" %}
+ </div>
+ {% endwith %}
+ {%endifequal%}
+ {%endifequal%}
+ {%endifequal%}
+ {% endifequal %}
{% endifequal %}
{% ifequal type 'collections' %}
-<p><b><a href="{% url "telemeta-search-type" "items" %}?{{criteria|build_query_string}}">Items ({{items_num}})</a> | Collections ({{collections_num}}) | <a href="{% url "telemeta-search-type" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-type" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a>
- </b></p>
- {% with object_list as collections %}
- <div class="fullpage">
- {% include "telemeta/inc/collection_list.html" %}
- </div>
- {% endwith %}
+ {% ifequal result_filter "published"%}
+ <p><b><a href="{% url "telemeta-search-published" "items" %}?{{criteria|build_query_string}}">Items ({{items_num}})</a> | Collections ({{collections_num}}) | <a href="{% url "telemeta-search-published" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-published" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a>
+ </b></p>
+ {% with object_list as collections %}
+ <div class="fullpage">
+ {% include "telemeta/inc/collection_list.html" %}
+ </div>
+ {% endwith %}
+ {% else %}
+ {%ifequal result_filter "unpublished"%}
+ <p><b><a href="{% url "telemeta-search-unpublished" "items" %}?{{criteria|build_query_string}}">Items ({{items_num}})</a> | Collections ({{collections_num}}) | <a href="{% url "telemeta-search-unpublished" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-unpublished" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a>
+ </b></p>
+ {% with object_list as collections %}
+ <div class="fullpage">
+ {% include "telemeta/inc/collection_list.html" %}
+ </div>
+ {% endwith %}
+ {%else%}
+ {%ifequal result_filter "full"%}
+ <p><b><a href="{% url "telemeta-search-full" "items" %}?{{criteria|build_query_string}}">Items ({{items_num}})</a> | Collections ({{collections_num}}) | <a href="{% url "telemeta-search-full" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-full" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a>
+ </b></p>
+ {% with object_list as collections %}
+ <div class="fullpage">
+ {% include "telemeta/inc/collection_list.html" %}
+ </div>
+ {% endwith %}
+ {%else%}
+ {%ifequal result_filter "none"%}
+ <p><b><a href="{% url "telemeta-search-none" "items" %}?{{criteria|build_query_string}}">Items ({{items_num}})</a> | Collections ({{collections_num}}) | <a href="{% url "telemeta-search-none" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-none" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a>
+ </b></p>
+ {% with object_list as collections %}
+ <div class="fullpage">
+ {% include "telemeta/inc/collection_list.html" %}
+ </div>
+ {% endwith %}
+ {%else%}
+ <p><b><a href="{% url "telemeta-search-type" "items" %}?{{criteria|build_query_string}}">Items ({{items_num}})</a> | Collections ({{collections_num}}) | <a href="{% url "telemeta-search-type" "corpus" %}?{{criteria|build_query_string}}">Corpus ({{corpus_num}})</a> | <a href="{% url "telemeta-search-type" "fonds" %}?{{criteria|build_query_string}}">Fonds ({{fonds_num}})</a>
+ </b></p>
+ {% with object_list as collections %}
+ <div class="fullpage">
+ {% include "telemeta/inc/collection_list.html" %}
+ </div>
+ {% endwith %}
+ {%endifequal%}
+ {%endifequal%}
+ {%endifequal%}
+ {%endifequal%}
{% endifequal %}
{% if type == 'corpus' %}
_vars['sound'] = True
return _vars
+
@register.filter
def code_or_id(resource):
if resource.code:
from django.conf.urls import patterns, url, include
from django.conf import settings
-from django.views.generic.base import RedirectView
+from django.views.generic.base import RedirectView, TemplateView
from django.views.generic.list import ListView
from telemeta.models import MediaItem, MediaCollection, MediaItemMarker, MediaCorpus, MediaFonds
from telemeta.views import *
urlpatterns = patterns('',
url(r'^$', home_view.home, name="telemeta-home"),
-
+ url(r'^test', TemplateView.as_view(template_name = "telemeta/hello_world.html")),
# items
url(r'^archives/items/$', ItemListView.as_view(), name="telemeta-items"),
+ url(r'^archives/full_access_items/$', ItemListViewFullAccess.as_view(), name="telemeta-fullaccess-items"),
url(r'^archives/items_sound/$', ItemSoundListView.as_view(), name="telemeta-items-sound"),
url(r'^archives/items_unpublished/$', ItemUnpublishedListView.as_view(), name="telemeta-items-unpublished"),
url(r'^archives/items_published/$', ItemPublishedListView.as_view(), name="telemeta-items-published"),
# search
# url(r'^archives/$', home_view.search, name="telemeta-archives"),
url(r'^search/$', SearchView.as_view(), name="telemeta-search"),
+ url(r'^search_published/(?P<type>[A-Za-z0-9._-]+)/$', SearchViewPublished.as_view(), name="telemeta-search-published"),
+ url(r'^search_unpublished/(?P<type>[A-Za-z0-9._-]+)/$', SearchViewUnpublished.as_view(), name="telemeta-search-unpublished"),
+ url(r'^search_full/(?P<type>[A-Za-z0-9._-]+)/$', SearchViewFullAccess.as_view(), name="telemeta-search-full"),
+ url(r'^search_none/(?P<type>[A-Za-z0-9._-]+)/$', SearchViewRestrictedAccess.as_view(), name="telemeta-search-none"),
url(r'^search/(?P<type>[A-Za-z0-9._-]+)/$', SearchView.as_view(), name="telemeta-search-type"),
url(r'^search_criteria/$', home_view.edit_search, name="telemeta-search-criteria"),
url(r'^complete_location/$', home_view.complete_location, name="telemeta-complete-location"),
- url(r'^haystack/', include('haystack.urls')),
+ url(r'^haystack/', include('telemeta.haystack_urls')),
# administration
url(r'^admin/$', admin_view.admin_index, name="telemeta-admin"),
users = User.objects.all().order_by('last_name')
return render(request, 'telemeta/users.html', {'users': users})
-
class SearchView(ListView):
"""Perform a search through resources"""
context['type'] = self.type
context['count'] = self.object_list.count()
return context
+
+
+
+class SearchViewPublished(SearchView):
+ """Perform a search through published resources"""
+
+ template_name='telemeta/search_results.html'
+ paginate_by = 20
+
+ def get_queryset(self):
+ self.type = None
+ if 'type' in self.kwargs:
+ self.type = self.kwargs['type']
+ if(self.type=='items'):
+ return SearchView.get_queryset(self).filter(collection__code__contains="_E_")
+ else:
+ return SearchView.get_queryset(self).filter(code__contains="_E_")
+
+ def get_context_data(self, *args, **kwargs):
+ context = super(SearchView, self).get_context_data(*args, **kwargs)
+ context['criteria'] = self.criteria
+ context['collections_num'] = self.collections.filter(code__contains="_E_").count()
+ context['items_num'] = self.items.filter(collection__code__contains="_E_").count()
+ context['corpus_num'] = self.corpus.filter(code__contains="_E_").count()
+ context['fonds_num'] = self.fonds.filter(code__contains="_E_").count()
+ context['type'] = self.type
+ context['count'] = self.object_list.count()
+ context['result_filter'] = "published"
+ return context
+
+class SearchViewUnpublished(SearchView):
+ """Perform a search through published resources"""
+
+ template_name='telemeta/search_results.html'
+ paginate_by = 20
+
+ def get_queryset(self):
+ self.type = None
+ if 'type' in self.kwargs:
+ self.type = self.kwargs['type']
+ if(self.type=='items'):
+ return SearchView.get_queryset(self).filter(collection__code__contains="_I_")
+ else:
+ return SearchView.get_queryset(self).filter(code__contains="_I_")
+
+ def get_context_data(self, *args, **kwargs):
+ context = super(SearchView, self).get_context_data(*args, **kwargs)
+ context['criteria'] = self.criteria
+ context['collections_num'] = self.collections.filter(code__contains="_I_").count()
+ context['items_num'] = self.items.filter(collection__code__contains="_I_").count()
+ context['corpus_num'] = self.corpus.filter(code__contains="_I_").count()
+ context['fonds_num'] = self.fonds.filter(code__contains="_I_").count()
+ context['type'] = self.type
+ context['count'] = self.object_list.count()
+ context['result_filter'] = "unpublished"
+ return context
+
+class SearchViewFullAccess(SearchView):
+ """Perform a search through published resources"""
+
+ template_name='telemeta/search_results.html'
+ paginate_by = 20
+
+ def get_queryset(self):
+ self.type = None
+ if 'type' in self.kwargs:
+ self.type = self.kwargs['type']
+ if(self.type=='items'):
+ search = SearchView.get_queryset(self).filter(Q(collection__public_access="full")|Q(public_access="full")).exclude(collection__public_access="none")
+ return search;
+ else :
+ return SearchView.get_queryset(self).filter(public_access="full")
+
+ def get_context_data(self, *args, **kwargs):
+ context = super(SearchView, self).get_context_data(*args, **kwargs)
+ context['criteria'] = self.criteria
+ context['collections_num'] = self.collections.filter(public_access="full").count()
+ context['items_num'] = self.items.filter(Q(collection__public_access="full")|Q(public_access="full")).exclude(collection__public_access="none").count()
+ context['corpus_num'] = self.corpus.filter(public_access="full").count()
+ context['fonds_num'] = self.fonds.filter(public_access="full").count()
+ context['type'] = self.type
+ context['count'] = self.object_list.count()
+ context['result_filter'] = "full"
+ return context
+
+class SearchViewRestrictedAccess(SearchView):
+ """Perform a search through published resources"""
+
+ template_name='telemeta/search_results.html'
+ paginate_by = 20
+
+ def get_queryset(self):
+ self.type = None
+ if 'type' in self.kwargs:
+ self.type = self.kwargs['type']
+ if(self.type=='items'):
+ search = SearchView.get_queryset(self).filter(Q(collection__public_access="none")|Q(public_access="none")).exclude(collection__public_access="full")
+ return search;
+ else :
+ return SearchView.get_queryset(self).filter(public_access="none")
+
+ def get_context_data(self, *args, **kwargs):
+ context = super(SearchView, self).get_context_data(*args, **kwargs)
+ context['criteria'] = self.criteria
+ context['collections_num'] = self.collections.filter(public_access="none").count()
+ context['items_num'] = self.items.filter(Q(collection__public_access="none")|Q(public_access="none")).exclude(collection__public_access="full").count()
+ context['corpus_num'] = self.corpus.filter(public_access="none").count()
+ context['fonds_num'] = self.fonds.filter(public_access="none").count()
+ context['type'] = self.type
+ context['count'] = self.object_list.count()
+ context['result_filter'] = "none"
+ return context
\ No newline at end of file
context['count'] = self.object_list.count()
return context
+class ItemListViewFullAccess(ListView):
+
+ model = MediaItem
+ template_name = "telemeta/mediaitem_list.html"
+ paginate_by = 20
+ queryset = MediaItem.objects.enriched().filter(Q(collection__public_access="full")|Q(public_access="full")).exclude(collection__public_access="none").order_by('code', 'old_code')
+
+ def get_context_data(self, **kwargs):
+ context = super(ItemListViewFullAccess, self).get_context_data(**kwargs)
+ context['count'] = self.object_list.count()
+ return context
+
class ItemUnpublishedListView(ItemListView):