##// END OF EJS Templates
Opus is an audio format too
neko259 -
r1339:2b8dc202 default
parent child Browse files
Show More
@@ -1,82 +1,83 b''
1 1 from django.template.defaultfilters import filesizeformat
2 2 from django.contrib.staticfiles.templatetags.staticfiles import static
3 3
4 4 FILE_STUB_IMAGE = 'images/file.png'
5 5
6 6 FILE_TYPES_VIDEO = (
7 7 'webm',
8 8 'mp4',
9 9 )
10 10 FILE_TYPE_SVG = 'svg'
11 11 FILE_TYPES_AUDIO = (
12 12 'ogg',
13 13 'mp3',
14 'opus',
14 15 )
15 16
16 17 PLAIN_FILE_FORMATS = {
17 18 'pdf': 'pdf',
18 19 'djvu': 'djvu',
19 20 'txt': 'txt',
20 21 }
21 22
22 23
23 24 def get_viewers():
24 25 return AbstractViewer.__subclasses__()
25 26
26 27
27 28 class AbstractViewer:
28 29 def __init__(self, file, file_type):
29 30 self.file = file
30 31 self.file_type = file_type
31 32
32 33 @staticmethod
33 34 def supports(file_type):
34 35 return True
35 36
36 37 def get_view(self):
37 38 return '<div class="image">'\
38 39 '{}'\
39 40 '<div class="image-metadata"><a href="{}" download >{}, {}</a></div>'\
40 41 '</div>'.format(self.get_format_view(), self.file.url,
41 42 self.file_type, filesizeformat(self.file.size))
42 43
43 44 def get_format_view(self):
44 45 if self.file_type in PLAIN_FILE_FORMATS:
45 46 image = 'images/fileformats/{}.png'.format(
46 47 PLAIN_FILE_FORMATS[self.file_type])
47 48 else:
48 49 image = FILE_STUB_IMAGE
49 50
50 51 return '<a href="{}">'\
51 52 '<img src="{}" width="200" height="150"/>'\
52 53 '</a>'.format(self.file.url, static(image))
53 54
54 55
55 56 class VideoViewer(AbstractViewer):
56 57 @staticmethod
57 58 def supports(file_type):
58 59 return file_type in FILE_TYPES_VIDEO
59 60
60 61 def get_format_view(self):
61 62 return '<video width="200" height="150" controls src="{}"></video>'\
62 63 .format(self.file.url)
63 64
64 65
65 66 class AudioViewer(AbstractViewer):
66 67 @staticmethod
67 68 def supports(file_type):
68 69 return file_type in FILE_TYPES_AUDIO
69 70
70 71 def get_format_view(self):
71 72 return '<audio controls src="{}"></audio>'.format(self.file.url)
72 73
73 74
74 75 class SvgViewer(AbstractViewer):
75 76 @staticmethod
76 77 def supports(file_type):
77 78 return file_type == FILE_TYPE_SVG
78 79
79 80 def get_format_view(self):
80 81 return '<a class="thumb" href="{}">'\
81 82 '<img class="post-image-preview" width="200" height="150" src="{}" />'\
82 83 '</a>'.format(self.file.url, self.file.url)
General Comments 0
You need to be logged in to leave comments. Login now