]> git.parisson.com Git - telemeta.git/commitdiff
update first Resource views
authorGuillaume Pellerin <yomguy@parisson.com>
Mon, 8 Sep 2014 14:20:22 +0000 (16:20 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Mon, 8 Sep 2014 14:20:22 +0000 (16:20 +0200)
setup.py
telemeta/templates/telemeta/base.html
telemeta/urls.py
telemeta/views/collection.py
telemeta/views/item.py
telemeta/views/resource.py

index 74e71e180139df89060d2fa41da1e8195c301163..9a9e5a103f15b519120b109c8d5193c52f5318cf 100644 (file)
--- 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,
index 5221acc004daf53827fc3fa4b983561bf2b125f3..f7b6666a0306e9b9d704657ac76228e0ffb8631f 100644 (file)
@@ -97,8 +97,8 @@
 
  <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>
index 8c48df4ade7bc0c2d41e177e102db2aad7bd3b6b..5519df3bbe60852b8e6c9dd2e46ca89dec0621c3 100644 (file)
@@ -156,12 +156,9 @@ urlpatterns = patterns('',
     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,
index a55ad48f7b90778adc283840626ca31d0d1ca382..8b0f337d1bf662e2fcd2a07e577004cb16cb61df 100644 (file)
@@ -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
index 82d342925da4d461f2d3d12e8a4292aaf49b68fd..0d29d2fe25cb294130d6be983e91a86b9e5f43e7 100644 (file)
@@ -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:
index e2397da409e5c7cc74b6a25bb3be84eb53c04849..511d5dfb26b0fab3a8b8351985aaab2a4852c80f 100644 (file)
@@ -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