Common: Improve API view and tests
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -9,7 +9,7 @@ from .classes import Template
|
||||
from .serializers import ContentTypeSerializer, TemplateSerializer
|
||||
|
||||
|
||||
class APIContentTypeViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
class ContentTypeAPIViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
"""
|
||||
list:
|
||||
Return a list of all the available content types.
|
||||
@@ -17,13 +17,12 @@ class APIContentTypeViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
retrieve:
|
||||
Return the given content type details.
|
||||
"""
|
||||
lookup_field = 'pk'
|
||||
lookup_url_kwarg = 'content_type_id'
|
||||
queryset = ContentType.objects.order_by('app_label', 'model')
|
||||
serializer_class = ContentTypeSerializer
|
||||
|
||||
|
||||
class APITemplateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
class TemplateAPIViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
"""
|
||||
list:
|
||||
Return a list of partial templates.
|
||||
@@ -31,12 +30,12 @@ class APITemplateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
retrieve:
|
||||
Return the given partial template details.
|
||||
"""
|
||||
lookup_url_kwarg = 'name'
|
||||
lookup_url_kwarg = 'template_name'
|
||||
permission_classes = (IsAuthenticated,)
|
||||
serializer_class = TemplateSerializer
|
||||
|
||||
def get_object(self):
|
||||
return Template.get(name=self.kwargs['name']).render(
|
||||
return Template.get(name=self.kwargs['template_name']).render(
|
||||
request=self.request
|
||||
)
|
||||
|
||||
|
||||
@@ -292,7 +292,7 @@ class Template(object):
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse(
|
||||
viewname='rest_api:template-detail', kwargs={'template_pk': self.name}
|
||||
viewname='rest_api:template-detail', kwargs={'template_name': self.name}
|
||||
)
|
||||
|
||||
def render(self, request):
|
||||
|
||||
@@ -13,7 +13,6 @@ from django.views.generic.detail import SingleObjectMixin
|
||||
from mayan.apps.acls.models import AccessControlList
|
||||
from mayan.apps.permissions import Permission
|
||||
|
||||
from .exceptions import ActionError
|
||||
from .forms import DynamicForm
|
||||
from .literals import (
|
||||
PK_LIST_SEPARATOR, TEXT_CHOICE_ITEMS, TEXT_CHOICE_LIST,
|
||||
|
||||
@@ -9,8 +9,8 @@ class ContentTypeSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
extra_kwargs = {
|
||||
'url': {
|
||||
'lookup_field': 'pk', 'lookup_url_kwarg': 'content_type_id',
|
||||
'view_name': 'rest_api:content_type-detail'
|
||||
'lookup_url_kwarg': 'content_type_id',
|
||||
'view_name': 'rest_api:content-type-detail'
|
||||
}
|
||||
}
|
||||
fields = ('app_label', 'id', 'model', 'url')
|
||||
@@ -22,6 +22,6 @@ class TemplateSerializer(serializers.Serializer):
|
||||
name = serializers.CharField(read_only=True)
|
||||
html = serializers.CharField(read_only=True)
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
lookup_field='name', lookup_url_kwarg='name',
|
||||
lookup_field='name', lookup_url_kwarg='template_name',
|
||||
view_name='rest_api:template-detail'
|
||||
)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.test import override_settings
|
||||
from django.urls import reverse
|
||||
|
||||
from mayan.apps.rest_api.tests import BaseAPITestCase
|
||||
|
||||
@@ -11,23 +10,40 @@ TEST_TEMPLATE_RESULT = '<div'
|
||||
|
||||
|
||||
class CommonAPITestCase(BaseAPITestCase):
|
||||
auto_login_user = False
|
||||
|
||||
def test_content_type_list_view(self):
|
||||
response = self.client.get(reverse(viewname='rest_api:content-type-list'))
|
||||
response = self.get(viewname='rest_api:content-type-list')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@override_settings(LANGUAGE_CODE='de')
|
||||
def _request_template_detail_view(self):
|
||||
return self.get(path=self.test_template.get_absolute_url())
|
||||
|
||||
def test_template_detail_view(self):
|
||||
self.login_user()
|
||||
template_main_menu = Template.get(name='menu_main')
|
||||
response = self.client.get(template_main_menu.get_absolute_url())
|
||||
|
||||
self.test_template = Template.get(name='menu_main')
|
||||
|
||||
response = self._request_template_detail_view()
|
||||
self.assertContains(
|
||||
response=response, text=TEST_TEMPLATE_RESULT, status_code=200
|
||||
)
|
||||
|
||||
@override_settings(LANGUAGE_CODE='de')
|
||||
def test_template_detail_german_view(self):
|
||||
self.login_user()
|
||||
|
||||
self.test_template = Template.get(name='menu_main')
|
||||
|
||||
response = self._request_template_detail_view()
|
||||
self.assertContains(
|
||||
response=response, text=TEST_TEMPLATE_RESULT, status_code=200
|
||||
)
|
||||
|
||||
def test_template_detail_anonymous_view(self):
|
||||
template_main_menu = Template.get(name='menu_main')
|
||||
response = self.client.get(template_main_menu.get_absolute_url())
|
||||
self.test_template = Template.get(name='menu_main')
|
||||
|
||||
response = self._request_template_detail_view()
|
||||
self.assertNotContains(
|
||||
response=response, text=TEST_TEMPLATE_RESULT, status_code=403
|
||||
)
|
||||
|
||||
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
|
||||
from django.conf.urls import url
|
||||
from django.views.i18n import javascript_catalog, set_language
|
||||
|
||||
from .api_views import APIContentTypeViewSet, APITemplateViewSet
|
||||
from .api_views import ContentTypeAPIViewSet, TemplateAPIViewSet
|
||||
from .views import (
|
||||
AboutView, CheckVersionView, CurrentUserLocaleProfileDetailsView,
|
||||
CurrentUserLocaleProfileEditView, FaviconRedirectView, HomeView,
|
||||
@@ -67,11 +67,11 @@ urlpatterns += [
|
||||
|
||||
api_router_entries = (
|
||||
{
|
||||
'prefix': r'content_types', 'viewset': APIContentTypeViewSet,
|
||||
'basename': 'content_type'
|
||||
'prefix': r'content_types', 'viewset': ContentTypeAPIViewSet,
|
||||
'basename': 'content-type'
|
||||
},
|
||||
{
|
||||
'prefix': r'templates', 'viewset': APITemplateViewSet,
|
||||
'prefix': r'templates', 'viewset': TemplateAPIViewSet,
|
||||
'basename': 'template'
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user