From 0f54bac5a92185ad82a8a150da8c1c4d6e3bf6a3 Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Sat, 2 Nov 2013 12:43:10 -0700 Subject: [PATCH] Minor refactoring and cleanup --- docs/rtfd.rst | 6 ++--- readthedocs/restapi/urls.py | 3 +-- readthedocs/restapi/views.py | 41 ++++++++++++++++++++--------------- readthedocs/search/indexes.py | 4 ++-- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/docs/rtfd.rst b/docs/rtfd.rst index 4ab0511e0..e5fd425fc 100644 --- a/docs/rtfd.rst +++ b/docs/rtfd.rst @@ -8,7 +8,7 @@ Elastic Search Setup :: - from search.indexes import Index, Page, Project + from search.indexes import Index, PageIndex, ProjectIndex # Create the index. index = Index() @@ -16,9 +16,9 @@ Elastic Search Setup index.create_index(index_name) index.update_aliases(index_name) # Update mapping - proj = Project() + proj = ProjectIndex() proj.put_mapping() - page = Page() + page = PageIndex() page.put_mapping() diff --git a/readthedocs/restapi/urls.py b/readthedocs/restapi/urls.py index 56dcb8053..4377abe0e 100644 --- a/readthedocs/restapi/urls.py +++ b/readthedocs/restapi/urls.py @@ -10,10 +10,9 @@ router.register(r'project', ProjectViewSet) router.register(r'notification', NotificationViewSet) urlpatterns = patterns( - '', + '', url(r'footer_html/', 'restapi.views.footer_html', name='footer_html'), url(r'quick_search/', 'restapi.views.quick_search', name='quick_search'), url(r'index_search/', 'restapi.views.index_search', name='index_search'), url(r'search/', 'restapi.views.search', name='search'), ) - diff --git a/readthedocs/restapi/views.py b/readthedocs/restapi/views.py index 76df816e8..0b4e2e496 100644 --- a/readthedocs/restapi/views.py +++ b/readthedocs/restapi/views.py @@ -11,10 +11,10 @@ from rest_framework.renderers import JSONPRenderer, JSONRenderer, BrowsableAPIRe from rest_framework.response import Response import requests -from betterversion.better import version_windows, BetterVersion +from betterversion.better import version_windows, BetterVersion from builds.models import Version from djangome import views as djangome -from search.indexes import Page as PageIndex, Project as ProjectIndex +from search.indexes import PageIndex, ProjectIndex from projects.models import Project, EmailHook from .serializers import ProjectSerializer @@ -24,6 +24,7 @@ import utils as api_utils log = logging.getLogger(__name__) + class ProjectViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = [permissions.IsAuthenticatedOrReadOnly] renderer_classes = (JSONRenderer, JSONPRenderer, BrowsableAPIRenderer) @@ -45,9 +46,9 @@ class ProjectViewSet(viewsets.ReadOnlyModelViewSet): # Probably a branch pass active_versions = version_windows( - versions, - major=project.num_major, - minor=project.num_minor, + versions, + major=project.num_major, + minor=project.num_minor, point=project.num_point, flat=True, ) @@ -67,7 +68,6 @@ class ProjectViewSet(viewsets.ReadOnlyModelViewSet): 'translations': ProjectSerializer(queryset, many=True).data }) - @decorators.action(permission_classes=[permissions.IsAdminUser]) def sync_versions(self, request, **kwargs): """ @@ -89,7 +89,7 @@ class ProjectViewSet(viewsets.ReadOnlyModelViewSet): return Response({ 'added_versions': added_versions, 'deleted_versions': deleted_versions, - }) + }) except Exception, e: log.exception("Sync Versions Error: %s" % e.message) return Response({'error': e.message}, status=status.HTTP_400_BAD_REQUEST) @@ -110,6 +110,7 @@ class NotificationViewSet(viewsets.ReadOnlyModelViewSet): return self.model.objects.all() return self.model.objects.filter(project__users__in=[user.pk]) + class VersionViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = [permissions.IsAuthenticatedOrReadOnly] renderer_classes = (JSONRenderer, BrowsableAPIRenderer) @@ -135,7 +136,7 @@ TEMPLATE = """
{% endif %} - +
Versions
{% for version in versions %} @@ -189,6 +190,7 @@ TEMPLATE = """
""" + @decorators.api_view(['GET']) @decorators.permission_classes((permissions.AllowAny,)) @decorators.renderer_classes((JSONRenderer, JSONPRenderer, BrowsableAPIRenderer)) @@ -216,6 +218,7 @@ def footer_html(request): html = Template(TEMPLATE).render(context) return Response({"html": html}) + @decorators.api_view(['GET']) @decorators.permission_classes((permissions.AllowAny,)) @decorators.renderer_classes((JSONRenderer, JSONPRenderer, BrowsableAPIRenderer)) @@ -232,6 +235,7 @@ def quick_search(request): ret_dict[key] = value return Response({"results": ret_dict}) + @decorators.api_view(['POST']) @decorators.permission_classes((permissions.IsAdminUser,)) @decorators.renderer_classes((JSONRenderer, JSONPRenderer, BrowsableAPIRenderer)) @@ -249,15 +253,15 @@ def index_search(request): project_obj = ProjectIndex() project_obj.index_document({ - 'id': project.pk, - 'name': project.name, - 'slug': project.slug, - 'description': project.description, - 'lang': project.language, - 'author': [user.username for user in project.users.all()], - 'url': project.get_absolute_url(), - '_boost': project_scale, - }) + 'id': project.pk, + 'name': project.name, + 'slug': project.slug, + 'description': project.description, + 'lang': project.language, + 'author': [user.username for user in project.users.all()], + 'url': project.get_absolute_url(), + '_boost': project_scale, + }) index_list = [] for page in page_list: @@ -266,11 +270,12 @@ def index_search(request): page['_boost'] = page_scale + project_scale page['project'] = project.slug page['version'] = version.slug - page['id'] = hashlib.md5('%s-%s-%s' % (project.slug, version.slug, page['path']) ).hexdigest() + page['id'] = hashlib.md5('%s-%s-%s' % (project.slug, version.slug, page['path'])).hexdigest() index_list.append(page) page_obj.bulk_index(index_list, parent=project_pk) return Response({'indexed': True}) + @decorators.api_view(['GET']) @decorators.permission_classes((permissions.AllowAny,)) @decorators.renderer_classes((JSONRenderer, JSONPRenderer, BrowsableAPIRenderer)) diff --git a/readthedocs/search/indexes.py b/readthedocs/search/indexes.py index 71cad8d03..9c72d178a 100644 --- a/readthedocs/search/indexes.py +++ b/readthedocs/search/indexes.py @@ -186,7 +186,7 @@ class Index(object): body=body, **kwargs) -class Project(Index): +class ProjectIndex(Index): _type = 'project' @@ -225,7 +225,7 @@ class Project(Index): return doc -class Page(Index): +class PageIndex(Index): _type = 'page' _parent = 'project'