from django.template.defaultfilters import filesizeformat 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 '
'\ ''\ ''\ '
{}, {}
'\ '
'.format(self.file.url, self.file_type, filesizeformat(self.file.size)) class WebmViewer(AbstractViewer): @staticmethod def supports(file_type): return file_type == 'webm' def get_view(self): return '
'\ '
'.format(self.file.url)