def test_avatar_caching( self ): # 1. add first avatar self.client.login( username='******', password='******' ) self.assertEqual( get_avatar_path( self.u, 72 ), self._to_media_url( DEFAULT_AVATAR, 72 ) ) self.client.post( reverse( 'edit_avatar' ), { "photo": self.image } ) self.client.post( reverse( 'crop_avatar' ), { "top": 1, "left": 1, "bottom": 100, "right": 100 } ) avatar = Avatar.objects.get( user=self.u, valid=True ) self.assertEqual( get_avatar_path( self.u, 72 ), self._to_media_url( avatar.image.url, 72 ) ) shutil.copy( avatar.image.path, self.tmp_file ) # 2. replace avatar self.client.post( reverse( 'edit_avatar' ), { "photo": self.image2 } ) self.client.post( reverse( 'crop_avatar' ), { "top": 1, "left": 1, "bottom": 100, "right": 100 } ) avatar = Avatar.objects.get( user=self.u, valid=True ) self.assertEqual( get_avatar_path( self.u, 72 ), self._to_media_url( avatar.image.url, 72 ) ) rms = self._compare_images( self.tmp_file, avatar.image.path ) self.assertTrue( rms > 0.0 ) # 3. remove avatar Avatar.objects.get( user=self.u ).delete() self.assertEqual( get_avatar_path( self.u, 72 ), self._to_media_url( DEFAULT_AVATAR, 72 ) )
def test_no_avatar_in_storage( self ): self.client.login( username='******', password='******' ) self.client.post( reverse( 'edit_avatar' ), { "photo": self.image } ) self.client.post( reverse( 'crop_avatar' ), { "top": 1, "left": 1, "bottom": 100, "right": 100 } ) avatar = Avatar.objects.get( user=self.u, valid=True ) self.assertEqual( get_avatar_path( self.u, 72 ), self._to_media_url( avatar.image.url, 72 ) ) os.remove( avatar.image.path ) os.remove( os.path.join( settings.MEDIA_ROOT, self._to_media_url( avatar.image.name, 72 ) ) ) self.assertEqual( get_avatar_path( self.u, 72 ), self._to_media_url( DEFAULT_AVATAR, 72 ) )
def save(self): avatars = Avatar.objects.filter(user=self.user, valid=self.valid).exclude(id=self.id) if not avatars: self.clear_cache() for avatar in avatars: base, filename = os.path.split(avatar.image.path) name, extension = os.path.splitext(filename) avatar.delete() super(Avatar, self).save() # generate all thumbnails from film20.utils.avatars import get_avatar_path for size in AVATAR_SIZES: get_avatar_path(self.user, size)
def test_no_avatar_in_storage(self): self.client.login(username='******', password='******') self.client.post(reverse('edit_avatar'), {"photo": self.image}) self.client.post(reverse('crop_avatar'), { "top": 1, "left": 1, "bottom": 100, "right": 100 }) avatar = Avatar.objects.get(user=self.u, valid=True) self.assertEqual(get_avatar_path(self.u, 72), self._to_media_url(avatar.image.url, 72)) os.remove(avatar.image.path) os.remove( os.path.join(settings.MEDIA_ROOT, self._to_media_url(avatar.image.name, 72))) self.assertEqual(get_avatar_path(self.u, 72), self._to_media_url(DEFAULT_AVATAR, 72))
def test_avatar_caching(self): # 1. add first avatar self.client.login(username='******', password='******') self.assertEqual(get_avatar_path(self.u, 72), self._to_media_url(DEFAULT_AVATAR, 72)) self.client.post(reverse('edit_avatar'), {"photo": self.image}) self.client.post(reverse('crop_avatar'), { "top": 1, "left": 1, "bottom": 100, "right": 100 }) avatar = Avatar.objects.get(user=self.u, valid=True) self.assertEqual(get_avatar_path(self.u, 72), self._to_media_url(avatar.image.url, 72)) shutil.copy(avatar.image.path, self.tmp_file) # 2. replace avatar self.client.post(reverse('edit_avatar'), {"photo": self.image2}) self.client.post(reverse('crop_avatar'), { "top": 1, "left": 1, "bottom": 100, "right": 100 }) avatar = Avatar.objects.get(user=self.u, valid=True) self.assertEqual(get_avatar_path(self.u, 72), self._to_media_url(avatar.image.url, 72)) rms = self._compare_images(self.tmp_file, avatar.image.path) self.assertTrue(rms > 0.0) # 3. remove avatar Avatar.objects.get(user=self.u).delete() self.assertEqual(get_avatar_path(self.u, 72), self._to_media_url(DEFAULT_AVATAR, 72))
def avatars(size, activity_username): """ Returns url to user avatar """ return get_avatar_path(activity_username, size)