diff --git a/readthedocs/builds/filters.py b/readthedocs/builds/filters.py deleted file mode 100644 index 7a1ceffc4a6..00000000000 --- a/readthedocs/builds/filters.py +++ /dev/null @@ -1,48 +0,0 @@ -"""FilterSets for the builds app.""" - -from django.utils.translation import ugettext_lazy as _ - -import django_filters - -from readthedocs.builds import constants -from readthedocs.builds.models import Build, Version - - -ANY_REPO = ( - ('', _('Any')), -) - -BUILD_TYPES = ANY_REPO + constants.BUILD_TYPES - - -class VersionSlugFilter(django_filters.FilterSet): - - class Meta: - model = Version - fields = { - 'identifier': ['icontains'], - 'slug': ['icontains'], - } - - -class VersionFilter(django_filters.FilterSet): - project = django_filters.CharFilter(name='project__slug') - # Allow filtering on slug= or version= - slug = django_filters.CharFilter(label=_("Name"), name='slug', - lookup_expr='exact') - version = django_filters.CharFilter(label=_("Version"), name='slug', - lookup_expr='exact') - - class Meta: - model = Version - fields = ['project', 'slug', 'version'] - - -class BuildFilter(django_filters.FilterSet): - date = django_filters.DateRangeFilter(label=_("Build Date"), name="date", lookup_expr='range') - type = django_filters.ChoiceFilter(label=_("Build Type"), - choices=BUILD_TYPES) - - class Meta: - model = Build - fields = ['type', 'date', 'success'] diff --git a/readthedocs/builds/views.py b/readthedocs/builds/views.py index e94ae9af7b5..eb712f4a8ae 100644 --- a/readthedocs/builds/views.py +++ b/readthedocs/builds/views.py @@ -9,7 +9,6 @@ from django.core.urlresolvers import reverse from readthedocs.builds.models import Build, Version -from readthedocs.builds.filters import BuildFilter from readthedocs.projects.models import Project from redis import Redis, ConnectionError @@ -37,14 +36,12 @@ class BuildList(BuildBase, ListView): def get_context_data(self, **kwargs): context = super(BuildList, self).get_context_data(**kwargs) - filterset = BuildFilter(self.request.GET, queryset=self.get_queryset()) active_builds = self.get_queryset().exclude(state="finished").values('id') context['project'] = self.project - context['filter'] = filterset context['active_builds'] = active_builds context['versions'] = Version.objects.public(user=self.request.user, project=self.project) - context['build_qs'] = filterset.qs + context['build_qs'] = self.get_queryset() try: redis = Redis.from_url(settings.BROKER_URL) diff --git a/readthedocs/core/urls/__init__.py b/readthedocs/core/urls/__init__.py index c3ef48e2a1d..d4876159924 100644 --- a/readthedocs/core/urls/__init__.py +++ b/readthedocs/core/urls/__init__.py @@ -1,13 +1,9 @@ from django.conf.urls import url -from django_filters import views as django_filters_views - from readthedocs.constants import pattern_opts from readthedocs.core import views from readthedocs.core.views import hooks, serve -from readthedocs.builds.filters import VersionFilter from readthedocs.projects.feeds import LatestProjectsFeed, NewProjectsFeed -from readthedocs.projects.filters import ProjectFilter docs_urls = [ @@ -52,15 +48,6 @@ ] deprecated_urls = [ - url(r'^filter/version/$', - django_filters_views.object_filter, - {'filter_class': VersionFilter, 'template_name': 'filter.html'}, - name='filter_version'), - url(r'^filter/project/$', - django_filters_views.object_filter, - {'filter_class': ProjectFilter, 'template_name': 'filter.html'}, - name='filter_project'), - url(r'^feeds/new/$', NewProjectsFeed(), name="new_feed"), diff --git a/readthedocs/projects/filters.py b/readthedocs/projects/filters.py deleted file mode 100644 index 43b27ae994e..00000000000 --- a/readthedocs/projects/filters.py +++ /dev/null @@ -1,72 +0,0 @@ -"""Project query filters""" - -from django.utils.translation import ugettext_lazy as _ - -import django_filters - -from readthedocs.projects import constants -from readthedocs.projects.models import Project, Domain - -ANY_REPO = ( - ('', _('Any')), -) - -REPO_CHOICES = ANY_REPO + constants.REPO_CHOICES - - -def sort_slug(queryset, query): - """Fuzzy filter for slug fields - - Returns sorted queryset where slug approximates ``query`` - """ - queryset = queryset.filter(slug__icontains=query) - ret = [] - ret.extend([q.pk for q in queryset - if q.slug == query]) - ret.extend([q.pk for q in queryset - if q.slug.startswith(query) and q.pk not in ret]) - ret.extend([q.pk for q in queryset - if q.slug.endswith(query) and q.pk not in ret]) - ret.extend([q.pk for q in queryset - if q.pk not in ret]) - - # Create a QS preserving ordering - clauses = ' '.join(['WHEN projects_project.id=%s THEN %s' % (pk, i) - for i, pk in enumerate(ret)]) - ordering = 'CASE %s END' % clauses - ret_queryset = Project.objects.filter(pk__in=ret).extra( - select={'ordering': ordering}, order_by=('ordering',)) - return ret_queryset - - -class ProjectFilter(django_filters.FilterSet): - - """Project filter for filter views""" - - name = django_filters.CharFilter(label=_("Name"), name='name', - lookup_expr='icontains') - slug = django_filters.CharFilter(label=_("Slug"), name='slug', - lookup_expr='icontains') - pub_date = django_filters.DateRangeFilter(label=_("Created Date"), - name="pub_date") - repo = django_filters.CharFilter(label=_("Repository URL"), name='repo', - lookup_expr='icontains') - repo_type = django_filters.ChoiceFilter( - label=_("Repository Type"), - name='repo', - lookup_expr='icontains', - choices=REPO_CHOICES, - ) - - class Meta: - model = Project - fields = ['name', 'slug', 'pub_date', 'repo', 'repo_type'] - - -class DomainFilter(django_filters.FilterSet): - project = django_filters.CharFilter(label=_("Project"), name='project__slug', - lookup_expr='exact') - - class Meta: - model = Domain - fields = ['domain', 'project', 'canonical'] diff --git a/readthedocs/projects/views/private.py b/readthedocs/projects/views/private.py index 3d538af0e44..0d7303b10a4 100644 --- a/readthedocs/projects/views/private.py +++ b/readthedocs/projects/views/private.py @@ -22,7 +22,6 @@ from readthedocs.bookmarks.models import Bookmark from readthedocs.builds.models import Version from readthedocs.builds.forms import AliasForm, VersionForm -from readthedocs.builds.filters import VersionFilter from readthedocs.builds.models import VersionAlias from readthedocs.core.utils import trigger_build, broadcast from readthedocs.core.mixins import ListViewWithForm @@ -35,7 +34,7 @@ ProjectAdvertisingForm) from readthedocs.projects.models import Project, EmailHook, WebHook, Domain from readthedocs.projects.views.base import ProjectAdminMixin, ProjectSpamMixin -from readthedocs.projects import constants, tasks +from readthedocs.projects import tasks from readthedocs.oauth.services import registry from readthedocs.oauth.utils import attach_webhook, update_webhook @@ -61,9 +60,6 @@ def get_queryset(self): def get_context_data(self, **kwargs): context = super(ProjectDashboard, self).get_context_data(**kwargs) - version_filter = VersionFilter(constants.IMPORTANT_VERSION_FILTERS, - queryset=self.get_queryset()) - context['filter'] = version_filter bookmarks = Bookmark.objects.filter(user=self.request.user) diff --git a/readthedocs/projects/views/public.py b/readthedocs/projects/views/public.py index 99453452a64..469547cd91e 100644 --- a/readthedocs/projects/views/public.py +++ b/readthedocs/projects/views/public.py @@ -23,7 +23,6 @@ from .base import ProjectOnboardMixin from readthedocs.builds.constants import LATEST -from readthedocs.builds.filters import VersionSlugFilter from readthedocs.builds.models import Version from readthedocs.projects.models import Project, ImportedFile from readthedocs.search.indexes import PageIndex @@ -82,8 +81,6 @@ def get_context_data(self, **kwargs): project = self.get_object() context['versions'] = Version.objects.public( user=self.request.user, project=project) - context['filter'] = VersionSlugFilter(self.request.GET, - queryset=context['versions']) protocol = 'http' if self.request.is_secure(): @@ -234,11 +231,10 @@ def version_filter_autocomplete(request, project_slug): queryset = Project.objects.public(request.user) project = get_object_or_404(queryset, slug=project_slug) versions = Version.objects.public(request.user) - version_filter = VersionSlugFilter(request.GET, queryset=versions) resp_format = request.GET.get('format', 'json') if resp_format == 'json': - names = version_filter.qs.values_list('slug', flat=True) + names = versions.values_list('slug', flat=True) json_response = json.dumps(list(names)) return HttpResponse(json_response, content_type='text/javascript') elif resp_format == 'html': @@ -247,7 +243,6 @@ def version_filter_autocomplete(request, project_slug): { 'project': project, 'versions': versions, - 'filter': version_filter, }, context_instance=RequestContext(request), ) @@ -359,8 +354,6 @@ def project_versions(request, project_slug): versions = Version.objects.public(user=request.user, project=project, only_active=False) active_versions = versions.filter(active=True) inactive_versions = versions.filter(active=False) - inactive_filter = VersionSlugFilter(request.GET, queryset=inactive_versions) - active_filter = VersionSlugFilter(request.GET, queryset=active_versions) # If there's a wiped query string, check the string against the versions # list and display a success message. Deleting directories doesn't know how @@ -373,8 +366,8 @@ def project_versions(request, project_slug): return render_to_response( 'projects/project_version_list.html', { - 'inactive_filter': inactive_filter, - 'active_filter': active_filter, + 'inactive_versions': inactive_versions, + 'active_versions': active_versions, 'project': project, }, context_instance=RequestContext(request) diff --git a/readthedocs/restapi/views/model_views.py b/readthedocs/restapi/views/model_views.py index 8f8b89845c0..00410ea34eb 100644 --- a/readthedocs/restapi/views/model_views.py +++ b/readthedocs/restapi/views/model_views.py @@ -8,13 +8,11 @@ from readthedocs.builds.constants import BRANCH from readthedocs.builds.constants import TAG -from readthedocs.builds.filters import VersionFilter from readthedocs.builds.models import Build, BuildCommandResult, Version from readthedocs.core.utils import trigger_build from readthedocs.oauth.services import GitHubService, registry from readthedocs.oauth.models import RemoteOrganization, RemoteRepository from readthedocs.builds.constants import STABLE -from readthedocs.projects.filters import ProjectFilter, DomainFilter from readthedocs.projects.models import Project, EmailHook, Domain from readthedocs.projects.version_handling import determine_stable_version @@ -34,7 +32,6 @@ class ProjectViewSet(viewsets.ModelViewSet): permission_classes = [APIPermission] renderer_classes = (JSONRenderer,) serializer_class = ProjectSerializer - filter_class = ProjectFilter model = Project paginate_by = 100 paginate_by_param = 'page_size' @@ -158,7 +155,6 @@ class VersionViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = [permissions.IsAuthenticatedOrReadOnly] renderer_classes = (JSONRenderer,) serializer_class = VersionSerializer - filter_class = VersionFilter model = Version def get_queryset(self): @@ -207,7 +203,6 @@ class DomainViewSet(viewsets.ModelViewSet): permission_classes = [APIRestrictedPermission] renderer_classes = (JSONRenderer,) serializer_class = DomainSerializer - filter_class = DomainFilter model = Domain def get_queryset(self): diff --git a/readthedocs/settings/base.py b/readthedocs/settings/base.py index c7106da1066..ecc9ec7261a 100644 --- a/readthedocs/settings/base.py +++ b/readthedocs/settings/base.py @@ -326,7 +326,7 @@ def INSTALLED_APPS(self): # noqa 'field_name_limit': 50, } REST_FRAMEWORK = { - 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), + # 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': 10, } diff --git a/readthedocs/templates/builds/build_list.html b/readthedocs/templates/builds/build_list.html index 9c1173fb9dd..3b7797f9a44 100644 --- a/readthedocs/templates/builds/build_list.html +++ b/readthedocs/templates/builds/build_list.html @@ -15,21 +15,6 @@ {% block content %} -{% comment %} - -