def serve_user_avatar_source(request, user_id, secret, hash): fallback_avatar = get_blank_avatar_file(min(settings.MISAGO_AVATARS_SIZES)) User = get_user_model() if user_id > 0: try: user = User.objects.get(id=user_id) tokens = store.get_user_avatar_tokens(user) suffix = tokens.get(secret) if suffix: avatar_file = get_user_avatar_file(user.pk, suffix) else: avatar_file = fallback_avatar except User.DoesNotExist: avatar_file = fallback_avatar else: avatar_file = fallback_avatar if avatar_file == fallback_avatar: avatar_dir = store.get_avatars_dir_path() else: avatar_dir = store.get_avatars_dir_path(user_id) avatar_path = os.path.join(avatar_dir, avatar_file) return make_file_response(avatar_path, 'image/png')
def test_store(self): """store successfully stores and deletes avatar""" User = get_user_model() test_user = User.objects.create_user('Bob', '*****@*****.**', 'pass123') test_image = Image.new("RGBA", (100, 100), 0) store.store_avatar(test_user, test_image) # Assert that avatar was stored avatar_dir = store.get_existing_avatars_dir(test_user) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertTrue(avatar.exists()) self.assertTrue(avatar.isfile()) # Delete avatar and assert its gone store.delete_avatar(test_user) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertFalse(avatar.exists()) # Override new avatar and test that it was changed store.store_avatar(test_user, test_image) store.store_new_avatar(test_user, test_image) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertTrue(avatar.exists()) self.assertTrue(avatar.isfile()) # Compute avatar hash test_user.avatar_hash = store.get_avatar_hash(test_user) self.assertEqual(len(test_user.avatar_hash), 8) test_user.save(update_fields=['avatar_hash']) # Get avatar tokens tokens = store.get_user_avatar_tokens(test_user) self.assertEqual(tokens[tokens['org']], 'org') self.assertEqual(tokens[tokens['tmp']], 'tmp') # Delete avatar store.delete_avatar(test_user) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertFalse(avatar.exists())
def test_store(self): """store successfully stores and deletes avatar""" User = get_user_model() test_user = User.objects.create_user('Bob', '*****@*****.**', 'pass123') test_image = Image.new("RGBA", (100, 100), 0) store.store_avatar(test_user, test_image) # Assert that avatar was stored avatar_dir = store.get_existing_avatars_dir(test_user) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertTrue(avatar.exists()) self.assertTrue(avatar.isfile()) # Delete avatar and assert its gone store.delete_avatar(test_user) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertFalse(avatar.exists()) # Override new avatar and test that it was changed store.store_avatar(test_user, test_image) store.store_new_avatar(test_user, test_image) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertTrue(avatar.exists()) self.assertTrue(avatar.isfile()) # Compute avatar hash test_user.avatar_hash = store.get_avatar_hash(test_user) self.assertEqual(len(test_user.avatar_hash), 8) test_user.save(update_fields=['avatar_hash']) # Get avatar tokens tokens = store.get_user_avatar_tokens(test_user) self.assertEqual(tokens[tokens['org']], 'org') self.assertEqual(tokens[tokens['tmp']], 'tmp') # Delete avatar store.delete_avatar(test_user) for size in settings.MISAGO_AVATARS_SIZES: avatar = Path('%s/%s_%s.png' % (avatar_dir, test_user.pk, size)) self.assertFalse(avatar.exists())