Skip to content

Replace extension pattern with updated version, resolves #2618 #2880

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 22, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions readthedocs/oauth/services/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
"""Conditional classes for OAuth services"""

from django.utils.module_loading import import_string
from django.conf import settings

GitHubService = import_string(
getattr(settings, 'OAUTH_GITHUB_SERVICE',
'readthedocs.oauth.services.github.GitHubService'))
BitbucketService = import_string(
getattr(settings, 'OAUTH_BITBUCKET_SERVICE',
'readthedocs.oauth.services.bitbucket.BitbucketService'))
from readthedocs.core.utils.extend import SettingsOverrideObject
from readthedocs.oauth.services import github, bitbucket


class GitHubService(SettingsOverrideObject):
_default_class = github.GitHubService
_override_setting = 'OAUTH_GITHUB_SERVICE'


class BitbucketService(SettingsOverrideObject):
_default_class = bitbucket.BitbucketService
_override_setting = 'OAUTH_BITBUCKET_SERVICE'


registry = [GitHubService, BitbucketService]
76 changes: 47 additions & 29 deletions readthedocs/privacy/loader.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,54 @@
from django.utils.module_loading import import_string
from django.conf import settings
from readthedocs.core.utils.extend import SettingsOverrideObject
from readthedocs.privacy import backend


# Managers
ProjectManager = import_string(
getattr(settings, 'PROJECT_MANAGER',
'readthedocs.privacy.backend.ProjectManager'))
from readthedocs.privacy.backends import syncers


class ProjectManager(SettingsOverrideObject):
_default_class = backend.ProjectManager
_override_setting = 'PROJECT_MANAGER'


# VersionQuerySet was replaced by SettingsOverrideObject
VersionManager = import_string(
getattr(settings, 'VERSION_MANAGER',
'readthedocs.privacy.backend.VersionManager'))
BuildManager = import_string(
getattr(settings, 'BUILD_MANAGER',
'readthedocs.privacy.backend.BuildManager'))
RelatedProjectManager = import_string(
getattr(settings, 'RELATED_PROJECT_MANAGER',
'readthedocs.privacy.backend.RelatedProjectManager'))
RelatedBuildManager = import_string(
getattr(settings, 'RELATED_BUILD_MANAGER',
'readthedocs.privacy.backend.RelatedBuildManager'))
RelatedUserManager = import_string(
getattr(settings, 'RELATED_USER_MANAGER',
'readthedocs.privacy.backend.RelatedUserManager'))
ChildRelatedProjectManager = import_string(
getattr(settings, 'CHILD_RELATED_PROJECT_MANAGER',
'readthedocs.privacy.backend.ChildRelatedProjectManager'))
class VersionManager(SettingsOverrideObject):
_default_class = backend.VersionManager
_override_setting = 'VERSION_MANAGER'


class BuildManager(SettingsOverrideObject):
_default_class = backend.BuildManager
_override_setting = 'BUILD_MANAGER'


class RelatedProjectManager(SettingsOverrideObject):
_default_class = backend.RelatedProjectManager
_override_setting = 'RELATED_PROJECT_MANAGER'


class RelatedBuildManager(SettingsOverrideObject):
_default_class = backend.RelatedBuildManager
_override_setting = 'RELATED_BUILD_MANAGER'


class RelatedUserManager(SettingsOverrideObject):
_default_class = backend.RelatedUserManager
_override_setting = 'RELATED_USER_MANAGER'


class ChildRelatedProjectManager(SettingsOverrideObject):
_default_class = backend.ChildRelatedProjectManager
_override_setting = 'CHILD_RELATED_PROJECT_MANAGER'


# Permissions
AdminPermission = import_string(
getattr(settings, 'ADMIN_PERMISSION',
'readthedocs.privacy.backend.AdminPermission'))
class AdminPermission(SettingsOverrideObject):
_default_class = backend.AdminPermission
_override_setting = 'ADMIN_PERMISSION'


# Syncers
Syncer = import_string(
getattr(settings, 'FILE_SYNCER',
'readthedocs.privacy.backends.syncers.LocalSyncer'))
class Syncer(SettingsOverrideObject):
_default_class = syncers.LocalSyncer
_override_setting = 'FILE_SYNCER'
21 changes: 9 additions & 12 deletions readthedocs/projects/backends/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,17 @@
settings override of the view class.
"""

from django.utils.module_loading import import_string
from django.conf import settings
from readthedocs.core.utils.extend import SettingsOverrideObject
from readthedocs.projects.views import private


# Project Import Wizard
ImportWizardView = import_string(getattr(
settings,
'PROJECT_IMPORT_VIEW',
'readthedocs.projects.views.private.ImportWizardView'
))
class ImportWizardView(SettingsOverrideObject):
_default_class = private.ImportWizardView
_override_setting = 'PROJECT_IMPORT_VIEW'


# Project demo import
ImportDemoView = import_string(getattr(
settings,
'PROJECT_IMPORT_DEMO_VIEW',
'readthedocs.projects.views.private.ImportDemoView'
))
class ImportDemoView(SettingsOverrideObject):
_default_class = private.ImportDemoView
_override_setting = 'PROJECT_IMPORT_DEMO_VIEW'