Changeset 879d772
- Timestamp:
- 05/18/07 21:17:37 (6 years ago)
- Branches:
- master, crem, crem2, dev, dev2, diadems, forma, generic, instru_search, lam, nlivemulti, production, release/1.4.4, security, social, storage, test, video
- Children:
- 294e691
- Parents:
- 3815c51
- git-author:
- olivier <> (05/18/07 21:17:37)
- git-committer:
- olivier <> (05/18/07 21:17:37)
- Location:
- telemeta
- Files:
-
- 8 added
- 8 edited
-
htdocs/css/telemeta.css (modified) (1 diff)
-
htdocs/js/swfobject.js (added)
-
htdocs/swf/mp3player.swf (added)
-
htdocs/swf/xspf_player.swf (added)
-
htdocs/swf/xspf_player_slim.swf (added)
-
models.py (modified) (3 diffs)
-
templates/base.html (modified) (1 diff)
-
templates/base_xspf.xml (added)
-
templates/collection.m3u (added)
-
templates/collection_detail.html (modified) (3 diffs)
-
templates/collection_xspf.xml (added)
-
templates/mediaitem_detail.html (modified) (3 diffs)
-
templates/mediaitem_xspf.xml (added)
-
templatetags/telemeta_utils.py (modified) (1 diff)
-
urls.py (modified) (4 diffs)
-
views/web.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
telemeta/htdocs/css/telemeta.css
r3815c51 r879d772 37 37 #quick_search_pattern { } 38 38 39 .item_visualization {39 .item_visualization, #collection_player { 40 40 clear: right; 41 41 float: right; 42 42 padding: 1ex; 43 43 margin-top: 1em; 44 margin-left: 1em; 44 45 } 45 46 .item_visualization select { width: 200px; } 46 47 .item_visualization img { width: 300px; border: solid 1px black; } 47 48 48 49 49 /* Styles for tabular listings (stolen from trac) */ -
telemeta/models.py
r3815c51 r879d772 12 12 from django.core.exceptions import ObjectDoesNotExist 13 13 from django.core import validators 14 from django.conf import settings 14 15 15 16 import telemeta … … 128 129 return resource 129 130 131 def has_mediafile(self): 132 "Tell wether this collection has any media files attached to its items" 133 items = self.items.all() 134 for item in items: 135 if item.file: 136 return True 137 return False 138 130 139 def __str__(self): 131 140 #return self.title … … 216 225 return resource 217 226 227 def get_duration(self): 228 if self.file: 229 import wave 230 media = wave.open(settings.MEDIA_ROOT + "/" + self.file, "rb") 231 duration = media.getnframes() / media.getframerate() 232 media.close() 233 else: 234 duration = 0 235 236 return duration 237 218 238 def __str__(self): 219 239 return self.title -
telemeta/templates/base.html
r3815c51 r879d772 5 5 <link rel="stylesheet" type="text/css" href="/css/telemeta.css" /> 6 6 {% block extra_style %}{% endblock %} 7 {% block extra_javascript %}{% endblock %} 7 8 </head> 8 9 {% load i18n %} -
telemeta/templates/collection_detail.html
r01bf9f7 r879d772 1 1 {% extends "base.html" %} 2 2 {% load telemeta_utils %} 3 4 {% block extra_javascript %} 5 <script src="/js/swfobject.js" type="text/javascript"></script> 6 {% endblock %} 3 7 4 8 {% block submenu %} … … 9 13 {% block content %} 10 14 {% if object %} 15 {% if object.has_mediafile %} 16 <div id="collection_player"> 17 <p><b>Listen to this collection</b> 18 (<a href="{% url telemeta-collection-m3u object.id|urlencode %}">M3U</a>, 19 <a href="{% url telemeta-collection-xspf object.id|urlencode %}">XSPF</a>)</p> 20 {% if 0 %} {# Use 1/0 for alternate player #} 21 <!-- This is the XSPF Web Music Player, under the BSD license, 22 from: http://musicplayer.sourceforge.net/--> 23 <object type="application/x-shockwave-flash" width="300" height="200" 24 data="/swf/xspf_player.swf?playlist_url={% url telemeta-collection-xspf object.id|urlencode %}"> 25 <param name="movie" 26 value="/swf/xspf_player.swf?playlist_url={% url telemeta-collection-xspf object.id|urlencode %}" /> 27 </object> 28 {% else %} 29 <!-- This is Jeroen Wijering's Flash MP3 Player, 30 under CC Attribution-NonCommercial-ShareAlike 2.0 license 31 from: http://www.jeroenwijering.com/?item=Flash_MP3_Player--> 32 <p id="collection_player_c"> 33 <a href="http://www.macromedia.com/go/getflashplayer">Get Flash</a> to see this player. 34 </p> 35 <script type="text/javascript"> 36 var so = new SWFObject('/swf/mp3player.swf','playlist','300','200','7'); 37 so.addVariable("file","{% url telemeta-collection-xspf object.id|urlencode %}"); 38 so.addVariable("displayheight","0"); 39 so.write('collection_player_c'); 40 </script> 41 {% endif %} 42 </div> 43 {% endif %} 44 11 45 <h3>Collection: {{ object.title }}</h3> 12 46 <ul> … … 19 53 {% endfor %} 20 54 </ul> 55 21 56 <hr> 22 57 <h4>Items</h4> 23 <ul> 24 {% for item in object.items.all %} 25 <li><b>{{ item.creator }}</b> - {{ item.title }} 26 <a href="{% url telemeta-item-detail item.id|urlencode %}">View</a> 27 <a href="#">Edit</a> 28 </li> 29 {% endfor %} 30 </ul> 58 {% with object.items.all as items %} 59 {% if items %} 60 <ul> 61 {% for item in items %} 62 <li><b>{{ item.creator }}</b> - {{ item.title }} 63 <a href="{% url telemeta-item-detail item.id|urlencode %}">View</a> 64 <a href="#">Edit</a> 65 </li> 66 {% endfor %} 67 </ul> 68 {% else %} 69 <p>No items</p> 70 {% endif %} 71 {% endwith %} 31 72 {% else %} 32 73 <p>No such collection</p> -
telemeta/templates/mediaitem_detail.html
r01bf9f7 r879d772 1 1 {% extends "base.html" %} 2 2 {% load telemeta_utils %} 3 4 {% block extra_javascript %} 5 <script src="/js/swfobject.js" type="text/javascript"></script> 6 {% endblock %} 3 7 4 8 {% block submenu %} … … 9 13 {% block content %} 10 14 {% if item %} 15 {% if item.file %} 11 16 <div class="item_visualization"> 17 {% if 0 %} {# Use 1/0 for alternate player #} 18 <!-- This is the XSPF Web Music Player, under the BSD license, 19 from: http://musicplayer.sourceforge.net/--> 20 <object type="application/x-shockwave-flash" width="300" height="20" 21 data="/swf/xspf_player_slim.swf?playlist_url={% url telemeta-item-xspf item.id|urlencode %}"> 22 <param name="movie" 23 value="/swf/xspf_player_slim.swf?playlist_url={% url telemeta-item-xspf item.id|urlencode %}" /> 24 </object><br/> 25 {% else %} 26 <!-- This is Jeroen Wijering's Flash MP3 Player, 27 under CC Attribution-NonCommercial-ShareAlike 2.0 license 28 from: http://www.jeroenwijering.com/?item=Flash_MP3_Player--> 29 <p id="item_player_c"> 30 <a href="http://www.macromedia.com/go/getflashplayer">Get Flash</a> to see this player. 31 </p> 32 <script type="text/javascript"> 33 var so = new SWFObject('/swf/mp3player.swf','line','300','20','7'); 34 so.addVariable("file","{% url telemeta-item-export item.id|urlencode,"MP3" %}"); 35 so.addVariable("type","mp3"); 36 so.write('item_player_c'); 37 </script> 38 {% endif %} 39 12 40 <img src="{% url telemeta-item-visualize item.id|urlencode,visualizer_id %}"> 13 41 <form method="GET"> … … 21 49 </form> 22 50 </div> 23 <h3>Item: {{ item.title }}</h3> 24 <ul> 25 {% for field in item.to_dict|tolist %} 26 {% ifnotequal field.name "id" %} 27 {% ifnotequal field.name "title" %} 28 {% ifnotequal field.name "file" %} 51 {% endif %} 29 52 30 <li><b>{{ field.name }}</b> : 31 {% ifequal field.name "collection" %} 32 <a href="{% url telemeta-collection-detail field.value.id|urlencode %}"> 33 {{ field.value }}</a> 34 {% else %} 35 {{ field.value }} 36 {% endifequal %} 37 </li> 53 <h3>Item: {{ item.title }}</h3> 54 <ul> 55 {% for field in item.to_dict|tolist %} 56 {% ifnotequal field.name "id" %} 57 {% ifnotequal field.name "title" %} 58 {% ifnotequal field.name "file" %} 38 59 39 {% endifnotequal %} 40 {% endifnotequal %} 41 {% endifnotequal %} 42 {% endfor %} 43 </ul> 44 Download: 45 {% for format in export_formats %} 46 <a href="{% url telemeta-item-export item.id|urlencode,format %}">{{ format }}</a> 47 {% endfor %} 60 <li><b>{{ field.name }}</b> : 61 {% ifequal field.name "collection" %} 62 <a href="{% url telemeta-collection-detail field.value.id|urlencode %}"> 63 {{ field.value }}</a> 64 {% else %} 65 {{ field.value }} 66 {% endifequal %} 67 </li> 68 69 {% endifnotequal %} 70 {% endifnotequal %} 71 {% endifnotequal %} 72 {% endfor %} 73 </ul> 74 Download: 75 {% for format in export_formats %} 76 <a href="{% url telemeta-item-export item.id|urlencode,format %}">{{ format }}</a> 77 {% endfor %} 48 78 {% else %} 49 79 <p>No such item</p> -
telemeta/templatetags/telemeta_utils.py
r01bf9f7 r879d772 17 17 return list 18 18 19 @register.filter 20 def mul(value, arg): 21 "Multiply a numeric value" 22 return value * arg 19 23 24 -
telemeta/urls.py
r3815c51 r879d772 40 40 {'format': 'dublin_core_xml'}, 41 41 name="telemeta-item-dublincore-xml"), 42 url(r'^items/(?P<item_id>' + i_ex + ')/download /(?P<format>[0-9A-Z]+)/$',42 url(r'^items/(?P<item_id>' + i_ex + ')/download.(?P<format>[0-9A-Z]+)$', 43 43 web_view.item_export, 44 44 name="telemeta-item-export"), … … 46 46 web_view.item_visualize, 47 47 name="telemeta-item-visualize"), 48 url(r'^items/(?P<item_id>' + i_ex + ')/item_xspf.xml$', 49 web_view.item_playlist, 50 dict(template="mediaitem_xspf.xml", mimetype="application/xspf+xml"), 51 name="telemeta-item-xspf"), 48 52 49 53 # collections … … 63 67 dict(all_collections, template_name="collection_detail_dc.html"), 64 68 name="telemeta-collection-dublincore"), 69 url(r'^collections/(?P<collection_id>' + c_ex + ')/collection_xspf.xml$', 70 web_view.collection_playlist, 71 dict(template="collection_xspf.xml", mimetype="application/xspf+xml"), 72 name="telemeta-collection-xspf"), 73 url(r'^collections/(?P<collection_id>' + c_ex + ')/collection.m3u$', 74 web_view.collection_playlist, 75 dict(template="collection.m3u", mimetype="audio/mpegurl"), 76 name="telemeta-collection-m3u"), 65 77 66 78 # search … … 94 106 (r'^images/(?P<path>.*)$', 'django.views.static.serve', 95 107 {'document_root': './telemeta/htdocs/images'}), 108 (r'^js/(?P<path>.*)$', 'django.views.static.serve', 109 {'document_root': './telemeta/htdocs/js'}), 110 (r'^swf/(?P<path>.*)$', 'django.views.static.serve', 111 {'document_root': './telemeta/htdocs/swf'}), 96 112 ) -
telemeta/views/web.py
r3815c51 r879d772 191 191 192 192 return self.edit_enumeration(request, enumeration_id) 193 194 195 196 197 198 193 194 def collection_playlist(self, request, collection_id, template, mimetype): 195 collection = MediaCollection.objects.get(id__exact=collection_id) 196 if not collection: 197 raise Http404 198 199 template = loader.get_template(template) 200 context = Context({'collection': collection, 'host': request.META['HTTP_HOST']}) 201 return HttpResponse(template.render(context), mimetype=mimetype) 202 203 def item_playlist(self, request, item_id, template, mimetype): 204 item = MediaItem.objects.get(id__exact=item_id) 205 if not item: 206 raise Http404 207 208 template = loader.get_template(template) 209 context = Context({'item': item, 'host': request.META['HTTP_HOST']}) 210 return HttpResponse(template.render(context), mimetype=mimetype) 211 212 213 214 215 216
Note: See TracChangeset
for help on using the changeset viewer.
