Skip to content

Commit f8f3aff

Browse files
fmooragjohnson
authored andcommitted
Replace extension pattern with updated version, resolves readthedocs#2618 (readthedocs#2880)
1 parent 73b8e76 commit f8f3aff

File tree

3 files changed

+69
-50
lines changed

3 files changed

+69
-50
lines changed
+13-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
"""Conditional classes for OAuth services"""
22

3-
from django.utils.module_loading import import_string
4-
from django.conf import settings
5-
6-
GitHubService = import_string(
7-
getattr(settings, 'OAUTH_GITHUB_SERVICE',
8-
'readthedocs.oauth.services.github.GitHubService'))
9-
BitbucketService = import_string(
10-
getattr(settings, 'OAUTH_BITBUCKET_SERVICE',
11-
'readthedocs.oauth.services.bitbucket.BitbucketService'))
3+
from readthedocs.core.utils.extend import SettingsOverrideObject
4+
from readthedocs.oauth.services import github, bitbucket
5+
6+
7+
class GitHubService(SettingsOverrideObject):
8+
_default_class = github.GitHubService
9+
_override_setting = 'OAUTH_GITHUB_SERVICE'
10+
11+
12+
class BitbucketService(SettingsOverrideObject):
13+
_default_class = bitbucket.BitbucketService
14+
_override_setting = 'OAUTH_BITBUCKET_SERVICE'
15+
1216

1317
registry = [GitHubService, BitbucketService]

readthedocs/privacy/loader.py

+47-29
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,54 @@
1-
from django.utils.module_loading import import_string
2-
from django.conf import settings
1+
from readthedocs.core.utils.extend import SettingsOverrideObject
2+
from readthedocs.privacy import backend
3+
34

45
# Managers
5-
ProjectManager = import_string(
6-
getattr(settings, 'PROJECT_MANAGER',
7-
'readthedocs.privacy.backend.ProjectManager'))
6+
from readthedocs.privacy.backends import syncers
7+
8+
9+
class ProjectManager(SettingsOverrideObject):
10+
_default_class = backend.ProjectManager
11+
_override_setting = 'PROJECT_MANAGER'
12+
13+
814
# VersionQuerySet was replaced by SettingsOverrideObject
9-
VersionManager = import_string(
10-
getattr(settings, 'VERSION_MANAGER',
11-
'readthedocs.privacy.backend.VersionManager'))
12-
BuildManager = import_string(
13-
getattr(settings, 'BUILD_MANAGER',
14-
'readthedocs.privacy.backend.BuildManager'))
15-
RelatedProjectManager = import_string(
16-
getattr(settings, 'RELATED_PROJECT_MANAGER',
17-
'readthedocs.privacy.backend.RelatedProjectManager'))
18-
RelatedBuildManager = import_string(
19-
getattr(settings, 'RELATED_BUILD_MANAGER',
20-
'readthedocs.privacy.backend.RelatedBuildManager'))
21-
RelatedUserManager = import_string(
22-
getattr(settings, 'RELATED_USER_MANAGER',
23-
'readthedocs.privacy.backend.RelatedUserManager'))
24-
ChildRelatedProjectManager = import_string(
25-
getattr(settings, 'CHILD_RELATED_PROJECT_MANAGER',
26-
'readthedocs.privacy.backend.ChildRelatedProjectManager'))
15+
class VersionManager(SettingsOverrideObject):
16+
_default_class = backend.VersionManager
17+
_override_setting = 'VERSION_MANAGER'
18+
19+
20+
class BuildManager(SettingsOverrideObject):
21+
_default_class = backend.BuildManager
22+
_override_setting = 'BUILD_MANAGER'
23+
24+
25+
class RelatedProjectManager(SettingsOverrideObject):
26+
_default_class = backend.RelatedProjectManager
27+
_override_setting = 'RELATED_PROJECT_MANAGER'
28+
29+
30+
class RelatedBuildManager(SettingsOverrideObject):
31+
_default_class = backend.RelatedBuildManager
32+
_override_setting = 'RELATED_BUILD_MANAGER'
33+
34+
35+
class RelatedUserManager(SettingsOverrideObject):
36+
_default_class = backend.RelatedUserManager
37+
_override_setting = 'RELATED_USER_MANAGER'
38+
39+
40+
class ChildRelatedProjectManager(SettingsOverrideObject):
41+
_default_class = backend.ChildRelatedProjectManager
42+
_override_setting = 'CHILD_RELATED_PROJECT_MANAGER'
43+
2744

2845
# Permissions
29-
AdminPermission = import_string(
30-
getattr(settings, 'ADMIN_PERMISSION',
31-
'readthedocs.privacy.backend.AdminPermission'))
46+
class AdminPermission(SettingsOverrideObject):
47+
_default_class = backend.AdminPermission
48+
_override_setting = 'ADMIN_PERMISSION'
49+
3250

3351
# Syncers
34-
Syncer = import_string(
35-
getattr(settings, 'FILE_SYNCER',
36-
'readthedocs.privacy.backends.syncers.LocalSyncer'))
52+
class Syncer(SettingsOverrideObject):
53+
_default_class = syncers.LocalSyncer
54+
_override_setting = 'FILE_SYNCER'

readthedocs/projects/backends/views.py

+9-12
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@
55
settings override of the view class.
66
"""
77

8-
from django.utils.module_loading import import_string
9-
from django.conf import settings
8+
from readthedocs.core.utils.extend import SettingsOverrideObject
9+
from readthedocs.projects.views import private
1010

1111

1212
# Project Import Wizard
13-
ImportWizardView = import_string(getattr(
14-
settings,
15-
'PROJECT_IMPORT_VIEW',
16-
'readthedocs.projects.views.private.ImportWizardView'
17-
))
13+
class ImportWizardView(SettingsOverrideObject):
14+
_default_class = private.ImportWizardView
15+
_override_setting = 'PROJECT_IMPORT_VIEW'
16+
1817

1918
# Project demo import
20-
ImportDemoView = import_string(getattr(
21-
settings,
22-
'PROJECT_IMPORT_DEMO_VIEW',
23-
'readthedocs.projects.views.private.ImportDemoView'
24-
))
19+
class ImportDemoView(SettingsOverrideObject):
20+
_default_class = private.ImportDemoView
21+
_override_setting = 'PROJECT_IMPORT_DEMO_VIEW'

0 commit comments

Comments
 (0)