]> git.parisson.com Git - telemeta.git/commitdiff
fix previous and next item finding, update style
authoryomguy <yomguy@parisson.com>
Tue, 15 Feb 2011 10:44:45 +0000 (11:44 +0100)
committeryomguy <yomguy@parisson.com>
Tue, 15 Feb 2011 10:44:45 +0000 (11:44 +0100)
telemeta/htdocs/css/telemeta.css
telemeta/templates/telemeta_default/mediaitem_detail.html
telemeta/urls.py
telemeta/web/base.py

index cc0b97d9df0c545f423a89910e37abee48cabfa8..2826611ae9329c1f2768450fc5fe50e6a891fd63 100644 (file)
@@ -13,7 +13,7 @@ body {
 }\r
 \r
 a:link, a:visited {\r
-    border-bottom:1px dotted #BBB;\r
+/*     border-bottom:1px dotted #BBB; */\r
     color:#BB0000;\r
     text-decoration:none;\r
 }\r
index 10103308b72947fb59095f8d608ac2d9843103fc..f3ffbe57cc93eca77289267e4e54156a8d9e669f 100644 (file)
 {% if item %}\r
 {% block submenu %}\r
 <div>\r
+ <table>\r
+   <tr>\r
+    <td align="left">\r
     <a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a>\r
-    {% if user.is_authenticated %} \r
+    </td>\r
+    <td align="right">\r
+    {% if user.is_authenticated and user.is_staff%} \r
     <a href="{% url telemeta-item-detail-edit item.public_id %}"><img src="/images/edit_page.png" alt="EDIT"></a>\r
     {% endif %}\r
-    <a href="{% url telemeta-item-detail-previous item.public_id %}"><img src="/images/previous.png" alt="PREVIOUS"></a>\r
-    <a href="{% url telemeta-item-detail-next item.public_id %}"><img src="/images/next.png" alt="NEXT"></a>\r
+    <a href="{% url telemeta-item-detail previous %}"><img src="/images/previous.png" alt="PREVIOUS"></a>\r
+    <a href="{% url telemeta-item-detail next %}"><img src="/images/next.png" alt="NEXT"></a>\r
+    </td>\r
+   </tr>\r
+ </table>\r
 </div>\r
 {% endblock %}\r
 \r
index 9115aead1061439f796262e016d418a75f0e7245..0afa28fb86d55f1dd8f28bbaf36b88d2e7393f05 100644 (file)
@@ -87,12 +87,6 @@ urlpatterns = patterns('',
     url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', 
         web_view.item_detail_edit,
         name="telemeta-item-detail-edit"),
-    url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/previous/$', 
-        web_view.item_detail_previous,
-        name="telemeta-item-detail-previous"),
-    url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/next/$', 
-        web_view.item_detail_next,
-        name="telemeta-item-detail-next"),
 
     # collections
     url(r'^collections/$', 'django.views.generic.list_detail.object_list',
index ee919e40c9aed7ec9cc28f6a308001f9f911e3b9..56adfd1f7412c6f5bfa12efced212fc1e5b93866 100644 (file)
@@ -142,9 +142,35 @@ class WebView(object):
                 break
         return self.collection_detail(request, next.public_id)
     
+    def item_previous_next(self, item):
+        # Get previous and next items
+        pks = []
+        items = MediaItem.objects.filter(collection=item.collection)
+        for it in items:
+            pks.append(it.pk)
+        pks.sort()
+        for pk in pks:
+            if pk == item.pk:
+                if pk == pks[0]:
+                    previous = pks[-1]
+                    next = pks[1]
+                elif pk == pks[-1]:
+                    previous = pks[-2]
+                    next = pks[0]
+                else:
+                    previous = pks[pks.index(pk)-1]
+                    next = pks[pks.index(pk)+1]
+                previous = MediaItem.objects.get(pk=previous)
+                previous = previous.public_id
+                next = MediaItem.objects.get(pk=next)
+                next = next.public_id
+        return previous, next
+        
     def item_detail(self, request, public_id, template='telemeta/mediaitem_detail.html'):
         """Show the details of a given item"""
         item = MediaItem.objects.get(public_id=public_id)
+        
+        # Get TimeSide processors
         formats = []
         for encoder in self.encoders:
             formats.append({'name': encoder.format(), 'extension': encoder.file_extension()})
@@ -157,17 +183,20 @@ class WebView(object):
         else:
             grapher_id = 'waveform'
         
+        previous, next = self.item_previous_next(item)
         analyzers = self.item_analyze(item)
    
         return render(request, template, 
                     {'item': item, 'export_formats': formats, 
                     'visualizers': graphers, 'visualizer_id': grapher_id,'analysers': analyzers,  #FIXME analysers
-                    'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True)
+                    'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), 
+                    'previous' : previous, 'next' : next, 
                     })
 
     def item_detail_edit(self, request, public_id, template='telemeta/mediaitem_detail_edit.html'):
         """Show the details of a given item"""
         item = MediaItem.objects.get(public_id=public_id)
+        
         formats = []
         for encoder in self.encoders:
             formats.append({'name': encoder.format(), 'extension': encoder.file_extension()})
@@ -179,7 +208,8 @@ class WebView(object):
             grapher_id = request.REQUEST['grapher_id']
         else:
             grapher_id = 'waveform'
-            
+        
+        previous, next = self.item_previous_next(item)
         analyzers = self.item_analyze(item)
         
         MediaItemFormSet = modelformset_factory(MediaItem)
@@ -194,24 +224,9 @@ class WebView(object):
                     {'item': item, 'export_formats': formats, 
                     'visualizers': graphers, 'visualizer_id': grapher_id,'analysers': analyzers,  #FIXME analysers
                     'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), "formset": formset, 
+                    'previous' : previous, 'next' : next, 
                     })
         
-    def item_detail_previous(self, request, public_id):
-        item = MediaItem.objects.get(public_id=public_id)
-        while True:
-            previous = MediaItem.objects.get(pk=item.pk-1)
-            if previous:
-                break
-        return self.item_detail(request, previous.public_id)
-    
-    def item_detail_next(self, request, public_id):
-        item = MediaItem.objects.get(public_id=public_id)
-        while True:
-            next = MediaItem.objects.get(pk=item.pk+1)
-            if next:
-                break
-        return self.item_detail(request, next.public_id)
-    
     def item_analyze(self, item):
         public_id = str(item.public_id)
         analyze_file = public_id + '.xml'