##// END OF EJS Templates
Strip multiple newlines to one in the post before parsing with bbcode
Strip multiple newlines to one in the post before parsing with bbcode

File last commit:

r714:067f09c2 default
r754:6cc0010d default
Show More
image.py
59 lines | 1.7 KiB | text/x-python | PythonLexer
import hashlib
import os
from random import random
import time
from django.db import models
from boards import thumbs
__author__ = 'neko259'
IMAGE_THUMB_SIZE = (200, 150)
IMAGES_DIRECTORY = 'images/'
FILE_EXTENSION_DELIMITER = '.'
class PostImage(models.Model):
class Meta:
app_label = 'boards'
ordering = ('id',)
def _update_image_filename(self, filename):
"""
Gets unique image filename
"""
path = IMAGES_DIRECTORY
new_name = str(int(time.mktime(time.gmtime())))
new_name += str(int(random() * 1000))
new_name += FILE_EXTENSION_DELIMITER
new_name += filename.split(FILE_EXTENSION_DELIMITER)[-1:][0]
return os.path.join(path, new_name)
width = models.IntegerField(default=0)
height = models.IntegerField(default=0)
pre_width = models.IntegerField(default=0)
pre_height = models.IntegerField(default=0)
image = thumbs.ImageWithThumbsField(upload_to=_update_image_filename,
blank=True, sizes=(IMAGE_THUMB_SIZE,),
width_field='width',
height_field='height',
preview_width_field='pre_width',
preview_height_field='pre_height')
hash = models.CharField(max_length=36)
def save(self, *args, **kwargs):
"""
Saves the model and computes the image hash for deduplication purposes.
"""
if not self.pk and self.image:
md5 = hashlib.md5()
for chunk in self.image.chunks():
md5.update(chunk)
self.hash = md5.hexdigest()
super(PostImage, self).save(*args, **kwargs)