parent
27e8dc3b65
commit
64854e4af9
|
@ -15,7 +15,7 @@ from taggit.managers import TaggableManager
|
|||
|
||||
from readthedocs.core.utils import broadcast
|
||||
from readthedocs.privacy.backend import VersionQuerySet, VersionManager
|
||||
from readthedocs.privacy.loader import RelatedBuildManager, BuildManager
|
||||
from readthedocs.privacy.loader import RelatedBuildQuerySet, BuildQuerySet
|
||||
from readthedocs.projects.models import Project
|
||||
from readthedocs.projects.constants import (PRIVACY_CHOICES, GITHUB_URL,
|
||||
GITHUB_REGEXS, BITBUCKET_URL,
|
||||
|
@ -346,7 +346,7 @@ class Build(models.Model):
|
|||
|
||||
# Manager
|
||||
|
||||
objects = BuildManager()
|
||||
objects = BuildQuerySet.as_manager()
|
||||
|
||||
class Meta:
|
||||
ordering = ['-date']
|
||||
|
@ -414,7 +414,7 @@ class BuildCommandResult(BuildCommandResultMixin, models.Model):
|
|||
ordering = ['start_time']
|
||||
get_latest_by = 'start_time'
|
||||
|
||||
objects = RelatedBuildManager()
|
||||
objects = RelatedBuildQuerySet.as_manager()
|
||||
|
||||
def __unicode__(self):
|
||||
return (ugettext(u'Build command {pk} for build {build}')
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
"""Managers for OAuth models"""
|
||||
|
||||
from readthedocs.privacy.loader import RelatedUserManager
|
||||
from readthedocs.privacy.loader import RelatedUserQuerySet
|
||||
|
||||
|
||||
class RemoteRepositoryManager(RelatedUserManager):
|
||||
class RemoteRepositoryQuerySet(RelatedUserQuerySet):
|
||||
pass
|
||||
|
||||
|
||||
class RemoteOrganizationManager(RelatedUserManager):
|
||||
class RemoteOrganizationQuerySet(RelatedUserQuerySet):
|
||||
pass
|
||||
|
|
|
@ -14,7 +14,7 @@ from allauth.socialaccount.models import SocialAccount
|
|||
from readthedocs.projects.constants import REPO_CHOICES
|
||||
from readthedocs.projects.models import Project
|
||||
|
||||
from .managers import RemoteRepositoryManager, RemoteOrganizationManager
|
||||
from .managers import RemoteRepositoryQuerySet, RemoteOrganizationQuerySet
|
||||
|
||||
|
||||
DEFAULT_PRIVACY_LEVEL = getattr(settings, 'DEFAULT_PRIVACY_LEVEL', 'public')
|
||||
|
@ -47,7 +47,7 @@ class RemoteOrganization(models.Model):
|
|||
|
||||
json = models.TextField(_('Serialized API response'))
|
||||
|
||||
objects = RemoteOrganizationManager()
|
||||
objects = RemoteOrganizationQuerySet.as_manager()
|
||||
|
||||
def __unicode__(self):
|
||||
return 'Remote organization: {name}'.format(name=self.slug)
|
||||
|
@ -111,7 +111,7 @@ class RemoteRepository(models.Model):
|
|||
|
||||
json = models.TextField(_('Serialized API response'))
|
||||
|
||||
objects = RemoteRepositoryManager()
|
||||
objects = RemoteRepositoryQuerySet.as_manager()
|
||||
|
||||
class Meta:
|
||||
ordering = ['organization__name', 'name']
|
||||
|
|
|
@ -14,7 +14,7 @@ from readthedocs.core.utils.extend import (SettingsOverrideObject,
|
|||
from readthedocs.projects import constants
|
||||
|
||||
|
||||
class ProjectManager(models.Manager):
|
||||
class ProjectQuerySet(models.QuerySet):
|
||||
|
||||
"""Projects take into account their own privacy_level setting."""
|
||||
|
||||
|
@ -22,7 +22,7 @@ class ProjectManager(models.Manager):
|
|||
|
||||
def _add_user_repos(self, queryset, user):
|
||||
if user.has_perm('projects.view_project'):
|
||||
return self.get_queryset().all().distinct()
|
||||
return self.all().distinct()
|
||||
if user.is_authenticated():
|
||||
user_queryset = get_objects_for_user(user, 'projects.view_project')
|
||||
queryset = user_queryset | queryset
|
||||
|
@ -175,7 +175,7 @@ class VersionQuerySet(SettingsOverrideObject):
|
|||
_default_class = VersionQuerySetBase
|
||||
|
||||
|
||||
class BuildManager(models.Manager):
|
||||
class BuildQuerySet(models.QuerySet):
|
||||
|
||||
"""
|
||||
Build objects that are privacy aware.
|
||||
|
@ -187,11 +187,11 @@ class BuildManager(models.Manager):
|
|||
|
||||
def _add_user_repos(self, queryset, user=None):
|
||||
if user.has_perm('builds.view_version'):
|
||||
return self.get_queryset().all().distinct()
|
||||
return self.all().distinct()
|
||||
if user.is_authenticated():
|
||||
user_queryset = get_objects_for_user(user, 'builds.view_version')
|
||||
pks = [p.pk for p in user_queryset]
|
||||
queryset = self.get_queryset().filter(version__pk__in=pks) | queryset
|
||||
queryset = self.filter(version__pk__in=pks) | queryset
|
||||
return queryset.distinct()
|
||||
|
||||
def public(self, user=None, project=None):
|
||||
|
@ -206,7 +206,7 @@ class BuildManager(models.Manager):
|
|||
return self.public(user)
|
||||
|
||||
|
||||
class RelatedProjectManager(models.Manager):
|
||||
class RelatedProjectQuerySet(models.QuerySet):
|
||||
|
||||
"""
|
||||
A manager for things that relate to Project and need to get their perms from the project.
|
||||
|
@ -220,13 +220,13 @@ class RelatedProjectManager(models.Manager):
|
|||
def _add_user_repos(self, queryset, user=None):
|
||||
# Hack around get_objects_for_user not supporting global perms
|
||||
if user.has_perm('projects.view_project'):
|
||||
return self.get_queryset().all().distinct()
|
||||
return self.all().distinct()
|
||||
if user.is_authenticated():
|
||||
# Add in possible user-specific views
|
||||
project_qs = get_objects_for_user(user, 'projects.view_project')
|
||||
pks = [p.pk for p in project_qs]
|
||||
kwargs = {'%s__pk__in' % self.project_field: pks}
|
||||
queryset = self.get_queryset().filter(**kwargs) | queryset
|
||||
queryset = self.filter(**kwargs) | queryset
|
||||
return queryset.distinct()
|
||||
|
||||
def public(self, user=None, project=None):
|
||||
|
@ -264,17 +264,17 @@ class RelatedProjectManager(models.Manager):
|
|||
return self.public(user)
|
||||
|
||||
|
||||
class ParentRelatedProjectManager(RelatedProjectManager):
|
||||
class ParentRelatedProjectQuerySet(RelatedProjectQuerySet):
|
||||
project_field = 'parent'
|
||||
use_for_related_fields = True
|
||||
|
||||
|
||||
class ChildRelatedProjectManager(RelatedProjectManager):
|
||||
class ChildRelatedProjectQuerySet(RelatedProjectQuerySet):
|
||||
project_field = 'child'
|
||||
use_for_related_fields = True
|
||||
|
||||
|
||||
class RelatedBuildManager(models.Manager):
|
||||
class RelatedBuildQuerySet(models.QuerySet):
|
||||
|
||||
"""For models with association to a project through :py:class:`Build`"""
|
||||
|
||||
|
@ -282,11 +282,11 @@ class RelatedBuildManager(models.Manager):
|
|||
|
||||
def _add_user_repos(self, queryset, user=None):
|
||||
if user.has_perm('builds.view_version'):
|
||||
return self.get_queryset().all().distinct()
|
||||
return self.all().distinct()
|
||||
if user.is_authenticated():
|
||||
user_queryset = get_objects_for_user(user, 'builds.view_version')
|
||||
pks = [p.pk for p in user_queryset]
|
||||
queryset = self.get_queryset().filter(
|
||||
queryset = self.filter(
|
||||
build__version__pk__in=pks) | queryset
|
||||
return queryset.distinct()
|
||||
|
||||
|
@ -302,7 +302,7 @@ class RelatedBuildManager(models.Manager):
|
|||
return self.public(user)
|
||||
|
||||
|
||||
class RelatedUserManager(models.Manager):
|
||||
class RelatedUserQuerySet(models.QuerySet):
|
||||
|
||||
"""For models with relations through :py:class:`User`"""
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ from readthedocs.privacy import backend
|
|||
from readthedocs.privacy.backends import syncers
|
||||
|
||||
|
||||
class ProjectManager(SettingsOverrideObject):
|
||||
_default_class = backend.ProjectManager
|
||||
class ProjectQuerySet(SettingsOverrideObject):
|
||||
_default_class = backend.ProjectQuerySet
|
||||
_override_setting = 'PROJECT_MANAGER'
|
||||
|
||||
|
||||
|
@ -24,28 +24,28 @@ class VersionManager(SettingsOverrideObject):
|
|||
_override_setting = 'VERSION_MANAGER'
|
||||
|
||||
|
||||
class BuildManager(SettingsOverrideObject):
|
||||
_default_class = backend.BuildManager
|
||||
class BuildQuerySet(SettingsOverrideObject):
|
||||
_default_class = backend.BuildQuerySet
|
||||
_override_setting = 'BUILD_MANAGER'
|
||||
|
||||
|
||||
class RelatedProjectManager(SettingsOverrideObject):
|
||||
_default_class = backend.RelatedProjectManager
|
||||
class RelatedProjectQuerySet(SettingsOverrideObject):
|
||||
_default_class = backend.RelatedProjectQuerySet
|
||||
_override_setting = 'RELATED_PROJECT_MANAGER'
|
||||
|
||||
|
||||
class RelatedBuildManager(SettingsOverrideObject):
|
||||
_default_class = backend.RelatedBuildManager
|
||||
class RelatedBuildQuerySet(SettingsOverrideObject):
|
||||
_default_class = backend.RelatedBuildQuerySet
|
||||
_override_setting = 'RELATED_BUILD_MANAGER'
|
||||
|
||||
|
||||
class RelatedUserManager(SettingsOverrideObject):
|
||||
_default_class = backend.RelatedUserManager
|
||||
class RelatedUserQuerySet(SettingsOverrideObject):
|
||||
_default_class = backend.RelatedUserQuerySet
|
||||
_override_setting = 'RELATED_USER_MANAGER'
|
||||
|
||||
|
||||
class ChildRelatedProjectManager(SettingsOverrideObject):
|
||||
_default_class = backend.ChildRelatedProjectManager
|
||||
class ChildRelatedProjectQuerySet(SettingsOverrideObject):
|
||||
_default_class = backend.ChildRelatedProjectQuerySet
|
||||
_override_setting = 'CHILD_RELATED_PROJECT_MANAGER'
|
||||
|
||||
|
||||
|
|
|
@ -18,8 +18,8 @@ from readthedocs.api.client import api
|
|||
from readthedocs.core.utils import broadcast, slugify
|
||||
from readthedocs.restapi.client import api as apiv2
|
||||
from readthedocs.builds.constants import LATEST, LATEST_VERBOSE_NAME, STABLE
|
||||
from readthedocs.privacy.loader import (RelatedProjectManager, ProjectManager,
|
||||
ChildRelatedProjectManager)
|
||||
from readthedocs.privacy.loader import (RelatedProjectQuerySet, ProjectQuerySet,
|
||||
ChildRelatedProjectQuerySet)
|
||||
from readthedocs.projects import constants
|
||||
from readthedocs.projects.exceptions import ProjectImportError
|
||||
from readthedocs.projects.templatetags.projects_tags import sort_version_aware
|
||||
|
@ -56,7 +56,7 @@ class ProjectRelationship(models.Model):
|
|||
related_name='superprojects')
|
||||
alias = models.CharField(_('Alias'), max_length=255, null=True, blank=True)
|
||||
|
||||
objects = ChildRelatedProjectManager()
|
||||
objects = ChildRelatedProjectQuerySet.as_manager()
|
||||
|
||||
def __unicode__(self):
|
||||
return "%s -> %s" % (self.parent, self.child)
|
||||
|
@ -275,7 +275,7 @@ class Project(models.Model):
|
|||
)
|
||||
|
||||
tags = TaggableManager(blank=True)
|
||||
objects = ProjectManager()
|
||||
objects = ProjectQuerySet.as_manager()
|
||||
all_objects = models.Manager()
|
||||
|
||||
class Meta:
|
||||
|
@ -854,7 +854,7 @@ class ImportedFile(models.Model):
|
|||
class Notification(models.Model):
|
||||
project = models.ForeignKey(Project,
|
||||
related_name='%(class)s_notifications')
|
||||
objects = RelatedProjectManager()
|
||||
objects = RelatedProjectQuerySet.as_manager()
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
@ -899,7 +899,7 @@ class Domain(models.Model):
|
|||
)
|
||||
count = models.IntegerField(default=0, help_text=_('Number of times this domain has been hit.'))
|
||||
|
||||
objects = RelatedProjectManager()
|
||||
objects = RelatedProjectQuerySet.as_manager()
|
||||
|
||||
class Meta:
|
||||
ordering = ('-canonical', '-machine', 'domain')
|
||||
|
|
Loading…
Reference in New Issue