Implement a max size for the avatars. Defaults to 1 megabyte for now.

This commit is contained in:
Mathieu Pillard 2010-01-22 14:10:07 +01:00 committed by Eric Florenzano
parent 470b90be4a
commit e0654c8d57
2 changed files with 8 additions and 1 deletions

View file

@ -15,6 +15,7 @@ AVATAR_GRAVATAR_DEFAULT = getattr(settings, 'AVATAR_GRAVATAR_DEFAULT', None)
AVATAR_DEFAULT_URL = getattr(settings, 'AVATAR_DEFAULT_URL',
settings.MEDIA_URL + os.path.join(os.path.dirname(__file__), 'default.jpg'))
AVATAR_MAX_AVATARS_PER_USER = getattr(settings, 'AVATAR_MAX_AVATARS_PER_USER', 42)
AVATAR_MAX_SIZE = getattr(settings, 'AVATAR_MAX_SIZE', 1024 * 1024)
from django.db.models import signals
from django.contrib.auth.models import User

View file

@ -3,7 +3,9 @@ from django.forms import widgets
from django.utils.safestring import mark_safe
from avatar.models import Avatar
from avatar import AVATAR_MAX_AVATARS_PER_USER
from avatar import AVATAR_MAX_AVATARS_PER_USER, AVATAR_MAX_SIZE
from django.template.defaultfilters import filesizeformat
def avatar_img(avatar, size):
if not avatar.thumbnail_exists(size):
@ -21,6 +23,10 @@ class UploadAvatarForm(forms.Form):
def clean_avatar(self):
data = self.cleaned_data['avatar']
if data.size > AVATAR_MAX_SIZE:
raise forms.ValidationError(
"Your file is too big (%s), the maximum allowed size is %s" %
(filesizeformat(data.size), filesizeformat(AVATAR_MAX_SIZE)))
count = Avatar.objects.filter(user=self.user).count()
if AVATAR_MAX_AVATARS_PER_USER > 1 and \
count >= AVATAR_MAX_AVATARS_PER_USER: