viewers.py
40 lines
| 1.2 KiB
| text/x-python
|
PythonLexer
|
r1273 | from django.template.defaultfilters import filesizeformat | ||
|
r1275 | from django.templatetags.static import static | ||
|
r1273 | |||
class AbstractViewer: | ||||
def __init__(self, file, file_type): | ||||
self.file = file | ||||
self.file_type = file_type | ||||
@staticmethod | ||||
def get_viewer(file_type, file): | ||||
for viewer in VIEWERS: | ||||
if viewer.supports(file_type): | ||||
return viewer(file) | ||||
return AbstractViewer(file) | ||||
@staticmethod | ||||
def supports(file_type): | ||||
return true | ||||
def get_view(self): | ||||
return '<div class="image"><a href="{}">'\ | ||||
|
r1275 | '<img src="{}" width="200" height="150"/>'\ | ||
|
r1273 | '</a>'\ | ||
'<div class="image-metadata">{}, {}</div>'\ | ||||
|
r1275 | '</div>'.format(self.file.url, static('images/file.png'), self.file_type, | ||
|
r1273 | filesizeformat(self.file.size)) | ||
class WebmViewer(AbstractViewer): | ||||
@staticmethod | ||||
def supports(file_type): | ||||
return file_type == 'webm' | ||||
def get_view(self): | ||||
return '<div class="image">'\ | ||||
'<video width="200" height="150" controls/>'\ | ||||
'<source src="{}">'\ | ||||
'</div>'.format(self.file.url) | ||||