Add default query set filtering to public objects.

Also add in signals to search to allow filtering there.
programming-language-support
Eric Holscher 2014-10-30 10:33:09 -07:00
parent f543b35aae
commit ef80f5469c
6 changed files with 20 additions and 9 deletions

View File

@ -59,7 +59,7 @@ class Command(BaseCommand):
record=False,
version_pk=version.pk)
else:
p = Project.objects.get(slug=slug)
p = Project.all_objects.get(slug=slug)
log.info("Building %s" % p)
trigger_build(project=p, force=force)
else:

View File

@ -8,6 +8,9 @@ from projects import constants
class ProjectManager(models.Manager):
def get_query_set(self):
return super(CorporateProjectManager, self).get_query_set().filter(privacy_level='public')
def _filter_queryset(self, user, privacy_level):
# Avoid circular import
from projects.models import Project

View File

@ -30,7 +30,6 @@ class ProjectAdmin(GuardedModelAdmin):
inlines = [ProjectRelationshipInline, RedirectInline, VersionInline]
raw_id_fields = ('users', 'main_language_project')
class ImportedFileAdmin(admin.ModelAdmin):
list_display = ('path', 'name', 'version')
list_filter = ('project',)

View File

@ -202,6 +202,7 @@ class Project(models.Model):
tags = TaggableManager(blank=True)
objects = ProjectManager()
all_objects = models.Manager()
class Meta:
ordering = ('slug',)

View File

@ -1,10 +1,10 @@
from .indexes import ProjectIndex, PageIndex
from elasticsearch import Elasticsearch, exceptions
from elasticsearch.helpers import bulk_index
from django.conf import settings
from search.indexes import ProjectIndex, PageIndex
# Hack around django requiring a specific import path for signals >:x
try:
from readthedocs.search.signals import before_project_search, before_file_search
except:
from search.signals import before_file_search
def search_project(query, language):
@ -35,7 +35,9 @@ def search_project(query, language):
if language:
body['facets']['language']['facet_filter'] = {"term": {"lang": language}}
body['filter'] = {"term": {"lang": language}}
body['filter'] = {"term": {"lang": language}}
before_project_search.send(sender=ProjectIndex, body=body)
return ProjectIndex().search(body)
@ -95,5 +97,7 @@ def search_file(query, project=None, version='latest', taxonomy=None):
body['facets']['version']['facet_filter'] = final_filter
body['facets']['taxonomy']['facet_filter'] = final_filter
before_file_search.send(sender=PageIndex, body=body)
results = PageIndex().search(body, **kwargs)
return results

View File

@ -0,0 +1,4 @@
import django.dispatch
before_project_search = django.dispatch.Signal(providing_args=["body"])
before_file_search = django.dispatch.Signal(providing_args=["body"])