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