]> git.parisson.com Git - telemeta.git/commitdiff
epub: add audio items and related images
authorGuillaume Pellerin <yomguy@parisson.com>
Tue, 24 Feb 2015 12:21:21 +0000 (13:21 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Tue, 24 Feb 2015 12:21:38 +0000 (13:21 +0100)
telemeta/static/telemeta/css/telemeta_epub.css
telemeta/templates/telemeta/collection_epub.html
telemeta/templates/telemeta/collection_epub_urls.html [new file with mode: 0644]
telemeta/views/resource.py

index f4d3b6949b765b303862ff1e424c8e876d8df6e0..3cd6cb6ee0b54f5cb2b21f89f487f1f1bc6aba93 100644 (file)
@@ -10,6 +10,14 @@ h2 {
      font-weight: 200;
 }
 
+
+h3 {
+     text-align: left;
+     font-weight: 1em;
+     margin-top: 0px;
+}
+
+
 ol {
         list-style-type: none;
 }
index 0fa92b5fae98121a11b2f5bf67ec9ffed52344da..d717a60b0f1ed47beb2d25c10465261dc1cb6b7b 100644 (file)
@@ -1,8 +1,20 @@
 
 {% for item in collection.items.all %}
-<p>
- {{ item.title }}
- <br>
- <audio src="http://{{ site.domain }}{% url "telemeta-item-export" item.public_id 'mp3' %}" controls="controls"/>
-</p>
+
+ <div class="item-title">
+ <h3>{{ item.title }}</h3>
+ </div>
+
+ <div class="item-audio">
+  <audio src="{{ item.file }}" controls="controls"/>
+ </div>
+
+ {% for image in item.related.all %}
+  {% if 'image' in image.mime_type %}
+     <div class="item-image">
+      <img src="{{ image.file }}"/>
+     </div>
+  {% endif %}
+ {% endfor %}
+
 {% endfor %}
diff --git a/telemeta/templates/telemeta/collection_epub_urls.html b/telemeta/templates/telemeta/collection_epub_urls.html
new file mode 100644 (file)
index 0000000..0fa92b5
--- /dev/null
@@ -0,0 +1,8 @@
+
+{% for item in collection.items.all %}
+<p>
+ {{ item.title }}
+ <br>
+ <audio src="http://{{ site.domain }}{% url "telemeta-item-export" item.public_id 'mp3' %}" controls="controls"/>
+</p>
+{% endfor %}
index 50feeb266c4bb4a55b4d0c5fc9747c9ed3521053..4e99bf890f8306ae0f6262381806d160fcb3d1ea 100644 (file)
@@ -349,7 +349,6 @@ class ResourceEditView(ResourceSingleMixin, UpdateWithInlinesView):
         return super(ResourceEditView, self).dispatch(*args, **kwargs)
 
 
-
 class CorpusEpubView(View):
 
     model = MediaCorpus
@@ -379,13 +378,23 @@ class CorpusEpubView(View):
         book.add_author(corpus.descriptions)
 
         # add cover image
-        for media in corpus.related.all():
-            if 'cover' in media.title or 'Cover' in media.title:
-                book.set_cover("cover.jpg", open(media.file.path, 'r').read())
-                break
+        for media in corpus.related.all():
+            if 'cover' in media.title or 'Cover' in media.title:
+                book.set_cover("cover.jpg", open(media.file.path, 'r').read())
+                break
 
         chapters = []
         for collection in corpus.children.all():
+            for item in collection.items.all():
+                if item.file:
+                    audio = open(item.file.path, 'r')
+                    epub_item = epub.EpubItem(file_name=str(item.file), content=audio.read())
+                    book.add_item(epub_item)
+                for related in item.related.all():
+                    if 'image' in related.mime_type:
+                        image = open(related.file.path, 'r')
+                        epub_item = epub.EpubItem(file_name=str(related.file), content=image.read())
+                        book.add_item(epub_item)
             context = {'collection': collection, 'site': site}
             c = epub.EpubHtml(title=collection.title, file_name=collection.code + '.xhtml', lang='fr')
             c.content = render_to_string(collection_template, context)
@@ -401,7 +410,7 @@ class CorpusEpubView(View):
 
         book.toc = (( chapters ))
 
-        # add navigation files
+            # add navigation files
         book.add_item(epub.EpubNcx())
         book.add_item(epub.EpubNav())
 
@@ -420,7 +429,7 @@ class CorpusEpubView(View):
         epub.write_epub(filename, book, {})
         epub_file = open(filename, 'r')
 
-        response = StreamingHttpResponse(epub_file.read(), content_type='application/epub+zip')
+        response = HttpResponse(epub_file.read(), content_type='application/epub+zip')
         response['Content-Disposition'] = "attachment; filename=%s.%s" % \
                                              (collection.code, 'epub')
         return response