Add tag app API endpoints
This commit is contained in:
@@ -2,14 +2,15 @@ from __future__ import absolute_import
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from taggit.managers import TaggableManager
|
||||
from taggit.models import Tag
|
||||
|
||||
from acls.api import class_permissions
|
||||
from common.utils import encapsulate
|
||||
from documents.models import Document
|
||||
from navigation.api import (register_links, register_top_menu,
|
||||
register_model_list_columns, register_multi_item_links)
|
||||
|
||||
from taggit.managers import TaggableManager
|
||||
from taggit.models import Tag
|
||||
from rest_api.classes import APIEndPoint
|
||||
|
||||
from .links import (tag_list, tag_create, tag_attach,
|
||||
tag_document_list, tag_delete, tag_edit, tag_tagged_item_list,
|
||||
@@ -17,6 +18,7 @@ from .links import (tag_list, tag_create, tag_attach,
|
||||
single_document_multiple_tag_remove, multiple_documents_selection_tag_remove)
|
||||
from .permissions import (PERMISSION_TAG_ATTACH, PERMISSION_TAG_REMOVE,
|
||||
PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, PERMISSION_TAG_VIEW)
|
||||
from .urls import api_urls
|
||||
from .widgets import (get_tags_inline_widget_simple, single_tag_widget)
|
||||
|
||||
register_model_list_columns(Tag, [
|
||||
@@ -59,3 +61,7 @@ class_permissions(Tag, [
|
||||
])
|
||||
|
||||
Document.add_to_class('tags', TaggableManager())
|
||||
|
||||
endpoint = APIEndPoint('tags')
|
||||
endpoint.register_urls(api_urls)
|
||||
endpoint.add_endpoint('tag-list', _(u'Returns a list of all the tags.'))
|
||||
|
||||
11
mayan/apps/tags/serializers.py
Normal file
11
mayan/apps/tags/serializers.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from rest_framework import serializers
|
||||
from taggit.models import Tag
|
||||
|
||||
|
||||
class TagSerializer(serializers.HyperlinkedModelSerializer):
|
||||
color = serializers.CharField(source='properties.get.color')
|
||||
|
||||
class Meta:
|
||||
model = Tag
|
||||
@@ -1,5 +1,9 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .views import APITagListView, APITagView
|
||||
|
||||
urlpatterns = patterns('tags.views',
|
||||
url(r'^list/$', 'tag_list', (), 'tag_list'),
|
||||
url(r'^create/$', 'tag_create', (), 'tag_create'),
|
||||
@@ -18,3 +22,8 @@ urlpatterns = patterns('tags.views',
|
||||
|
||||
url(r'^(?P<tag_pk>\d+)/acl/list/$', 'tag_acl_list', (), 'tag_acl_list'),
|
||||
)
|
||||
|
||||
api_urls = patterns('',
|
||||
url(r'^tags/(?P<pk>[0-9]+)/$', APITagView.as_view(), name='tag-detail'),
|
||||
url(r'^tags/$', APITagListView.as_view(), name='tag-list'),
|
||||
)
|
||||
|
||||
@@ -10,6 +10,9 @@ from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from rest_framework import generics
|
||||
from taggit.models import Tag
|
||||
|
||||
from acls.models import AccessEntry
|
||||
from acls.views import acl_list_for
|
||||
from acls.utils import apply_default_acls
|
||||
@@ -17,13 +20,15 @@ from documents.models import Document
|
||||
from documents.views import document_list
|
||||
from documents.permissions import PERMISSION_DOCUMENT_VIEW
|
||||
from permissions.models import Permission
|
||||
from taggit.models import Tag
|
||||
from rest_api.filters import MayanObjectPermissionsFilter
|
||||
from rest_api.permissions import MayanPermission
|
||||
|
||||
from .forms import TagListForm, TagForm
|
||||
from .models import TagProperties
|
||||
from .permissions import (PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH,
|
||||
PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT,
|
||||
PERMISSION_TAG_VIEW)
|
||||
from .serializers import TagSerializer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -370,3 +375,29 @@ def tag_acl_list(request, tag_pk):
|
||||
'object': tag,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
# API views
|
||||
|
||||
|
||||
class APITagView(generics.RetrieveAPIView):
|
||||
"""
|
||||
Details of the selected tag.
|
||||
"""
|
||||
serializer_class = TagSerializer
|
||||
queryset = Tag.objects.all()
|
||||
|
||||
permission_classes = (MayanPermission,)
|
||||
mayan_object_permissions = [PERMISSION_TAG_VIEW]
|
||||
|
||||
|
||||
class APITagListView(generics.ListAPIView):
|
||||
"""
|
||||
Returns a list of all the tags.
|
||||
"""
|
||||
|
||||
serializer_class = TagSerializer
|
||||
queryset = Tag.objects.all()
|
||||
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
mayan_object_permissions = [PERMISSION_TAG_VIEW]
|
||||
|
||||
Reference in New Issue
Block a user