From: nicolas neto Date: Tue, 4 Jul 2017 15:02:31 +0000 (+0200) Subject: count enumeration value in admin X-Git-Tag: 1.6.4^2~17^2~2^2~12 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=4d6f19df826c94002d8a660222c4f0ab35fea980;p=telemeta.git count enumeration value in admin --- diff --git a/telemeta/templates/telemeta/collection_enum_list.html b/telemeta/templates/telemeta/collection_enum_list.html new file mode 100644 index 00000000..a2e091f8 --- /dev/null +++ b/telemeta/templates/telemeta/collection_enum_list.html @@ -0,0 +1,51 @@ +{% extends "telemeta/base.html" %} +{% load telemeta_tags %} +{% load i18n %} +{% load bootstrap_pagination %} + +{% block head_title %}{% trans "Collections" %} - {{ block.super }}{% endblock %} + +{% block title%} +
+
+ {% trans "Collections" %} ({{ page_obj.start_index }} - {{ page_obj.end_index }} / {{ count }}) +
{{ enum_name }} / {{ enum_value }} +
+
+{% bootstrap_paginate page_obj range=10 show_first_last="True" %} +
+
 
+
+ +{% endblock %} + +{% block title_buttons %} + + +
+ + +
+ {% if user.is_authenticated and perms.telemeta.add_mediacollection %} + + + + {% endif %} +{% endblock %} + +{% block content %} +
+{% with object_list as collections %} +{% include "telemeta/inc/collection_list.html" %} +{% endwith %} +
+{% endblock %} diff --git a/telemeta/templates/telemeta/enumeration_edit.html b/telemeta/templates/telemeta/enumeration_edit.html index 96847e2e..3a2540e2 100644 --- a/telemeta/templates/telemeta/enumeration_edit.html +++ b/telemeta/templates/telemeta/enumeration_edit.html @@ -4,52 +4,77 @@ {% block head_title %}{% trans "Enumeration" %} : {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %} {% block title %} -

{% trans "Administration" %} > {% trans "Enumerations" %}

+ {% if perms.telemeta.change_keyword %} +

{% trans "Administration" %} > {% trans "Enumerations" %}

+ {% else %} +

{% trans "Enumerations" %}

+ {% endif %} {% endblock %} {% block tabcontents %} -

{{ enumeration_name|capfirst }}

-
{% csrf_token %} -
- {% trans "Add entry" %} -
- - -
- -
-
- {% if enumeration_values %} -
{% csrf_token %} - - - - - - - {% for record in enumeration_values %} - - - - - {% endfor %} - -
 {% trans "Value"%}
- {{record.value}}
- -
- {% else %} -

{% trans "This enumeration is empty" %}

- {% endif %} - -
+ {% if perms.telemeta.change_keyword %} +

{{ enumeration_name|capfirst }}

+
{% csrf_token %} +
+ {% trans "Add entry" %} +
+ + +
+ +
+
+ {% endif %} + {% if enumeration_values %} +
{% csrf_token %} + + + + + + + {% for record in enumeration_values %} + + {% if perms.telemeta.change_keyword %} + + {% else %} + + {% endif %} + + {% if enumeration_id == "contextkeyword" %} + + {% else %} + + {% if enumeration_support == "Collection" %} + + {% else %} + + {% endif %} + + {% endif %} + + + + {% endfor %} + +
 {% trans "Value"%}nb{{ enumeration_support }}
+ {{record.value}} {{ enumeration_count.pop }} {{ enumeration_count.pop }} {{ enumeration_count.pop }}
+
+
+ {% if perms.telemeta.change_keyword %} + {% trans "Remove selected items" %} + {% endif %} +
+
+ {% else %} +

{% trans "This enumeration is empty" %}

+ {% endif %} + +
{% endblock %} diff --git a/telemeta/templates/telemeta/media_item_enum_list.html b/telemeta/templates/telemeta/media_item_enum_list.html new file mode 100644 index 00000000..728ae4ff --- /dev/null +++ b/telemeta/templates/telemeta/media_item_enum_list.html @@ -0,0 +1,87 @@ +{% extends "telemeta/base.html" %} +{% load i18n %} +{% load telemeta_tags %} +{% load bootstrap_pagination %} + +{% block head_title %}{% trans "Media Items" %} {% block instru_name %}{% endblock %}- {{ block.super }}{% endblock %} + +{% block title %} +
+
+ item {% trans "Items" %} + + {% block instru_name_h %}{% endblock %}({{ page_obj.start_index }} - {{ page_obj.end_index }} / {{ count }}) +
{{ enum_name }} / {{ enum_value }} +
+
+ {% bootstrap_paginate page_obj range=10 show_first_last="True" %} +
+
 
