Skip to content

Commit 3cfba49

Browse files
authored
Merge pull request #3419 from rtfd/humitos/oauth/default-avatar
Use default avatar for User/Orgs in OAuth services
2 parents b7434c0 + 0071407 commit 3cfba49

File tree

6 files changed

+24
-2
lines changed

6 files changed

+24
-2
lines changed

readthedocs/oauth/services/base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ class Service(object):
3131
adapter = None
3232
url_pattern = None
3333

34+
default_user_avatar_url = settings.OAUTH_AVATAR_USER_DEFAULT_URL
35+
default_org_avatar_url = settings.OAUTH_AVATAR_ORG_DEFAULT_URL
36+
3437
def __init__(self, user, account):
3538
self.session = None
3639
self.user = user

readthedocs/oauth/services/bitbucket.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ def create_repository(self, fields, privacy=DEFAULT_PRIVACY_LEVEL,
137137

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

141143
repo.json = json.dumps(fields)
142144
repo.save()
@@ -159,6 +161,8 @@ def create_organization(self, fields):
159161
organization.name = fields.get('display_name')
160162
organization.email = fields.get('email')
161163
organization.avatar_url = fields['links']['avatar']['href']
164+
if not organization.avatar_url:
165+
organization.avatar_url = self.default_org_avatar_url
162166
organization.url = fields['links']['html']['href']
163167
organization.json = json.dumps(fields)
164168
organization.account = self.account

readthedocs/oauth/services/github.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ def create_repository(self, fields, privacy=DEFAULT_PRIVACY_LEVEL,
115115
repo.vcs = 'git'
116116
repo.account = self.account
117117
repo.avatar_url = fields.get('owner', {}).get('avatar_url')
118+
if not repo.avatar_url:
119+
repo.avatar_url = self.default_user_avatar_url
118120
repo.json = json.dumps(fields)
119121
repo.save()
120122
return repo
@@ -145,6 +147,8 @@ def create_organization(self, fields):
145147
organization.name = fields.get('name')
146148
organization.email = fields.get('email')
147149
organization.avatar_url = fields.get('avatar_url')
150+
if not organization.avatar_url:
151+
organization.avatar_url = self.default_org_avatar_url
148152
organization.json = json.dumps(fields)
149153
organization.account = self.account
150154
organization.save()

readthedocs/oauth/services/gitlab.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,10 @@ def create_repository(
162162

163163
owner = fields.get('owner') or {}
164164
repo.avatar_url = (
165-
fields.get('avatar_url') or owner.get('avatar_url'))
165+
fields.get('avatar_url') or owner.get('avatar_url')
166+
)
167+
if not repo.avatar_url:
168+
repo.avatar_url = self.default_user_avatar_url
166169

167170
repo.json = json.dumps(fields)
168171
repo.save()
@@ -201,6 +204,8 @@ def create_organization(self, fields):
201204
path=fields.get('path'),
202205
)
203206
organization.avatar_url = fields.get('avatar_url')
207+
if not organization.avatar_url:
208+
organization.avatar_url = self.default_user_avatar_url
204209
organization.json = json.dumps(fields)
205210
organization.save()
206211
return organization

readthedocs/rtd_tests/tests/test_oauth.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
absolute_import, division, print_function, unicode_literals)
44

55
import mock
6+
from django.conf import settings
67
from django.contrib.auth.models import User
78
from django.test import TestCase
89

@@ -42,7 +43,10 @@ def test_make_project_pass(self):
4243
self.assertEqual(repo.name, 'testrepo')
4344
self.assertEqual(repo.full_name, 'testuser/testrepo')
4445
self.assertEqual(repo.description, 'Test Repo')
45-
self.assertIsNone(repo.avatar_url)
46+
self.assertEqual(
47+
repo.avatar_url,
48+
settings.OAUTH_AVATAR_USER_DEFAULT_URL,
49+
)
4650
self.assertIn(self.user, repo.users.all())
4751
self.assertEqual(repo.organization, self.org)
4852
self.assertEqual(

readthedocs/settings/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,8 @@ def INSTALLED_APPS(self): # noqa
314314
# Misc application settings
315315
GLOBAL_ANALYTICS_CODE = 'UA-17997319-1'
316316
GRAVATAR_DEFAULT_IMAGE = 'https://media.readthedocs.org/images/silhouette.png' # NOQA
317+
OAUTH_AVATAR_USER_DEFAULT_URL = GRAVATAR_DEFAULT_IMAGE
318+
OAUTH_AVATAR_ORG_DEFAULT_URL = GRAVATAR_DEFAULT_IMAGE
317319
RESTRICTEDSESSIONS_AUTHED_ONLY = True
318320
RESTRUCTUREDTEXT_FILTER_SETTINGS = {
319321
'cloak_email_addresses': True,

0 commit comments

Comments
 (0)