Commit ce97523e authored by Michal Čihař's avatar Michal Čihař

Exclude ACL protected projects from sitemaps

parent 198c51e4
......@@ -102,10 +102,24 @@ class ProjectManager(models.Manager):
project_ids = [
project.id for project in projects if project.has_acl(user)
]
if projects.count == len(project_ids):
if projects.count() == len(project_ids):
return projects
return self.filter(id__in=project_ids)
class SubProjectManager(models.Manager):
def all_acl(self, user):
'''
Returns list of projects user is allowed to access.
'''
from weblate.trans.models import Project
all_projects = Project.objects.all()
projects = Project.objects.all_acl(user)
if projects.count() == all_projects.count():
return self.all()
return self.filter(project__in=projects)
class TranslationManager(models.Manager):
def update_from_blob(self, subproject, code, path, force=False, request=None):
'''
......@@ -127,6 +141,17 @@ class TranslationManager(models.Manager):
def enabled(self):
return self.filter(enabled=True)
def all_acl(self, user):
'''
Returns list of projects user is allowed to access.
'''
from weblate.trans.models import Project
all_projects = Project.objects.all()
projects = Project.objects.all_acl(user)
if projects.count() == all_projects.count():
return self.all()
return self.filter(subproject__project__in=projects)
class UnitManager(models.Manager):
def update_from_unit(self, translation, unit, pos, template=None):
......
......@@ -54,7 +54,7 @@ from weblate.lang.models import Language
from weblate.trans.checks import CHECKS
from weblate.trans.managers import (
TranslationManager, UnitManager, DictionaryManager, ChangeManager,
ProjectManager,
ProjectManager, SubProjectManager,
)
from weblate.trans.filelock import FileLock, FileLockException
from util import (
......@@ -615,6 +615,8 @@ class SubProject(models.Model):
help_text=ugettext_lazy('Whether translation updates in other subproject will cause automatic translation in this project')
)
objects = SubProjectManager()
class Meta:
ordering = ['project__name', 'name']
permissions = (
......
......@@ -42,17 +42,17 @@ js_info_dict = {
}
project_dict = {
'queryset': Project.objects.all(),
'queryset': Project.objects.all_acl(None),
'date_field': 'get_last_change',
}
subproject_dict = {
'queryset': SubProject.objects.all(),
'queryset': SubProject.objects.all_acl(None),
'date_field': 'get_last_change',
}
translation_dict = {
'queryset': Translation.objects.all(),
'queryset': Translation.objects.all_acl(None),
'date_field': 'get_last_change',
}
......@@ -96,7 +96,7 @@ class EngageLangSitemap(Sitemap):
Return list of existing project, langauge tuples.
'''
ret = []
for project in Project.objects.all():
for project in Project.objects.all_acl(None):
for lang in project.get_languages():
ret.append((project, lang))
return ret
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment