From: Guillaume Pellerin Date: Mon, 8 Sep 2014 14:20:22 +0000 (+0200) Subject: update first Resource views X-Git-Tag: 1.5.0rc1~27^2~100 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=4db34a7f1bed8418abd3e31c61eebe01a8a855d2;p=telemeta.git update first Resource views --- diff --git a/setup.py b/setup.py index 74e71e18..9a9e5a10 100644 --- a/setup.py +++ b/setup.py @@ -2,18 +2,18 @@ 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', ] @@ -41,6 +41,7 @@ setup( 'pyyaml', 'python-ebml', ], + dependency_links = ['https://github.com/yomguy/django-json-rpc/tarball/0.6.2',] platforms=['OS Independent'], license='CeCILL v2', classifiers = CLASSIFIERS, diff --git a/telemeta/templates/telemeta/base.html b/telemeta/templates/telemeta/base.html index 5221acc0..f7b6666a 100644 --- a/telemeta/templates/telemeta/base.html +++ b/telemeta/templates/telemeta/base.html @@ -97,8 +97,8 @@
  • {% trans "Archives" %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 8c48df4a..5519df3b 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -156,12 +156,9 @@ urlpatterns = patterns('', url(r'^archives/collections/(?P[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[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/$', CorpusDetailView.as_view(), name="telemeta-resource-detail"), + # 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._-]+)/dc/$', resource_view.detail, dict(template="telemeta/resource_detail_dc.html"), name="telemeta-resource-dublincore"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/edit/$', resource_view.edit, diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index a55ad48f..8b0f337d 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -248,3 +248,41 @@ class CollectionSoundListView(CollectionListView): 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 diff --git a/telemeta/views/item.py b/telemeta/views/item.py index 82d34292..0d29d2fe 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -38,8 +38,7 @@ 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) @@ -55,6 +54,10 @@ class ItemView(object): 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: diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index e2397da4..511d5dfb 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -194,17 +194,46 @@ class ResourceView(object): 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 @@ -221,20 +250,21 @@ class FondsListView(ListView): 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) @@ -253,13 +283,4 @@ class CorpusDetailView(DetailView): 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