from setuptools import setup, find_packages
import os
-CLASSIFIERS = ['Environment :: Web Environment',
-'Framework :: Django',
-'Intended Audience :: Science/Research',
-'Intended Audience :: Education',
-'Programming Language :: Python',
-'Programming Language :: JavaScript',
-'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
-'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
-'Topic :: Multimedia :: Sound/Audio',
-'Topic :: Multimedia :: Sound/Audio :: Analysis',
-'Topic :: Multimedia :: Sound/Audio :: Players',
-'Topic :: Scientific/Engineering :: Information Analysis',
+CLASSIFIERS = ['Environment :: Web Environment',
+'Framework :: Django',
+'Intended Audience :: Science/Research',
+'Intended Audience :: Education',
+'Programming Language :: Python',
+'Programming Language :: JavaScript',
+'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
+'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
+'Topic :: Multimedia :: Sound/Audio',
+'Topic :: Multimedia :: Sound/Audio :: Analysis',
+'Topic :: Multimedia :: Sound/Audio :: Players',
+'Topic :: Scientific/Engineering :: Information Analysis',
'Topic :: System :: Archiving', ]
'pyyaml',
'python-ebml',
],
+ dependency_links = ['https://github.com/yomguy/django-json-rpc/tarball/0.6.2',]
platforms=['OS Independent'],
license='CeCILL v2',
classifiers = CLASSIFIERS,
<li><a href="#archives#" class="green">{% trans "Archives" %}</a>
<ul>
- <li><a href="{% url "telemeta-fonds" %}">{% trans "Fonds" %}</a></li>
- <li><a href="{% url "telemeta-corpus" %}">{% trans "Corpus" %}</a></li>
+ <li><a href="{% url "telemeta-resource-list" "fonds" %}">{% trans "Fonds" %}</a></li>
+ <li><a href="{% url "telemeta-resource-list" "corpus" %}">{% trans "Corpus" %}</a></li>
<li><a href="{% url "telemeta-collections" %}">{% trans "Collections" %}</a></li>
<li><a href="{% url "telemeta-items" %}">{% trans "Items" %}</a></li>
</ul>
url(r'^archives/collections/(?P<public_id>[A-Za-z0-9._-]+)/package/$', CollectionPackageView.as_view(),
name="telemeta-collection-package"),
- # RESOURCES
- url(r'^archives/corpus/$', CorpusListView.as_view(), name="telemeta-corpus"),
- url(r'^archives/fonds/$', FondsListView.as_view(), name="telemeta-fonds"),
-
- # Generic resource
- url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/$', CorpusDetailView.as_view(), name="telemeta-resource-detail"),
+ # Generic resources
+ url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/$', ResourceListView.as_view(), name="telemeta-resource-list"),
+ url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/$', ResourceDetailView.as_view(), name="telemeta-resource-detail"),
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', resource_view.detail,
dict(template="telemeta/resource_detail_dc.html"), name="telemeta-resource-dublincore"),
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', resource_view.edit,
queryset = MediaCollection.objects.sound().order_by('code', 'old_code')
+
+class CollectionViewMixin(object):
+
+ model = MediaCollection
+ type = 'collection'
+
+
+class CollectionDetailView(CollectionViewMixin, DetailView):
+
+
+ def get_object(self):
+ return self.model.objects.get(code=self.kwargs['public_id'])
+
+ def get_context_data(self, **kwargs):
+ context = super(CollectionDetailView, self).get_context_data(**kwargs)
+ collection = self.get_object()
+ items = collection.items.enriched()
+ items = items.order_by('code', 'old_code')
+
+ if collection.public_access == 'none' and not (request.user.is_staff or request.user.is_superuser):
+ mess = ugettext('Access not allowed')
+ title = ugettext('Collection') + ' : ' + public_id + ' : ' + mess
+ description = ugettext('Please login or contact the website administator to get a private access.')
+ messages.error(request, title)
+ return render(request, 'telemeta/messages.html', {'description' : description})
+
+ playlists = get_playlists(self.request)
+ related_media = MediaCollectionRelated.objects.filter(collection=collection)
+ check_related_media(related_media)
+ parents = MediaCorpus.objects.filter(children=collection)
+ revisions = Revision.objects.filter(element_type='collection',
+ element_id=collection.id).order_by('-time')
+ if revisions:
+ last_revision = revisions[0]
+ else:
+ last_revision = None
+
+ return context
from telemeta.views.core import *
-class ItemView(object):
- """Provide Item web UI methods"""
+class ItemBaseMixin(object):
graphers = timeside.core.processors(timeside.api.IGrapher)
decoders = timeside.core.processors(timeside.api.IDecoder)
default_grapher_sizes = getattr(settings, 'TELEMETA_DEFAULT_GRAPHER_SIZES', ['360x130', ])
auto_zoom = getattr(settings, 'TIMESIDE_AUTO_ZOOM', False)
+
+class ItemView(ItemBaseMixin):
+ """Provide Item web UI methods"""
+
def get_export_formats(self):
formats = []
for encoder in self.encoders:
return render(request, template, {'resource': resource, 'type': type, 'formset': formset,})
+class ResourceMixin(object):
-class CorpusListView(ListView):
+ types = {'corpus':
+ {'model': MediaCorpus,
+ 'form' : MediaCorpusForm,
+ 'related': MediaCorpusRelated,
+ 'related_form': MediaCorpusRelatedForm,
+ 'parent': MediaFonds,
+ },
+ 'fonds':
+ {'model': MediaFonds,
+ 'form' : MediaFondsForm,
+ 'related': MediaFondsRelated,
+ 'related_form': MediaFondsRelatedForm,
+ 'parent': None,
+ }
+ }
+
+ def setup(self, type):
+ self.model = self.types[type]['model']
+ self.form = self.types[type]['form']
+ self.related = self.types[type]['related']
+ self.related_form = self.types[type]['related_form']
+ self.parent = self.types[type]['parent']
+ self.type = type
+
+
+class ResourceListView(ResourceMixin, ListView):
- model = MediaCorpus
- queryset = MediaCorpus.objects.all().order_by('code')
template_name = "telemeta/resource_list.html"
paginate_by = 20
+ def get_queryset(self):
+ self.type = self.kwargs['type']
+ self.setup(self.type)
+ return self.model.objects.all().order_by('code')
+
def get_context_data(self, **kwargs):
- context = super(CorpusListView, self).get_context_data(**kwargs)
- context['type'] = 'corpus'
+ context = super(ResourceListView, self).get_context_data(**kwargs)
+ context['type'] = self.type
return context
return context
-class CorpusDetailView(DetailView):
- model = MediaCorpus
+
+class ResourceDetailView(ResourceMixin, DetailView):
+
template_name = "telemeta/resource_detail.html"
- parent = MediaFonds
- related = MediaCorpusRelated
def get_object(self):
+ # super(CorpusDetailView, self).get_object()
self.type = self.kwargs['type']
+ self.setup(self.type)
self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk
return get_object_or_404(self.model, pk=self.pk)
def get_context_data(self, **kwargs):
- context = super(CorpusDetailView, self).get_context_data(**kwargs)
+ context = super(ResourceDetailView, self).get_context_data(**kwargs)
resource = self.object
related_media = self.related.objects.filter(resource=self.object)
check_related_media(related_media)
context['parents'] = self.parent.objects.filter(children=resource)
else:
context['parents'] = []
-
return context
-
-
-class FondsDetailView(CorpusDetailView):
-
- model = MediaFonds
- template_name = "telemeta/resource_detail.html"
- parent = None
- related = MediaFondsRelated