##// END OF EJS Templates
Support audio viewer
neko259 -
r1279:03b66329 default
parent child Browse files
Show More
@@ -6,14 +6,15 b' from random import random'
6
6
7 from django.db import models
7 from django.db import models
8
8
9 from boards.models.attachment.viewers import AbstractViewer, WebmViewer
9 from boards.models.attachment.viewers import AbstractViewer, WebmViewer, \
10
10 AudioViewer
11
11
12 FILES_DIRECTORY = 'files/'
12 FILES_DIRECTORY = 'files/'
13 FILE_EXTENSION_DELIMITER = '.'
13 FILE_EXTENSION_DELIMITER = '.'
14
14
15 VIEWERS = (
15 VIEWERS = (
16 WebmViewer,
16 WebmViewer,
17 AudioViewer,
17 )
18 )
18
19
19
20
@@ -1,6 +1,14 b''
1 from django.template.defaultfilters import filesizeformat
1 from django.template.defaultfilters import filesizeformat
2 from django.templatetags.static import static
2 from django.templatetags.static import static
3
3
4 FILE_STUB_IMAGE = 'images/file.png'
5
6 FILE_TYPE_WEBM = 'webm'
7 FILE_TYPES_AUDIO = (
8 'ogg',
9 'mp3',
10 )
11
4
12
5 class AbstractViewer:
13 class AbstractViewer:
6 def __init__(self, file, file_type):
14 def __init__(self, file, file_type):
@@ -8,33 +16,35 b' class AbstractViewer:'
8 self.file_type = file_type
16 self.file_type = file_type
9
17
10 @staticmethod
18 @staticmethod
11 def get_viewer(file_type, file):
12 for viewer in VIEWERS:
13 if viewer.supports(file_type):
14 return viewer(file)
15 return AbstractViewer(file)
16
17 @staticmethod
18 def supports(file_type):
19 def supports(file_type):
19 return true
20 return True
20
21
21 def get_view(self):
22 def get_view(self):
22 return '<div class="image"><a href="{}">'\
23 return '<div class="image"><a href="{}">'\
23 '<img src="{}" width="200" height="150"/>'\
24 '<img src="{}" width="200" height="150"/>'\
24 '</a>'\
25 '</a>'\
25 '<div class="image-metadata">{}, {}</div>'\
26 '<div class="image-metadata">{}, {}</div>'\
26 '</div>'.format(self.file.url, static('images/file.png'), self.file_type,
27 '</div>'.format(self.file.url, static(FILE_STUB_IMAGE),
27 filesizeformat(self.file.size))
28 self.file_type, filesizeformat(self.file.size))
28
29
29
30
30 class WebmViewer(AbstractViewer):
31 class WebmViewer(AbstractViewer):
31 @staticmethod
32 @staticmethod
32 def supports(file_type):
33 def supports(file_type):
33 return file_type == 'webm'
34 return file_type == FILE_TYPE_WEBM
34
35
35 def get_view(self):
36 def get_view(self):
36 return '<div class="image">'\
37 return '<div class="image">'\
37 '<video width="200" height="150" controls/>'\
38 '<video width="200" height="150" controls src="{}"/>'\
38 '<source src="{}">'\
39 '</div>'.format(self.file.url)
39 '</div>'.format(self.file.url)
40
40
41
42 class AudioViewer(AbstractViewer):
43 @staticmethod
44 def supports(file_type):
45 return file_type in FILE_TYPES_AUDIO
46
47 def get_view(self):
48 return '<div class="image">' \
49 '<audio controls src="{}"/>' \
50 '</div>'.format(self.file.url)
General Comments 0
You need to be logged in to leave comments. Login now