##// END OF EJS Templates
Updated file image
Updated file image

File last commit:

r1290:8be27cbf default
r1290:8be27cbf default
Show More
viewers.py
68 lines | 1.8 KiB | text/x-python | PythonLexer
neko259
Added support for different attachment types
r1273 from django.template.defaultfilters import filesizeformat
neko259
Updated file image
r1290 from django.contrib.staticfiles.templatetags.staticfiles import static
neko259
Added support for different attachment types
r1273
neko259
Support audio viewer
r1279 FILE_STUB_IMAGE = 'images/file.png'
FILE_TYPE_WEBM = 'webm'
neko259
Added basic SVG support
r1284 FILE_TYPE_SVG = 'svg'
neko259
Support audio viewer
r1279 FILE_TYPES_AUDIO = (
'ogg',
'mp3',
)
neko259
Added support for different attachment types
r1273
neko259
Autodetect attachment viewers by getting all abstract viewer subclasses
r1286 def get_viewers():
return AbstractViewer.__subclasses__()
neko259
Added support for different attachment types
r1273 class AbstractViewer:
def __init__(self, file, file_type):
self.file = file
self.file_type = file_type
@staticmethod
def supports(file_type):
neko259
Support audio viewer
r1279 return True
neko259
Added support for different attachment types
r1273
def get_view(self):
return '<div class="image"><a href="{}">'\
neko259
Use proper cached static image for unknown file
r1275 '<img src="{}" width="200" height="150"/>'\
neko259
Added support for different attachment types
r1273 '</a>'\
'<div class="image-metadata">{}, {}</div>'\
neko259
Support audio viewer
r1279 '</div>'.format(self.file.url, static(FILE_STUB_IMAGE),
self.file_type, filesizeformat(self.file.size))
neko259
Added support for different attachment types
r1273
class WebmViewer(AbstractViewer):
@staticmethod
def supports(file_type):
neko259
Support audio viewer
r1279 return file_type == FILE_TYPE_WEBM
neko259
Added support for different attachment types
r1273
def get_view(self):
return '<div class="image">'\
neko259
Support audio viewer
r1279 '<video width="200" height="150" controls src="{}"/>'\
neko259
Added support for different attachment types
r1273 '</div>'.format(self.file.url)
neko259
Support audio viewer
r1279
class AudioViewer(AbstractViewer):
@staticmethod
def supports(file_type):
return file_type in FILE_TYPES_AUDIO
def get_view(self):
return '<div class="image">' \
'<audio controls src="{}"/>' \
'</div>'.format(self.file.url)
neko259
Added basic SVG support
r1284
class SvgViewer(AbstractViewer):
@staticmethod
def supports(file_type):
return file_type == FILE_TYPE_SVG
def get_view(self):
return '<div class="image">'\
neko259
Resize svg images just like all others
r1285 '<a class="thumb" href="{}">'\
'<img class="post-image-preview" width="200" height="150" src="{}"/>'\
'</a>'\
'</div>'.format(self.file.url, self.file.url)