mirror of
https://github.com/jazzband/django-avatar.git
synced 2026-03-16 22:20:30 +00:00
Merge pull request #162 from sedlar/signal_avatar_deleted
Add avatar_deleted signal
This commit is contained in:
commit
f940db8dc9
3 changed files with 29 additions and 1 deletions
|
|
@ -2,3 +2,4 @@ import django.dispatch
|
|||
|
||||
|
||||
avatar_updated = django.dispatch.Signal(providing_args=["user", "avatar"])
|
||||
avatar_deleted = django.dispatch.Signal(providing_args=["user", "avatar"])
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from django.contrib.auth.decorators import login_required
|
|||
from avatar.conf import settings
|
||||
from avatar.forms import PrimaryAvatarForm, DeleteAvatarForm, UploadAvatarForm
|
||||
from avatar.models import Avatar
|
||||
from avatar.signals import avatar_updated
|
||||
from avatar.signals import avatar_updated, avatar_deleted
|
||||
from avatar.utils import (get_primary_avatar, get_default_avatar_url,
|
||||
invalidate_cache)
|
||||
|
||||
|
|
@ -136,6 +136,10 @@ def delete(request, extra_context=None, next_override=None, *args, **kwargs):
|
|||
if request.method == 'POST':
|
||||
if delete_avatar_form.is_valid():
|
||||
ids = delete_avatar_form.cleaned_data['choices']
|
||||
for a in avatars:
|
||||
if six.text_type(a.id) in ids:
|
||||
avatar_deleted.send(sender=Avatar, user=request.user,
|
||||
avatar=a)
|
||||
if six.text_type(avatar.id) in ids and avatars.count() > len(ids):
|
||||
# Find the next best avatar, and set it as the new primary
|
||||
for a in avatars:
|
||||
|
|
|
|||
|
|
@ -14,9 +14,26 @@ from avatar.conf import settings
|
|||
from avatar.utils import get_primary_avatar, get_user_model
|
||||
from avatar.models import Avatar
|
||||
from avatar.templatetags import avatar_tags
|
||||
from avatar.signals import avatar_deleted
|
||||
from PIL import Image
|
||||
|
||||
|
||||
class AssertSignal:
|
||||
def __init__(self):
|
||||
self.signal_sent_count = 0
|
||||
self.avatar = None
|
||||
self.user = None
|
||||
self.sender = None
|
||||
self.signal = None
|
||||
|
||||
def __call__(self, user, avatar, sender, signal):
|
||||
self.user = user
|
||||
self.avatar = avatar
|
||||
self.sender = sender
|
||||
self.signal = signal
|
||||
self.signal_sent_count += 1
|
||||
|
||||
|
||||
def upload_helper(o, filename):
|
||||
f = open(os.path.join(o.testdatapath, filename), "rb")
|
||||
response = o.client.post(reverse('avatar_add'), {
|
||||
|
|
@ -110,6 +127,8 @@ class AvatarTests(TestCase):
|
|||
self.test_normal_image_upload()
|
||||
avatar = Avatar.objects.filter(user=self.user)
|
||||
self.assertEqual(len(avatar), 1)
|
||||
receiver = AssertSignal()
|
||||
avatar_deleted.connect(receiver)
|
||||
response = self.client.post(reverse('avatar_delete'), {
|
||||
'choices': [avatar[0].id],
|
||||
}, follow=True)
|
||||
|
|
@ -117,6 +136,10 @@ class AvatarTests(TestCase):
|
|||
self.assertEqual(len(response.redirect_chain), 1)
|
||||
count = Avatar.objects.filter(user=self.user).count()
|
||||
self.assertEqual(count, 0)
|
||||
self.assertEqual(receiver.user, self.user)
|
||||
self.assertEqual(receiver.avatar, avatar[0])
|
||||
self.assertEqual(receiver.sender, Avatar)
|
||||
self.assertEqual(receiver.signal_sent_count, 1)
|
||||
|
||||
def test_delete_primary_avatar_and_new_primary(self):
|
||||
self.test_there_can_be_only_one_primary_avatar()
|
||||
|
|
|
|||
Loading…
Reference in a new issue