##// END OF EJS Templates
Don't include pow and hasher scripts to both document and worker. Import...
Don't include pow and hasher scripts to both document and worker. Import hasher script only once for all tabs, not on every posting

File last commit:

r1441:f2404e3c merge decentral
r1468:14229bdf 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