##// END OF EJS Templates
Use image file's dimensions, not storing them in the database
Use image file's dimensions, not storing them in the database

File last commit:

r1441:f2404e3c merge decentral
r1589:c2a3fd80 default
Show More
__init__.py
42 lines | 1.3 KiB | text/x-python | PythonLexer
from django.db import models
from boards import utils
from boards.models.attachment.viewers import get_viewers, AbstractViewer
from boards.utils import get_upload_filename, get_file_mimetype, get_extension
class AttachmentManager(models.Manager):
def create_with_hash(self, file):
file_hash = utils.get_file_hash(file)
existing = self.filter(hash=file_hash)
if len(existing) > 0:
attachment = existing[0]
else:
# FIXME Use full mimetype here, need to modify viewers too
file_type = get_extension(file.name)
attachment = self.create(file=file, mimetype=file_type,
hash=file_hash)
return attachment
class Attachment(models.Model):
objects = AttachmentManager()
file = models.FileField(upload_to=get_upload_filename)
mimetype = models.CharField(max_length=50)
hash = models.CharField(max_length=36)
def get_view(self):
file_viewer = None
for viewer in get_viewers():
if viewer.supports(self.mimetype):
file_viewer = viewer
break
if file_viewer is None:
file_viewer = AbstractViewer
return file_viewer(self.file, self.mimetype).get_view()
def __str__(self):
return self.file.url