コード例 #1
0
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')
コード例 #2
0
ファイル: test_avatars.py プロジェクト: Didan/Misago
    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())
コード例 #3
0
ファイル: test_avatars.py プロジェクト: vfoss-org/Misago
    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())