Minor refactoring and cleanup
parent
6d5c9043f9
commit
0f54bac5a9
|
@ -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()
|
||||
|
||||
|
||||
|
|
|
@ -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'),
|
||||
)
|
||||
|
||||
|
|
|
@ -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 = """
|
|||
</span>
|
||||
<div class="rst-other-versions">
|
||||
{% endif %}
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>Versions</dt>
|
||||
{% for version in versions %}
|
||||
|
@ -189,6 +190,7 @@ TEMPLATE = """
|
|||
</div>
|
||||
"""
|
||||
|
||||
|
||||
@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))
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue