Skip to content

Commit

Permalink
limitando tamanho de imagens - precisa adicionar valor na settings.py
Browse files Browse the repository at this point in the history
  • Loading branch information
fernao committed May 23, 2015
1 parent d41750e commit 4bff97c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 7 deletions.
3 changes: 3 additions & 0 deletions app/django-bbx/bbx/settings.example.py
Expand Up @@ -246,3 +246,6 @@
}

AUTH_PROFILE_MODULE = 'mocambola.Mocambola'

## Uploaded image size limit
IMAGE_MAX_SIZE = 2000 # px
16 changes: 15 additions & 1 deletion app/django-bbx/media/models.py
Expand Up @@ -7,6 +7,7 @@
from importlib import import_module
import json
import re
from PIL import Image, ImageOps

from django.db import models
from django.contrib.auth.models import User
Expand All @@ -18,7 +19,7 @@
from django.utils import timezone

from tag.models import Tag
from bbx.settings import REPOSITORY_DIR, DEFAULT_MUCUA
from bbx.settings import REPOSITORY_DIR, DEFAULT_MUCUA,IMAGE_MAX_SIZE
from bbx.utils import logger
from repository.tasks import git_annex_get

Expand Down Expand Up @@ -108,6 +109,19 @@ def get_media_type_by_filename(file_object):

return file_type

def handle_uploaded_image(instance, image_path):
"""Limita arquivos de imagem ao tamanho máximo padrão"""
filename = os.path.join(get_file_path(instance), instance.get_file_name())
image = Image.open(image_path)
width, height = image.size

# if exceeds max size, resize it
if width > IMAGE_MAX_SIZE or height > IMAGE_MAX_SIZE:
image.thumbnail((IMAGE_MAX_SIZE, IMAGE_MAX_SIZE), Image.ANTIALIAS)
image.save(filename)

return filename

def getTypeChoices():
"""Retorna uma tupla com os tipos de media suportados"""
return TYPE_CHOICES
Expand Down
21 changes: 15 additions & 6 deletions app/django-bbx/media/views.py
Expand Up @@ -19,7 +19,7 @@
from media.models import Media, generate_UUID, get_now
from tag.models import Tag
from media.serializers import MediaSerializer
from media.models import getTypeChoices, getFormatChoices, get_media_name_by_filename,get_media_type_by_filename
from media.models import getTypeChoices, getFormatChoices, get_media_name_by_filename,get_media_type_by_filename,handle_uploaded_image
from bbx.settings import DEFAULT_MUCUA, DEFAULT_REPOSITORY
from bbx.utils import logger
from mucua.models import Mucua
Expand Down Expand Up @@ -426,20 +426,29 @@ def media_detail(request, repository, mucua, pk=None, format=None):
)

if request.FILES.getlist('media_file') :
logger.info('multiple upload')
# multiple upload
for filename, file in request.FILES.iteritems():
file_name = request.FILES[filename].name

media.format=file_name.split('.')[-1].lower()
media.name=get_media_name_by_filename(file_name)
media.type=get_media_type_by_filename(request.FILES[filename])
media.media_file=request.FILES[filename]
else:
media.type=get_media_type_by_filename(request.FILES[filename])
if media.type == 'imagem':
media.media_file=handle_uploaded_image(media, request.FILES[filename].temporary_file_path())
else:
media.media_file=request.FILES[filename]

else:
logger.info('single upload')
# single upload
media.name=request.DATA['name']
media.format=request.FILES['media_file'].name.split('.')[-1].lower()
media.media_file=request.FILES['media_file']

if media.type == 'imagem':
media.media_file=handle_uploaded_image(media, request.FILES['media_file'].temporary_file_path())
else:
media.media_file=request.FILES[filename]

media.save()
if media.id:
# get tags by list or separated by ','
Expand Down

0 comments on commit 4bff97c

Please sign in to comment.