+
+{% endblock %} +{% block title_buttons %} +
+ + + +
+ +
+ +
+ +
+
+ +{% endblock %} + +{% block content %} + {% with object_list as items %} +
+ {% include "telemeta/inc/mediaitem_list.html" %} +
+ {% endwith %} +{% endblock %} + +{% block extra_stylesheets %} + +{% endblock %} + + +{% block extra_javascript %} + + + + +{% endblock %} \ No newline at end of file diff --git a/telemeta/urls.py b/telemeta/urls.py index 39c94054..5d02642c 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -52,200 +52,218 @@ export_extensions = "|".join(item_view.list_export_extensions()) 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"), - - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/$', ItemDetailView.as_view(), name="telemeta-item-detail"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/$', ItemDetailDCView.as_view(), name="telemeta-item-dublincore"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/xml/$', item_view.item_detail, {'format': 'dublin_core_xml'}, name="telemeta-item-dublincore-xml"), - url(r'^archives/items/download/(?P[A-Za-z0-9._-]+)\.(?P' + export_extensions + ')$', item_view.item_export, name="telemeta-item-export"), - url(r'^archives/items/download/(?P[A-Za-z0-9._-]+)\.(?P' + export_extensions + ')/isAvailable$', item_view.item_export_available, name="telemeta-item-export-available"), - - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/visualize/(?P[0-9a-z_]+)/(?P[0-9A-Z]+)x(?P[0-9A-Z]+)/$', item_view.item_visualize, name="telemeta-item-visualize"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/analyze/xml/$', item_view.item_analyze_xml, name="telemeta-item-analyze-xml"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/item_xspf.xml$', item_view.item_playlist, dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-item-xspf"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/edit/$', ItemEditView.as_view(), name="telemeta-item-edit"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/copy/$', ItemCopyView.as_view(), name="telemeta-item-copy"), - url(r'^archives/items_add/$', ItemAddView.as_view(), name="telemeta-item-add"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/$', ItemPlayerDefaultView.as_view(), name="telemeta-item-player"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/video-player/(?P[0-9]+)x(?P[0-9]+)/$', ItemVideoPlayerView.as_view(), name="telemeta-item-video-player"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/delete/$', item_view.item_delete, name="telemeta-item-delete"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', item_view.related_media_item_stream, name="telemeta-item-related"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', item_view.related_media_item_download, name="telemeta-item-related-download"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/markers/json/$', ItemMarkerJsonView.as_view(), name="telemeta-item-markers-json"), - - # Markers - url(r'^archives/markers/(?P[A-Za-z0-9]+)/$', item_view.item_detail, name="telemeta-item-detail-marker"), - - # Redirections to old URLs - url(r'^items/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/items/%(path)s/', permanent= True), name="telemeta-item-redir"), - url(r'^collections/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/collections/%(path)s/', permanent= True), name="telemeta-collection-redir"), - url(r'^corpus/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/corpus/%(path)s/', permanent= True), name="telemeta-corpus-redir"), - url(r'^fonds/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/fonds/%(path)s/', permanent= True), name="telemeta-fonds-redir"), - - # collections - url(r'^archives/collections/$', CollectionListView.as_view(), name="telemeta-collections"), - url(r'^archives/collections_unpublished/$', CollectionUnpublishedListView.as_view(), name="telemeta-collections-unpublished"), - url(r'^archives/collections_published/$', CollectionPublishedListView.as_view(), name="telemeta-collections-published"), - url(r'^archives/collections_sound/$', CollectionSoundListView.as_view(), name="telemeta-collections-sound"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/$', CollectionDetailView.as_view(), name="telemeta-collection-detail"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/dc/$', CollectionDetailViewDC.as_view(), name="telemeta-collection-dublincore"), - # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection_xspf.xml$', collection_view.collection_playlist, dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-collection-xspf"), - # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection.m3u$', collection_view.collection_playlist, dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), name="telemeta-collection-m3u"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/edit/$', CollectionEditView.as_view(), name="telemeta-collection-edit"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/copy/$', CollectionCopyView.as_view(), name="telemeta-collection-copy"), - url(r'^archives/collections_add/$', CollectionAddView.as_view(), name="telemeta-collection-add"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/add_item/$', ItemAddView.as_view(), name="telemeta-collection-additem"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', collection_view.related_media_collection_download, name="telemeta-collection-related-download"), - - # FIXME: need all paths - url(r'^collections/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(), {'url': '/archives/collections/%(path)s/', 'permanent': False}, name="telemeta-collection-redir"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/zip/$', CollectionZipView.as_view(), name="telemeta-collection-zip"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/epub/$', CollectionEpubView.as_view(), name="telemeta-collection-epub"), - - # Generic resources - url(r'^archives/(?P[A-Za-z0-9._-]+)/$', ResourceListView.as_view(), name="telemeta-resource-list"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', ResourceDetailView.as_view(), name="telemeta-resource-detail"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/edit/$', ResourceEditView.as_view(), name="telemeta-resource-edit"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/dc/$', ResourceDetailDCView.as_view(), name="telemeta-resource-dublincore"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/copy/$', ResourceCopyView.as_view(), name="telemeta-resource-copy"), - url(r'^archives/(?P[A-Za-z0-9._-]+)_add$', ResourceAddView.as_view(), name="telemeta-resource-add"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/delete/$', ResourceDeleteView.as_view(), name="telemeta-resource-delete"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/epub/download/$', ResourceEpubView.as_view(), name="telemeta-resource-epub-download"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/epub/list/$', ResourceEpubListView.as_view(), name="telemeta-resource-epub-list"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/epub/$', ResourceEpubPasswordView.as_view(), name="telemeta-resource-password-epub"), - - # search - # url(r'^archives/$', home_view.search, name="telemeta-archives"), - url(r'^search/$', HaystackSearch(), name='haystack_search'), - url(r'^search/autocomplete/$', autocomplete), - url(r'^search/quick/(?P[A-Za-z0-9._-]+)/$', HaystackSearch(), name='haystack_search_type'), - url(r'^search/advance/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search'), - url(r'^search/advance/(?P[A-Za-z0-9._-]+)/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search_type'), - #url(r'^search/booleaninstru/$', boolean_view.get_boolean_query), - - url(r'^search/playlist_add/(?P[A-Za-z0-9._-]+)/$', NewPlaylistView().display, name='haystack_playlist'), - url(r'^search/playlist_confirmation/(?P[A-Za-z0-9._-]+)/$',NewPlaylistView().addToPlaylist, name='add_confirmation'), - - url(r'^complete_location/$', home_view.complete_location, name="telemeta-complete-location"), - - # administration - url(r'^admin/$', admin_view.admin_index, name="telemeta-admin"), - url(r'^admin/general/$', admin_view.admin_general, name="telemeta-admin-general"), - url(r'^admin/enumerations/$', admin_view.admin_enumerations, name="telemeta-admin-enumerations"), - url(r'^admin/users/$', admin_view.admin_users, name="telemeta-admin-users"), - - # instruments administration - url(r'^admin/instruments/$', instrument_view.edit_instrument , name="telemeta-instrument-edit"), - url(r'^admin/instruments/add/$', instrument_view.add_to_instrument, name="telemeta-instrument-add"), - url(r'^admin/instruments/update/$', instrument_view.update_instrument, name="telemeta-instrument-update"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/$', instrument_view.edit_instrument_value, name="telemeta-instrument-record-edit"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items-published/$', ItemInstrumentPublishedListView.as_view(),name="telemeta-items-instrument-published"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items-unpublished/$', ItemInstrumentUnpublishedListView.as_view(),name="telemeta-items-instrument-unpublished"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items-sound/$', ItemInstrumentSoundListView.as_view(),name="telemeta-items-instrument-sound"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items/$', ItemInstrumentListView.as_view(), name="telemeta-instrument-item-list"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/update/$', instrument_view.update_instrument_value, name="telemeta-instrument-record-update"), - url(r'^admin/instruments/' + r'(?P[0-9]+)/replace/$', instrument_view.replace_instrument_value, name="telemeta-instrument-record-replace"), - - # instruments aliases administration - url(r'^admin/instrument_aliases/$', instrument_alias_view.edit_instrument, name="telemeta-instrument-alias-edit"), - url(r'^admin/instrument_aliases/add/$', instrument_alias_view.add_to_instrument, name="telemeta-instrument-alias-add"), - url(r'^admin/instrument_aliases/update/$', instrument_alias_view.update_instrument, name="telemeta-instrument-alias-update"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/$', instrument_alias_view.edit_instrument_value, name="telemeta-instrument-alias-record-edit"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/update/$', instrument_alias_view.update_instrument_value, name="telemeta-instrument-alias-record-update"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/replace/$', instrument_alias_view.replace_instrument_value, name="telemeta-instrument-alias-record-replace"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-published/$', ItemAliasPublishedListView.as_view(),name="telemeta-items-alias-published"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-unpublished/$', ItemAliasUnpublishedListView.as_view(),name="telemeta-items-alias-unpublished"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-sound/$', ItemAliasSoundListView.as_view(),name="telemeta-items-alias-sound"), - url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-items/$', ItemAliasListView.as_view(), name="telemeta-alias-item-list"), - - # enumerations administration - url(r'^admin/enumerations/(?P[0-9a-z]+)/$', admin_view.edit_enumeration , name="telemeta-enumeration-edit"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/add/$', admin_view.add_to_enumeration, name="telemeta-enumeration-add"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/update/$', admin_view.update_enumeration, name="telemeta-enumeration-update"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/$', admin_view.edit_enumeration_value, name="telemeta-enumeration-record-edit"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/update/$', admin_view.update_enumeration_value, name="telemeta-enumeration-record-update"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/replace/$', admin_view.replace_enumeration_value, name="telemeta-enumeration-replace"), - - # Geographic browsing - url(r'^geo/$', geo_view.list_continents, name="telemeta-geo-continents"), - url(r'^geo/(?P[a-z_]+)/$', geo_view.list_countries, name="telemeta-geo-countries"), - url(r'^geo/collections/(?P[a-z_]+)/(?P[a-z_]+)/$', GeoCountryCollectionView.as_view(), name="telemeta-geo-country-collections"), - url(r'^geo/items/(?P[a-z_]+)/(?P[a-z_]+)/$', GeoCountryItemView.as_view() , name="telemeta-geo-country-items"), - url(r'^geo/country_info/(?P[0-9a-z]+)/$', geo_view.country_info, name="telemeta-country-info"), - - # Flat pages - url(r'^pages/(?P.*)$', home_view.render_flatpage, name="telemeta-flatpage"), - - # OAI-PMH Data Provider - url(r'^oai/.*$', home_view.handle_oai_request, name="telemeta-oai"), - - # Authentication - url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), - url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), - #url(r'^login/$', 'ipauth.views.login', {'template_name': 'telemeta/login.html'}, - # name="telemeta-login"), - url(r'^logout/$', home_view.logout, name="telemeta-logout"), - - # Users - url(r'^accounts/$', home_view.users, name="telemeta-users"), - - # Desk - url(r'^desk/lists/(?:(?P[0-9]+)/)?$', home_view.lists, name="telemeta-desk-lists"), - url(r'^desk/profile/(?P[A-Za-z0-9@+._-]+)/$', profile_view.profile_detail, name="telemeta-desk-profile"), - url(r'^desk/home/$', home_view.home, name="telemeta-desk-home"), - - # Profiles - url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/$', profile_view.profile_detail, name="telemeta-profile-detail"), - url(r'^users/(?P[A-Za-z0-9._-]+)/$', profile_view.profile_detail, name="telemeta-profile-detail-2"), - url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/edit/$', profile_view.profile_edit, name="telemeta-profile-edit"), - url(r'^accounts/(?P[A-Za-z0-9._-]+)/rss/$', UserRevisionsFeed(), name="telemeta-user-rss"), - - # Registration - url(r'^accounts/password_change/$', 'django.contrib.auth.views.password_change', {'template_name': 'telemeta/registration/password_change_form.html'}, name="password_change"), - url(r'^accounts/password_change_done/$', 'django.contrib.auth.views.password_change_done', {'template_name': 'telemeta/registration/password_change_done.html'}, name="password_change_done"), - url(r'^accounts/password_reset/$', 'django.contrib.auth.views.password_reset', {'template_name': 'telemeta/registration/password_reset_form.html', 'email_template_name': 'registration/password_reset_email.html'}, name="password_reset"), - url(r'^accounts/password_reset_done/$', 'django.contrib.auth.views.password_reset_done', {'template_name': 'telemeta/registration/password_reset_done.html'}, name="password_reset_done"), - url(r'^accounts/password_reset_confirm/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name': 'telemeta/registration/password_reset_confirm.html'}, name="password_reset_confirm"), - url(r'^accounts/password_reset_complete/$', 'django.contrib.auth.views.password_reset_complete', {'template_name': 'telemeta/registration/password_reset_complete.html'}, name="password_reset_complete"), - - # JSON RPC - url(r'jsonrpc/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'), - - # Playlists - url(r'^playlists/(?P[a-zA-Z0-9]+)/(?P[a-zA-Z0-9]+)/csv/$', playlist_view.playlist_csv_export, name="telemeta-playlist-csv-export"), - url(r'^playlists/playlist_add/$', NewPlaylistView().display, name='playlist'), - - # RSS feeds - url(r'^rss/$', LastestRevisionsFeed(), name="telemeta-rss"), - - # Static media - # FIXME:need to move export dir from the cache - url(r'^media/cache/(?P.*)$', 'django.views.static.serve', {'document_root': settings.TELEMETA_CACHE_DIR,}), - - url(r'^', include('jqchat.urls')), - - # Timeside - #url(r'^timeside/', include('timeside.server.urls')), - -) + 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"), + + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/$', ItemDetailView.as_view(), name="telemeta-item-detail"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/$', ItemDetailDCView.as_view(), name="telemeta-item-dublincore"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/xml/$', item_view.item_detail, {'format': 'dublin_core_xml'}, name="telemeta-item-dublincore-xml"), + url(r'^archives/items/download/(?P[A-Za-z0-9._-]+)\.(?P' + export_extensions + ')$', item_view.item_export, name="telemeta-item-export"), + url(r'^archives/items/download/(?P[A-Za-z0-9._-]+)\.(?P' + export_extensions + ')/isAvailable$', item_view.item_export_available, name="telemeta-item-export-available"), + + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/visualize/(?P[0-9a-z_]+)/(?P[0-9A-Z]+)x(?P[0-9A-Z]+)/$', item_view.item_visualize, name="telemeta-item-visualize"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/analyze/xml/$', item_view.item_analyze_xml, name="telemeta-item-analyze-xml"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/item_xspf.xml$', item_view.item_playlist, dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-item-xspf"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/edit/$', ItemEditView.as_view(), name="telemeta-item-edit"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/copy/$', ItemCopyView.as_view(), name="telemeta-item-copy"), + url(r'^archives/items_add/$', ItemAddView.as_view(), name="telemeta-item-add"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/$', ItemPlayerDefaultView.as_view(), name="telemeta-item-player"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/video-player/(?P[0-9]+)x(?P[0-9]+)/$', ItemVideoPlayerView.as_view(), name="telemeta-item-video-player"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/delete/$', item_view.item_delete, name="telemeta-item-delete"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', item_view.related_media_item_stream, name="telemeta-item-related"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', item_view.related_media_item_download, name="telemeta-item-related-download"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/markers/json/$', ItemMarkerJsonView.as_view(), name="telemeta-item-markers-json"), + + # Markers + url(r'^archives/markers/(?P[A-Za-z0-9]+)/$', item_view.item_detail, name="telemeta-item-detail-marker"), + + # Redirections to old URLs + url(r'^items/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/items/%(path)s/', permanent= True), name="telemeta-item-redir"), + url(r'^collections/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/collections/%(path)s/', permanent= True), name="telemeta-collection-redir"), + url(r'^corpus/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/corpus/%(path)s/', permanent= True), name="telemeta-corpus-redir"), + url(r'^fonds/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(url='/archives/fonds/%(path)s/', permanent= True), name="telemeta-fonds-redir"), + + # collections + url(r'^archives/collections/$', CollectionListView.as_view(), name="telemeta-collections"), + url(r'^archives/collections_unpublished/$', CollectionUnpublishedListView.as_view(), name="telemeta-collections-unpublished"), + url(r'^archives/collections_published/$', CollectionPublishedListView.as_view(), name="telemeta-collections-published"), + url(r'^archives/collections_sound/$', CollectionSoundListView.as_view(), name="telemeta-collections-sound"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/$', CollectionDetailView.as_view(), name="telemeta-collection-detail"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/dc/$', CollectionDetailViewDC.as_view(), name="telemeta-collection-dublincore"), + # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection_xspf.xml$', collection_view.collection_playlist, dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-collection-xspf"), + # url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection.m3u$', collection_view.collection_playlist, dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), name="telemeta-collection-m3u"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/edit/$', CollectionEditView.as_view(), name="telemeta-collection-edit"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/copy/$', CollectionCopyView.as_view(), name="telemeta-collection-copy"), + url(r'^archives/collections_add/$', CollectionAddView.as_view(), name="telemeta-collection-add"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/add_item/$', ItemAddView.as_view(), name="telemeta-collection-additem"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', collection_view.related_media_collection_download, name="telemeta-collection-related-download"), + + # FIXME: need all paths + url(r'^collections/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(), {'url': '/archives/collections/%(path)s/', 'permanent': False}, name="telemeta-collection-redir"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/zip/$', CollectionZipView.as_view(), name="telemeta-collection-zip"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/epub/$', CollectionEpubView.as_view(), name="telemeta-collection-epub"), + + # Generic resources + url(r'^archives/(?P[A-Za-z0-9._-]+)/$', ResourceListView.as_view(), name="telemeta-resource-list"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', ResourceDetailView.as_view(), name="telemeta-resource-detail"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/edit/$', ResourceEditView.as_view(), name="telemeta-resource-edit"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/dc/$', ResourceDetailDCView.as_view(), name="telemeta-resource-dublincore"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/copy/$', ResourceCopyView.as_view(), name="telemeta-resource-copy"), + url(r'^archives/(?P[A-Za-z0-9._-]+)_add$', ResourceAddView.as_view(), name="telemeta-resource-add"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/delete/$', ResourceDeleteView.as_view(), name="telemeta-resource-delete"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/epub/download/$', ResourceEpubView.as_view(), name="telemeta-resource-epub-download"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/epub/list/$', ResourceEpubListView.as_view(), name="telemeta-resource-epub-list"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/epub/$', ResourceEpubPasswordView.as_view(), name="telemeta-resource-password-epub"), + + # search + # url(r'^archives/$', home_view.search, name="telemeta-archives"), + url(r'^search/$', HaystackSearch(), name='haystack_search'), + url(r'^search/autocomplete/$', autocomplete), + url(r'^search/quick/(?P[A-Za-z0-9._-]+)/$', HaystackSearch(), name='haystack_search_type'), + url(r'^search/advance/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search'), + url(r'^search/advance/(?P[A-Za-z0-9._-]+)/$', HaystackAdvanceSearch(form_class=HayAdvanceForm, template='search/advanceSearch.html'), name='haystack_advance_search_type'), + #url(r'^search/booleaninstru/$', boolean_view.get_boolean_query), + + url(r'^search/playlist_add/(?P[A-Za-z0-9._-]+)/$', NewPlaylistView().display, name='haystack_playlist'), + url(r'^search/playlist_confirmation/(?P[A-Za-z0-9._-]+)/$',NewPlaylistView().addToPlaylist, name='add_confirmation'), + + url(r'^complete_location/$', home_view.complete_location, name="telemeta-complete-location"), + + # administration + url(r'^admin/$', admin_view.admin_index, name="telemeta-admin"), + url(r'^admin/general/$', admin_view.admin_general, name="telemeta-admin-general"), + url(r'^admin/enumerations/$', admin_view.admin_enumerations, name="telemeta-admin-enumerations"), + url(r'^admin/users/$', admin_view.admin_users, name="telemeta-admin-users"), + + # instruments administration + url(r'^admin/instruments/$', instrument_view.edit_instrument , name="telemeta-instrument-edit"), + url(r'^admin/instruments/add/$', instrument_view.add_to_instrument, name="telemeta-instrument-add"), + url(r'^admin/instruments/update/$', instrument_view.update_instrument, name="telemeta-instrument-update"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/$', instrument_view.edit_instrument_value, name="telemeta-instrument-record-edit"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items-published/$', ItemInstrumentPublishedListView.as_view(),name="telemeta-items-instrument-published"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items-unpublished/$', ItemInstrumentUnpublishedListView.as_view(),name="telemeta-items-instrument-unpublished"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items-sound/$', ItemInstrumentSoundListView.as_view(),name="telemeta-items-instrument-sound"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/'+'list-items/$', ItemInstrumentListView.as_view(), name="telemeta-instrument-item-list"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/update/$', instrument_view.update_instrument_value, name="telemeta-instrument-record-update"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/replace/$', instrument_view.replace_instrument_value, name="telemeta-instrument-record-replace"), + + # instruments aliases administration + url(r'^admin/instrument_aliases/$', instrument_alias_view.edit_instrument, name="telemeta-instrument-alias-edit"), + url(r'^admin/instrument_aliases/add/$', instrument_alias_view.add_to_instrument, name="telemeta-instrument-alias-add"), + url(r'^admin/instrument_aliases/update/$', instrument_alias_view.update_instrument, name="telemeta-instrument-alias-update"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/$', instrument_alias_view.edit_instrument_value, name="telemeta-instrument-alias-record-edit"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/update/$', instrument_alias_view.update_instrument_value, name="telemeta-instrument-alias-record-update"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/replace/$', instrument_alias_view.replace_instrument_value, name="telemeta-instrument-alias-record-replace"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-published/$', ItemAliasPublishedListView.as_view(),name="telemeta-items-alias-published"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-unpublished/$', ItemAliasUnpublishedListView.as_view(),name="telemeta-items-alias-unpublished"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-item-sound/$', ItemAliasSoundListView.as_view(),name="telemeta-items-alias-sound"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/'+'list-items/$', ItemAliasListView.as_view(), name="telemeta-alias-item-list"), + + # enumerations administration + url(r'^admin/enumerations/(?P[0-9a-z]+)/$',admin_view.edit_enumeration,name="telemeta-enumeration-edit"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/add/$',admin_view.add_to_enumeration,name="telemeta-enumeration-add"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/update/$', admin_view.update_enumeration,name="telemeta-enumeration-update"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/$',admin_view.edit_enumeration_value, name="telemeta-enumeration-record-edit"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/update/$',admin_view.update_enumeration_value, name="telemeta-enumeration-record-update"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/replace/$',admin_view.replace_enumeration_value, name="telemeta-enumeration-replace"), + + # Enumeration list collection + url( r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/collection/list/$',CollectionEnumListView.as_view(), name="telemeta-enumeration-list-collection"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/collections_unpublished/list/$',CollectionUnpublishedEnumListView.as_view(),name="telemeta-enumeration-list-collections-unpublished"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/collections_published/list/$',CollectionPublishedEnumListView.as_view(),name="telemeta-enumeration-list-collections-published"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/collections_sound/list/$',CollectionSoundEnumListView.as_view(), name="telemeta-enumeration-list-collections-sound"), + + # Enumeration list item + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/item/list/$',ItemEnumListView.as_view(), name="telemeta-enumeration-list-item"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/item_unpublished/list/$',ItemUnpublishedEnumListView.as_view(), name="telemeta-enumeration-list-item-unpublished"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/item_published/list/$',ItemPublishedEnumListView.as_view(), name="telemeta-enumeration-list-item-published"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/item_sound/list/$',ItemSoundEnumListView.as_view(), name="telemeta-enumeration-list-item-sound"), + + # keyword list + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/keyword_item/list/$',ItemKeywordListView.as_view(), name="telemeta-keyword-list-item"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/keyword_item_unpublished/list/$',ItemKeywordPublishedListView.as_view(), name="telemeta-keyword-list-item-unpublished"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/keyword_item_published/list/$',ItemKeywordUnpublishedListView.as_view(), name="telemeta-keyword-list-item-published"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/keyword_item_sound/list/$',ItemKeywordSoundListView.as_view(), name="telemeta-keyword-list-item-sound"), + + # Geographic browsing + url(r'^geo/$', geo_view.list_continents, name="telemeta-geo-continents"), + url(r'^geo/(?P[a-z_]+)/$', geo_view.list_countries, name="telemeta-geo-countries"), + url(r'^geo/collections/(?P[a-z_]+)/(?P[a-z_]+)/$', GeoCountryCollectionView.as_view(), name="telemeta-geo-country-collections"), + url(r'^geo/items/(?P[a-z_]+)/(?P[a-z_]+)/$', GeoCountryItemView.as_view() , name="telemeta-geo-country-items"), + url(r'^geo/country_info/(?P[0-9a-z]+)/$', geo_view.country_info, name="telemeta-country-info"), + + # Flat pages + url(r'^pages/(?P.*)$', home_view.render_flatpage, name="telemeta-flatpage"), + + # OAI-PMH Data Provider + url(r'^oai/.*$', home_view.handle_oai_request, name="telemeta-oai"), + + # Authentication + url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), + url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), + #url(r'^login/$', 'ipauth.views.login', {'template_name': 'telemeta/login.html'}, + # name="telemeta-login"), + url(r'^logout/$', home_view.logout, name="telemeta-logout"), + + # Users + url(r'^accounts/$', home_view.users, name="telemeta-users"), + + # Desk + url(r'^desk/lists/(?:(?P[0-9]+)/)?$', home_view.lists, name="telemeta-desk-lists"), + url(r'^desk/profile/(?P[A-Za-z0-9@+._-]+)/$', profile_view.profile_detail, name="telemeta-desk-profile"), + url(r'^desk/home/$', home_view.home, name="telemeta-desk-home"), + + # Profiles + url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/$', profile_view.profile_detail, name="telemeta-profile-detail"), + url(r'^users/(?P[A-Za-z0-9._-]+)/$', profile_view.profile_detail, name="telemeta-profile-detail-2"), + url(r'^accounts/(?P[A-Za-z0-9._-]+)/profile/edit/$', profile_view.profile_edit, name="telemeta-profile-edit"), + url(r'^accounts/(?P[A-Za-z0-9._-]+)/rss/$', UserRevisionsFeed(), name="telemeta-user-rss"), + + # Registration + url(r'^accounts/password_change/$', 'django.contrib.auth.views.password_change', {'template_name': 'telemeta/registration/password_change_form.html'}, name="password_change"), + url(r'^accounts/password_change_done/$', 'django.contrib.auth.views.password_change_done', {'template_name': 'telemeta/registration/password_change_done.html'}, name="password_change_done"), + url(r'^accounts/password_reset/$', 'django.contrib.auth.views.password_reset', {'template_name': 'telemeta/registration/password_reset_form.html', 'email_template_name': 'registration/password_reset_email.html'}, name="password_reset"), + url(r'^accounts/password_reset_done/$', 'django.contrib.auth.views.password_reset_done', {'template_name': 'telemeta/registration/password_reset_done.html'}, name="password_reset_done"), + url(r'^accounts/password_reset_confirm/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name': 'telemeta/registration/password_reset_confirm.html'}, name="password_reset_confirm"), + url(r'^accounts/password_reset_complete/$', 'django.contrib.auth.views.password_reset_complete', {'template_name': 'telemeta/registration/password_reset_complete.html'}, name="password_reset_complete"), + + # JSON RPC + url(r'jsonrpc/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'), + + # Playlists + url(r'^playlists/(?P[a-zA-Z0-9]+)/(?P[a-zA-Z0-9]+)/csv/$', playlist_view.playlist_csv_export, name="telemeta-playlist-csv-export"), + url(r'^playlists/playlist_add/$', NewPlaylistView().display, name='playlist'), + + # RSS feeds + url(r'^rss/$', LastestRevisionsFeed(), name="telemeta-rss"), + + # Static media + # FIXME:need to move export dir from the cache + url(r'^media/cache/(?P.*)$', 'django.views.static.serve', {'document_root': settings.TELEMETA_CACHE_DIR,}), + + url(r'^', include('jqchat.urls')), + + # Timeside + #url(r'^timeside/', include('timeside.server.urls')), + + ) if settings.DEBUG and 'debug_toolbar' in settings.INSTALLED_APPS: import debug_toolbar urlpatterns += patterns('', - url(r'^__debug__/', include(debug_toolbar.urls)), - # for the graphical browser/web console only, omissible - url(r'json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), - ) + url(r'^__debug__/', include(debug_toolbar.urls)), + # for the graphical browser/web console only, omissible + url(r'json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), + ) diff --git a/telemeta/views/admin.py b/telemeta/views/admin.py index ec579eb6..c940931b 100644 --- a/telemeta/views/admin.py +++ b/telemeta/views/admin.py @@ -77,17 +77,65 @@ class AdminView(object): @method_decorator(permission_required('telemeta.change_keyword')) def edit_enumeration(self, request, enumeration_id): - - enumeration = self.__get_enumeration(enumeration_id) + atr = ""; + print enumeration_id + enumeration = self.__get_enumeration(enumeration_id) if enumeration == None: raise Http404 - vars = self.__get_admin_context_vars() vars["enumeration_id"] = enumeration._meta.module_name vars["enumeration_name"] = enumeration._meta.verbose_name vars["enumeration_values"] = enumeration.objects.all() + vars["enumeration_support"]="" + vars["enumeration_count"] = [] + f = MediaCollection._meta.get_all_field_names() + for field in f : + if field in enumeration._meta.db_table.replace(" ","_"): + atr=field; + if enumeration._meta.db_table.replace(" ","_") == "context_keywords": + vars["enumeration_support"] = "Item" + vars["enumeration_count"] = self.__getCountKeyWord(vars["enumeration_values"]) + else: + if atr == "": + vars["enumeration_support"]="Item" + vars["enumeration_count"] = self.__getCountItem(enumeration, vars["enumeration_values"]) + else: + vars["enumeration_support"] = "Collection" + vars["enumeration_count"] = self.__getCountColl(vars["enumeration_values"],atr) + return render(request, 'telemeta/enumeration_edit.html', vars) + def __getCountColl(self, values, atr): + c = [] + for enum in values: + lookup = "%s__exact" % atr + c.append(MediaCollection.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) + c.reverse() + return c + + def __getCountItem(self, enumeration, values): + c = [] + atr="" + f = MediaItem._meta.get_all_field_names() + for field in f: + if field in enumeration._meta.db_table.replace(" ", "_"): + atr = field; + for enum in values: + lookup = "%s__exact" % atr + c.append(MediaItem.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) + c.reverse() + return c + + def __getCountKeyWord(self, values): + c = [] + atr="keyword_id" + for enum in values: + lookup = "%s__exact" % atr + c.append(MediaItemKeyword.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) + c.reverse() + return c + + @method_decorator(permission_required('telemeta.add_keyword')) def add_to_enumeration(self, request, enumeration_id): diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index d440221a..decc8bed 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -19,7 +19,7 @@ # Authors: Olivier Guilyardi # Guillaume Pellerin - +import telemeta from telemeta.views.core import * from telemeta.views.core import serve_media @@ -381,3 +381,82 @@ class CollectionEpubView(BaseEpubMixin, View): def dispatch(self, *args, **kwargs): return super(CollectionEpubView, self).dispatch(*args, **kwargs) + +class CollectionEnumListView(CollectionListView): + template_name = "telemeta/collection_enum_list.html" + + + def get_context_data(self, **kwargs): + context = super(CollectionListView, self).get_context_data(**kwargs) + context['enum']=self.request.path[20:-6].split('/')[0] + context['id']=self.request.path[20:-6].split('/')[1] + context['count'] = self.object_list.count() + context['enum_name'] = CollectionEnumListView().get_enumeration(self.request.path.split('/')[3])._meta.verbose_name + context['enum_value'] = CollectionEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get(id__exact=self.request.path.split('/')[4]) + return context + + def get_queryset(self): + enumeration = self.get_enumeration(self.request.path[20:-6].split('/')[0]) + queryset= self.get_coll(enumeration.objects.filter(id=self.request.path[20:-6].split('/')[1]).get()) + return queryset + + def get_coll(self, enum): + f = MediaCollection._meta.get_all_field_names() + for field in f: + if field in enum._meta.db_table.replace(" ", "_"): + atr = field; + atr = atr + lookup = "%s__exact" % atr + return MediaCollection.objects.filter(**{lookup: enum.__getattribute__("id")}) + + def get_enumeration(self,id): + from django.db.models import get_models + models = get_models(telemeta.models) + for model in models: + if model._meta.module_name == id: + break + + if model._meta.module_name != id: + return None + return model + + +class CollectionPublishedEnumListView(CollectionEnumListView): + + def get_queryset(self): + c = CollectionEnumListView() + #id of value of enumeration + i= self.request.path.split('/')[4] + enumeration = c.get_enumeration(self.request.path.split('/')[3]) + queryset = self.get_coll(enumeration.objects.filter(id=i).get(), c) + return queryset + + def get_coll(self, enum,c): + return c.get_coll(enum).filter(code__contains='_E_') + + +class CollectionUnpublishedEnumListView(CollectionEnumListView): + + def get_queryset(self): + c = CollectionEnumListView() + #id of value of enumeration + i= self.request.path.split('/')[4] + enumeration = c.get_enumeration( self.request.path.split('/')[3]) + queryset = self.get_coll(enumeration.objects.filter(id=i).get(), c) + return queryset + + def get_coll(self, enum, c): + return c.get_coll(enum).filter(code__contains='_I_') + + +class CollectionSoundEnumListView(CollectionEnumListView): + def get_queryset(self): + c = CollectionEnumListView() + #id of value of enumeration + i= self.request.path.split('/')[4] + enumeration = c.get_enumeration( self.request.path.split('/')[3]) + queryset = self.get_coll(enumeration.objects.filter(id=i).get(), c) + return queryset + + def get_coll(self, enum,c): + return c.get_coll(enum).sound().order_by('code', 'old_code') diff --git a/telemeta/views/item.py b/telemeta/views/item.py index df24ffb5..f9903f70 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -20,6 +20,7 @@ # Authors: Olivier Guilyardi # Guillaume Pellerin +import telemeta from telemeta.views.core import * from telemeta.views.core import serve_media @@ -32,7 +33,6 @@ import time class ItemBaseMixin(TelemetaBaseMixin): - graphers = timeside.core.processor.processors(timeside.core.api.IGrapher) decoders = timeside.core.processor.processors(timeside.core.api.IDecoder) encoders = timeside.core.processor.processors(timeside.core.api.IEncoder) @@ -45,16 +45,16 @@ class ItemBaseMixin(TelemetaBaseMixin): default_grapher_sizes = getattr(settings, 'TIMESIDE_DEFAULT_GRAPHER_SIZES', ['346x130', ]) auto_zoom = getattr(settings, 'TIMESIDE_AUTO_ZOOM', False) - public_graphers = ['waveform_centroid' ,'waveform_simple', - 'spectrogram', 'spectrogram_log'] - + public_graphers = ['waveform_centroid', 'waveform_simple', + 'spectrogram', 'spectrogram_log'] + def get_graphers(self): graphers = [] user = self.request.user graphers_access = (user.is_staff or user.is_superuser or user.has_perm('can_run_analysis')) - + for grapher in self.graphers: if (not graphers_access and grapher.id() not in self.public_graphers): @@ -297,7 +297,7 @@ class ItemView(ItemBaseMixin): graph = grapher(width=width, height=height) (decoder | graph).run() graph.watermark('timeside', opacity=.6, margin=(5, 5)) - #f = open(path, 'w') + # f = open(path, 'w') graph.render(output=path) # f.close() self.cache_data.add_file(image_file) @@ -408,7 +408,7 @@ class ItemView(ItemBaseMixin): video = item.file.path response = serve_media(video, content_type=mime_type) # response['Content-Disposition'] = 'attachment' - # TF : I don't know why empty attachment was set + #  TF : I don't know why empty attachment was set # TODO: remove if useless if return_availability: data = json.dumps({'available': True}) @@ -420,7 +420,7 @@ class ItemView(ItemBaseMixin): video = item.file.path response = serve_media(video, content_type=mime_type) # response['Content-Disposition'] = 'attachment' - # TF : I don't know why empty attachment was set, + #  TF : I don't know why empty attachment was set, # TODO: remove if useless if return_availability: data = json.dumps({'available': True}) @@ -428,7 +428,7 @@ class ItemView(ItemBaseMixin): return response (media, mime_type) = self.item_transcode(item, extension) - #media = None + # media = None if media: if return_availability: data = json.dumps({'available': True}) @@ -447,7 +447,7 @@ class ItemView(ItemBaseMixin): messages.info(request, title) response = render(request, 'telemeta/messages.html', {'description': description}) from django.utils.cache import patch_cache_control - #patch_cache_control(response, no_cache=True, no_store=True, must_revalidate=True) + # patch_cache_control(response, no_cache=True, no_store=True, must_revalidate=True) return response def item_export_available(self, request, public_id, extension): @@ -491,7 +491,6 @@ class ItemView(ItemBaseMixin): class ItemListView(ListView): - model = MediaItem template_name = "telemeta/mediaitem_list.html" queryset = MediaItem.objects.enriched().order_by('code', 'old_code') @@ -507,11 +506,12 @@ class ItemListView(ListView): 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")).sound().exclude(collection__public_access="none").order_by('code', 'old_code') + queryset = MediaItem.objects.enriched().filter( + Q(collection__public_access="full") | Q(public_access="full")).sound().exclude( + collection__public_access="none").order_by('code', 'old_code') def get_context_data(self, **kwargs): context = super(ItemListViewFullAccess, self).get_context_data(**kwargs) @@ -520,22 +520,18 @@ class ItemListViewFullAccess(ListView): class ItemUnpublishedListView(ItemListView): - queryset = MediaItem.objects.filter(collection__code__contains='_I_').order_by('code', 'old_code') class ItemPublishedListView(ItemListView): - queryset = MediaItem.objects.filter(collection__code__contains='_E_').order_by('code', 'old_code') class ItemSoundListView(ItemListView): - queryset = MediaItem.objects.sound().order_by('code', 'old_code') class ItemInstrumentListView(ItemListView): - template_name = "telemeta/media_item_instrument_list.html" def get_queryset(self): @@ -551,25 +547,23 @@ class ItemInstrumentListView(ItemListView): class ItemInstrumentPublishedListView(ItemInstrumentListView): - def get_queryset(self): - return super(ItemInstrumentPublishedListView, self).get_queryset().filter(collection__code__contains='_E_').order_by('code', 'old_code') + return super(ItemInstrumentPublishedListView, self).get_queryset().filter( + collection__code__contains='_E_').order_by('code', 'old_code') class ItemInstrumentUnpublishedListView(ItemInstrumentListView): - def get_queryset(self): - return super(ItemInstrumentUnpublishedListView, self).get_queryset().filter(collection__code__contains='_I_').order_by('code', 'old_code') + return super(ItemInstrumentUnpublishedListView, self).get_queryset().filter( + collection__code__contains='_I_').order_by('code', 'old_code') class ItemInstrumentSoundListView(ItemInstrumentListView): - def get_queryset(self): return super(ItemInstrumentSoundListView, self).get_queryset().sound().order_by('code', 'old_code') class ItemAliasListView(ItemListView): - template_name = "telemeta/media_item_alias_list.html" def get_queryset(self): @@ -585,28 +579,27 @@ class ItemAliasListView(ItemListView): class ItemAliasPublishedListView(ItemAliasListView): - def get_queryset(self): - return super(ItemAliasPublishedListView, self).get_queryset().filter(collection__code__contains='_E_').order_by('code', 'old_code') + return super(ItemAliasPublishedListView, self).get_queryset().filter(collection__code__contains='_E_').order_by( + 'code', 'old_code') class ItemAliasUnpublishedListView(ItemAliasListView): - def get_queryset(self): - return super(ItemAliasUnpublishedListView, self).get_queryset().filter(collection__code__contains='_I_').order_by('code', 'old_code') + return super(ItemAliasUnpublishedListView, self).get_queryset().filter( + collection__code__contains='_I_').order_by('code', 'old_code') class ItemAliasSoundListView(ItemAliasListView): - def get_queryset(self): return super(ItemAliasSoundListView, self).get_queryset().sound().order_by('code', 'old_code') class ItemViewMixin(ItemBaseMixin): - model = MediaItem form_class = MediaItemForm inlines = [ItemPerformanceInline, ItemKeywordInline, ItemRelatedInline, ItemIdentifierInline] + # inlines = [ItemPerformanceInline, ItemKeywordInline, ItemRelatedInline, # ItemFormatInline, ItemIdentifierInline] @@ -626,7 +619,6 @@ class ItemViewMixin(ItemBaseMixin): class ItemEditView(ItemViewMixin, UpdateWithInlinesView): - template_name = 'telemeta/mediaitem_edit.html' def get_form_class(self): @@ -674,7 +666,6 @@ class ItemEditView(ItemViewMixin, UpdateWithInlinesView): class ItemAddView(ItemViewMixin, CreateWithInlinesView): - form_class = MediaItemForm template_name = 'telemeta/mediaitem_add.html' @@ -706,7 +697,6 @@ class ItemAddView(ItemViewMixin, CreateWithInlinesView): class ItemCopyView(ItemAddView): - form_class = MediaItemForm template_name = 'telemeta/mediaitem_edit.html' @@ -756,7 +746,6 @@ class ItemCopyView(ItemAddView): class ItemDetailView(ItemViewMixin, DetailView): - template_name = 'telemeta/mediaitem_detail.html' def item_analyze(self, item): @@ -861,8 +850,8 @@ class ItemDetailView(ItemViewMixin, DetailView): is_transcoded_flag.value = True is_transcoded_flag.save() -# FIXME: parse tags on first load -# tags = decoder.tags + # FIXME: parse tags on first load + # tags = decoder.tags self.mime_type = mime_type @@ -963,28 +952,28 @@ class DublinCoreToFormatMetadata(object): 'relation': 'TALB', # album 'type': 'TCON', # genre 'publisher': 'TPUB', # publisher - 'date': 'TDRC', # year + 'date': 'TDRC', # year # 'coverage': 'COMM', #comment }, 'ogg': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, 'flac': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, 'wav': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, 'webm': { 'creator': 'artist', 'relation': 'album', - 'all': 'all', + 'all': 'all', }, } @@ -1015,7 +1004,6 @@ class DublinCoreToFormatMetadata(object): class ItemMarkerJsonView(View): - model = MediaItem def get(self, request, *args, **kwargs): @@ -1029,20 +1017,176 @@ class ItemMarkerJsonView(View): data = '' response = HttpResponse(data, content_type='application/json') response['Content-Disposition'] = "attachment; filename=%s.%s" % \ - (item.code, 'json') + (item.code, 'json') return response class ItemPlayerDefaultView(ItemDetailView): - template_name = 'telemeta/mediaitem_player.html' class ItemDetailDCView(ItemDetailView): - template_name = 'telemeta/mediaitem_detail_dc.html' class ItemVideoPlayerView(ItemDetailView): - template_name = 'telemeta/mediaitem_video_player.html' + + +class ItemEnumListView(ItemListView): + template_name = 'telemeta/media_item_enum_list.html' + + def get_context_data(self, **kwargs): + context = super(ItemListView, self).get_context_data(**kwargs) + context['enum'] = self.request.path.split('/')[3] + context['id'] = self.request.path.split('/')[4] + context['count'] = self.object_list.count() + context['keyword'] = False + context['enum_name'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3])._meta.verbose_name + context['enum_value'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get( + id__exact=self.request.path.split('/')[4]) + context['url_all'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/item/list" + context['url_unpublished'] = "/admin/enumerations/" + context['enum'] + "/" + context[ + 'id'] + "/item_unpublished/list/" + context['url_published'] = "/admin/enumerations/" + context['enum'] + "/" + context[ + 'id'] + "/item_published/list/" + context['url_sound'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/item_sound/list/" + return context + + def get_queryset(self): + enumeration = self.get_enumeration(self.request.path.split('/')[3]) + queryset = self.get_item(enumeration.objects.filter(id=self.request.path.split('/')[4]).get()) + print type(queryset) + return queryset + + def get_item(self, enum): + f = MediaItem._meta.get_all_field_names() + for field in f: + if field in enum._meta.db_table.replace(" ", "_"): + atr = field; + atr = atr + "_id" + lookup = "%s__exact" % atr + return MediaItem.objects.filter(**{lookup: enum.__getattribute__("id")}) + + def get_enumeration(self, id): + from django.db.models import get_models + models = get_models(telemeta.models) + for model in models: + if model._meta.module_name == id: + break + if model._meta.module_name != id: + return None + return model + + +class ItemPublishedEnumListView(ItemEnumListView): + def get_queryset(self): + c = ItemEnumListView() + # id of value of enumeration + i = self.request.path.split('/')[4] + enumeration = c.get_enumeration(self.request.path.split('/')[3]) + queryset = self.get_item(enumeration.objects.filter(id=i).get(), c) + return queryset + + def get_item(self, enum, c): + return c.get_item(enum).filter(code__contains='_E_') + + +class ItemUnpublishedEnumListView(ItemEnumListView): + def get_queryset(self): + c = ItemEnumListView() + # id of value of enumeration + i = self.request.path.split('/')[4] + enumeration = c.get_enumeration(self.request.path.split('/')[3]) + queryset = self.get_item(enumeration.objects.filter(id=i).get(), c) + return queryset + + def get_item(self, enum, c): + return c.get_item(enum).filter(code__contains='_I_') + + +class ItemSoundEnumListView(ItemEnumListView): + def get_queryset(self): + c = ItemEnumListView() + # id of value of enumeration + i = self.request.path.split('/')[4] + enumeration = c.get_enumeration(self.request.path.split('/')[3]) + queryset = self.get_item(enumeration.objects.filter(id=i).get(), c) + return queryset + + def get_item(self, enum, c): + return c.get_item(enum).sound().order_by('code', 'old_code') + + +class ItemKeywordListView(ItemListView): + + def get_context_data(self, **kwargs): + context = super(ItemListView, self).get_context_data(**kwargs) + context['enum'] = self.request.path.split('/')[3] + context['id'] = self.request.path.split('/')[4] + context['count'] = self.object_list.count() + context['keyword'] = True + context['enum_name'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3])._meta.verbose_name + context['enum_value'] = ItemEnumListView().get_enumeration(self.request.path.split('/')[3]).objects.get( + id__exact=self.request.path.split('/')[4]) + context['url_all'] = "/admin/enumerations/" + context['enum'] + "/" + context['id'] + "/keyword_item/list" + context['url_unpublished'] = "/admin/enumerations/" + context['enum'] + "/" + context[ + 'id'] + "/keyword_item_unpublished/list/" + context['url_published'] = "/admin/enumerations/" + context['enum'] + "/" + context[ + 'id'] + "/keyword_item_published/list/" + context['url_sound'] = "/admin/enumerations/" + context['enum'] + "/" + context[ + 'id'] + "/keyword_item_published/list/" + + context['argument'] = [context['enum'], context['id']] + + return context + + def get_queryset(self): + queryset = self.get_item(self.request.path.split('/')[4]) + return queryset + + def get_item(self, id): + c = [] + for m in MediaItemKeyword.objects.filter(keyword_id=id): + c.append(m.__getattribute__("item_id")) + return MediaItem.objects.filter(id__in=c) + + def get_enumeration(self, id): + from django.db.models import get_models + models = get_models(telemeta.models) + for model in models: + if model._meta.module_name == id: + break + if model._meta.module_name != id: + return None + return model + + +class ItemKeywordPublishedListView(ItemKeywordListView): + def get_queryset(self): + c = ItemKeywordListView() + queryset = self.get_item(self.request.path.split('/')[4], c) + return queryset + + def get_item(self, id, c): + return c.get_item(id).filter(code__contains='_E_') + + +class ItemKeywordUnpublishedListView(ItemKeywordListView): + def get_queryset(self): + c = ItemKeywordListView() + queryset = self.get_item(self.request.path.split('/')[4], c) + return queryset + + def get_item(self, id, c): + return c.get_item(id).filter(code__contains='_I_') + + +class ItemKeywordSoundListView(ItemKeywordListView): + def get_queryset(self): + c = ItemKeywordListView() + queryset = self.get_item(self.request.path.split('/')[4], c) + return queryset + + def get_item(self, id, c): + return c.get_item(id).sound().order_by('code', 'old_code')