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