From b2f3bec7697f2bf2aa9c4f41a0eba56b0da6e674 Mon Sep 17 00:00:00 2001 From: Mathieu Pillard Date: Fri, 22 Jan 2010 19:26:36 +0100 Subject: [PATCH] This time it should really work in every case... I hope. This really needs some unit tests. --- avatar/forms.py | 3 ++- avatar/models.py | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/avatar/forms.py b/avatar/forms.py index 365bc9e..50cd608 100644 --- a/avatar/forms.py +++ b/avatar/forms.py @@ -28,7 +28,8 @@ class UploadAvatarForm(forms.Form): "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 count >= AVATAR_MAX_AVATARS_PER_USER: + if AVATAR_MAX_AVATARS_PER_USER > 1 and \ + count >= AVATAR_MAX_AVATARS_PER_USER: raise forms.ValidationError( "You already have %d avatars, and the maximum allowed is %d." % (count, AVATAR_MAX_AVATARS_PER_USER)) diff --git a/avatar/models.py b/avatar/models.py index acd5d1c..c2b5fdc 100644 --- a/avatar/models.py +++ b/avatar/models.py @@ -33,10 +33,13 @@ class Avatar(models.Model): return _(u'Avatar for %s') % self.user def save(self, force_insert=False, force_update=False): - if self.primary: - avatars = Avatar.objects.filter(user=self.user, primary=True)\ - .exclude(id=self.id) - avatars.update(primary=False) + avatars = Avatar.objects.filter(user=self.user).exclude(id=self.id) + if AVATAR_MAX_AVATARS_PER_USER > 1: + if instance.primary: + avatars = avatars.filter(primary=True) + avatars.update(primary=False) + else: + avatars.delete() super(Avatar, self).save(force_insert, force_update) def thumbnail_exists(self, size):