Пример #1
0
    def get_mugshot_url(self):
        """
        Returns the image containing the mugshot for the user.

        The mugshot can be a uploaded image or a Gravatar.

        Gravatar functionality will only be used when
        ``ACCOUNTS_MUGSHOT_GRAVATAR`` is set to ``True``.

        :return:
            ``None`` when Gravatar is not used and no default image is supplied
            by ``ACCOUNTS_MUGSHOT_DEFAULT``.

        """
        # First check for a mugshot and if any return that.
        if self.mugshot:
            return self.mugshot.url

        # Use Gravatar if the user wants to.
        if accounts_settings.ACCOUNTS_MUGSHOT_GRAVATAR:
            return get_gravatar(self.user.email,
                                accounts_settings.ACCOUNTS_MUGSHOT_SIZE,
                                accounts_settings.ACCOUNTS_MUGSHOT_DEFAULT)

        # Gravatar not used, check for a default image.
        else:
            if accounts_settings.ACCOUNTS_MUGSHOT_DEFAULT not in ['404', 'mm',
                                                                'identicon',
                                                                'monsterid',
                                                                'wavatar']:
                return accounts_settings.ACCOUNTS_MUGSHOT_DEFAULT
            else: return None
Пример #2
0
    def test_get_gravatar(self):
        template = 'http://www.gravatar.com/avatar/%(hash)s?s=%(size)s&d=%(type)s'

        # The hash for [email protected]
        hash = hashlib.md5('*****@*****.**').hexdigest()

        # Check the defaults.
        self.failUnlessEqual(get_gravatar('*****@*****.**'),
                             template % {'hash': hash,
                                         'size': 80,
                                         'type': 'identicon'})

        # Check different size
        self.failUnlessEqual(get_gravatar('*****@*****.**', size=200),
                             template % {'hash': hash,
                                         'size': 200,
                                         'type': 'identicon'})

        # Check different default
        http_404 = get_gravatar('*****@*****.**', default='404')
        self.failUnlessEqual(http_404,
                             template % {'hash': hash,
                                         'size': 80,
                                         'type': '404'})

        # Is it really a 404?
        response = self.client.get(http_404)
        self.failUnlessEqual(response.status_code, 404)

        # Test the switch to HTTPS
        accounts_settings.ACCOUNTS_MUGSHOT_GRAVATAR_SECURE = True

        template = 'https://secure.gravatar.com/avatar/%(hash)s?s=%(size)s&d=%(type)s'
        self.failUnlessEqual(get_gravatar('*****@*****.**'),
                             template % {'hash': hash,
                                         'size': 80,
                                         'type': 'identicon'})

        # And set back to default
        accounts_settings.ACCOUNTS_MUGSHOT_GRAVATAR_SECURE = False