diff --git a/avatar/__init__.py b/avatar/__init__.py index f90f0a7..3750a07 100644 --- a/avatar/__init__.py +++ b/avatar/__init__.py @@ -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 diff --git a/avatar/forms.py b/avatar/forms.py index 6fa2ad4..471eea3 100644 --- a/avatar/forms.py +++ b/avatar/forms.py @@ -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: