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