Skip to content

Commit

Permalink
Merge pull request #3419 from rtfd/humitos/oauth/default-avatar
Browse files Browse the repository at this point in the history
Use default avatar for User/Orgs in OAuth services
  • Loading branch information
ericholscher authored Dec 18, 2017
2 parents b7434c0 + 0071407 commit 3cfba49
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 2 deletions.
3 changes: 3 additions & 0 deletions readthedocs/oauth/services/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ class Service(object):
adapter = None
url_pattern = None

default_user_avatar_url = settings.OAUTH_AVATAR_USER_DEFAULT_URL
default_org_avatar_url = settings.OAUTH_AVATAR_ORG_DEFAULT_URL

def __init__(self, user, account):
self.session = None
self.user = user
Expand Down
4 changes: 4 additions & 0 deletions readthedocs/oauth/services/bitbucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ def create_repository(self, fields, privacy=DEFAULT_PRIVACY_LEVEL,

avatar_url = fields['links']['avatar']['href'] or ''
repo.avatar_url = re.sub(r'\/16\/$', r'/32/', avatar_url)
if not repo.avatar_url:
repo.avatar_url = self.default_user_avatar_url

repo.json = json.dumps(fields)
repo.save()
Expand All @@ -159,6 +161,8 @@ def create_organization(self, fields):
organization.name = fields.get('display_name')
organization.email = fields.get('email')
organization.avatar_url = fields['links']['avatar']['href']
if not organization.avatar_url:
organization.avatar_url = self.default_org_avatar_url
organization.url = fields['links']['html']['href']
organization.json = json.dumps(fields)
organization.account = self.account
Expand Down
4 changes: 4 additions & 0 deletions readthedocs/oauth/services/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ def create_repository(self, fields, privacy=DEFAULT_PRIVACY_LEVEL,
repo.vcs = 'git'
repo.account = self.account
repo.avatar_url = fields.get('owner', {}).get('avatar_url')
if not repo.avatar_url:
repo.avatar_url = self.default_user_avatar_url
repo.json = json.dumps(fields)
repo.save()
return repo
Expand Down Expand Up @@ -145,6 +147,8 @@ def create_organization(self, fields):
organization.name = fields.get('name')
organization.email = fields.get('email')
organization.avatar_url = fields.get('avatar_url')
if not organization.avatar_url:
organization.avatar_url = self.default_org_avatar_url
organization.json = json.dumps(fields)
organization.account = self.account
organization.save()
Expand Down
7 changes: 6 additions & 1 deletion readthedocs/oauth/services/gitlab.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,10 @@ def create_repository(

owner = fields.get('owner') or {}
repo.avatar_url = (
fields.get('avatar_url') or owner.get('avatar_url'))
fields.get('avatar_url') or owner.get('avatar_url')
)
if not repo.avatar_url:
repo.avatar_url = self.default_user_avatar_url

repo.json = json.dumps(fields)
repo.save()
Expand Down Expand Up @@ -201,6 +204,8 @@ def create_organization(self, fields):
path=fields.get('path'),
)
organization.avatar_url = fields.get('avatar_url')
if not organization.avatar_url:
organization.avatar_url = self.default_user_avatar_url
organization.json = json.dumps(fields)
organization.save()
return organization
Expand Down
6 changes: 5 additions & 1 deletion readthedocs/rtd_tests/tests/test_oauth.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
absolute_import, division, print_function, unicode_literals)

import mock
from django.conf import settings
from django.contrib.auth.models import User
from django.test import TestCase

Expand Down Expand Up @@ -42,7 +43,10 @@ def test_make_project_pass(self):
self.assertEqual(repo.name, 'testrepo')
self.assertEqual(repo.full_name, 'testuser/testrepo')
self.assertEqual(repo.description, 'Test Repo')
self.assertIsNone(repo.avatar_url)
self.assertEqual(
repo.avatar_url,
settings.OAUTH_AVATAR_USER_DEFAULT_URL,
)
self.assertIn(self.user, repo.users.all())
self.assertEqual(repo.organization, self.org)
self.assertEqual(
Expand Down
2 changes: 2 additions & 0 deletions readthedocs/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,8 @@ def INSTALLED_APPS(self): # noqa
# Misc application settings
GLOBAL_ANALYTICS_CODE = 'UA-17997319-1'
GRAVATAR_DEFAULT_IMAGE = 'https://media.readthedocs.org/images/silhouette.png' # NOQA
OAUTH_AVATAR_USER_DEFAULT_URL = GRAVATAR_DEFAULT_IMAGE
OAUTH_AVATAR_ORG_DEFAULT_URL = GRAVATAR_DEFAULT_IMAGE
RESTRICTEDSESSIONS_AUTHED_ONLY = True
RESTRUCTUREDTEXT_FILTER_SETTINGS = {
'cloak_email_addresses': True,
Expand Down

0 comments on commit 3cfba49

Please sign in to comment.