Show More
@@ -1,68 +1,67 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_TYPE_WEBM = 'webm' |
|
7 | 7 | FILE_TYPE_SVG = 'svg' |
|
8 | 8 | FILE_TYPES_AUDIO = ( |
|
9 | 9 | 'ogg', |
|
10 | 10 | 'mp3', |
|
11 | 11 | ) |
|
12 | 12 | |
|
13 | 13 | |
|
14 | 14 | def get_viewers(): |
|
15 | 15 | return AbstractViewer.__subclasses__() |
|
16 | 16 | |
|
17 | 17 | |
|
18 | 18 | class AbstractViewer: |
|
19 | 19 | def __init__(self, file, file_type): |
|
20 | 20 | self.file = file |
|
21 | 21 | self.file_type = file_type |
|
22 | 22 | |
|
23 | 23 | @staticmethod |
|
24 | 24 | def supports(file_type): |
|
25 | 25 | return True |
|
26 | 26 | |
|
27 | 27 | def get_view(self): |
|
28 |
return '<div class="image" |
|
|
28 | return '<div class="image">'\ | |
|
29 | '{}'\ | |
|
30 | '<div class="image-metadata">{}, {}</div>'\ | |
|
31 | '</div>'.format(self.get_format_view(), | |
|
32 | self.file_type, filesizeformat(self.file.size)) | |
|
33 | ||
|
34 | def get_format_view(self): | |
|
35 | return '<a href="{}">'\ | |
|
29 | 36 | '<img src="{}" width="200" height="150"/>'\ |
|
30 | '</a>'\ | |
|
31 | '<div class="image-metadata">{}, {}</div>'\ | |
|
32 | '</div>'.format(self.file.url, static(FILE_STUB_IMAGE), | |
|
33 | self.file_type, filesizeformat(self.file.size)) | |
|
37 | '</a>'.format(self.file.url,static(FILE_STUB_IMAGE)) | |
|
34 | 38 | |
|
35 | 39 | |
|
36 | 40 | class WebmViewer(AbstractViewer): |
|
37 | 41 | @staticmethod |
|
38 | 42 | def supports(file_type): |
|
39 | 43 | return file_type == FILE_TYPE_WEBM |
|
40 | 44 | |
|
41 | def get_view(self): | |
|
42 | return '<div class="image">'\ | |
|
43 | '<video width="200" height="150" controls src="{}"/>'\ | |
|
44 | '</div>'.format(self.file.url) | |
|
45 | def get_format_view(self): | |
|
46 | return '<video width="200" height="150" controls src="{}"></video>'\ | |
|
47 | .format(self.file.url) | |
|
45 | 48 | |
|
46 | 49 | |
|
47 | 50 | class AudioViewer(AbstractViewer): |
|
48 | 51 | @staticmethod |
|
49 | 52 | def supports(file_type): |
|
50 | 53 | return file_type in FILE_TYPES_AUDIO |
|
51 | 54 | |
|
52 | def get_view(self): | |
|
53 | return '<div class="image">' \ | |
|
54 | '<audio controls src="{}"/>' \ | |
|
55 | '</div>'.format(self.file.url) | |
|
55 | def get_format_view(self): | |
|
56 | return '<audio controls src="{}"></audio>'.format(self.file.url) | |
|
56 | 57 | |
|
57 | 58 | |
|
58 | 59 | class SvgViewer(AbstractViewer): |
|
59 | 60 | @staticmethod |
|
60 | 61 | def supports(file_type): |
|
61 | 62 | return file_type == FILE_TYPE_SVG |
|
62 | 63 | |
|
63 | def get_view(self): | |
|
64 |
return '< |
|
|
65 | '<a class="thumb" href="{}">'\ | |
|
66 | '<img class="post-image-preview" width="200" height="150" src="{}"/>'\ | |
|
67 | '</a>'\ | |
|
68 | '</div>'.format(self.file.url, self.file.url) | |
|
64 | def get_format_view(self): | |
|
65 | return '<a class="thumb" href="{}">'\ | |
|
66 | '<img class="post-image-preview" width="200" height="150" src="{}" />'\ | |
|
67 | '</a>'.format(self.file.url, self.file.url) |
General Comments 0
You need to be logged in to leave comments.
Login now