Add event type list api view.
This commit is contained in:
15
mayan/apps/events/api_views.py
Normal file
15
mayan/apps/events/api_views.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from rest_framework import generics
|
||||
|
||||
from .classes import Event
|
||||
from .serializers import EventSerializer
|
||||
|
||||
|
||||
class APIEventTypeList(generics.ListAPIView):
|
||||
"""
|
||||
Returns a list of all the available event types.
|
||||
"""
|
||||
|
||||
serializer_class = EventSerializer
|
||||
queryset = sorted(Event.all(), key=lambda event: event.name)
|
||||
@@ -6,8 +6,8 @@ from actstream.models import Action
|
||||
|
||||
from common import MayanAppConfig, menu_tools
|
||||
from common.classes import Package
|
||||
|
||||
from navigation import SourceColumn
|
||||
from rest_api.classes import APIEndPoint
|
||||
|
||||
from .links import link_events_list
|
||||
from .widgets import event_type_link
|
||||
@@ -21,6 +21,8 @@ class EventsApp(MayanAppConfig):
|
||||
def ready(self):
|
||||
super(EventsApp, self).ready()
|
||||
|
||||
APIEndPoint(app=self, version_string='1')
|
||||
|
||||
Package(label='django-activity-stream', license_text='''
|
||||
Copyright (c) 2010-2015, Justin Quick
|
||||
All rights reserved.
|
||||
|
||||
@@ -7,20 +7,33 @@ from actstream import action
|
||||
|
||||
|
||||
class Event(object):
|
||||
_labels = {}
|
||||
_registry = {}
|
||||
|
||||
@classmethod
|
||||
def all(cls):
|
||||
return cls._registry.values()
|
||||
|
||||
@classmethod
|
||||
def get(cls, name):
|
||||
try:
|
||||
return cls._registry[name]
|
||||
except KeyError:
|
||||
raise KeyError(
|
||||
_('Unknown or obsolete event type: {0}'.format(name))
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_label(cls, name):
|
||||
try:
|
||||
return cls._labels[name]
|
||||
except KeyError:
|
||||
return _('Unknown or obsolete event type: {0}'.format(name))
|
||||
return cls.get(name=name).label
|
||||
except KeyError as exception:
|
||||
return unicode(exception)
|
||||
|
||||
def __init__(self, name, label):
|
||||
self.name = name
|
||||
self.label = label
|
||||
self.event_type = None
|
||||
self.__class__._labels[name] = label
|
||||
self.__class__._registry[name] = self
|
||||
|
||||
def commit(self, actor=None, action_object=None, target=None):
|
||||
model = apps.get_model('events', 'EventType')
|
||||
|
||||
8
mayan/apps/events/serializers.py
Normal file
8
mayan/apps/events/serializers.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class EventSerializer(serializers.Serializer):
|
||||
label = serializers.CharField()
|
||||
name = serializers.CharField()
|
||||
11
mayan/apps/events/tests/test_api.py
Normal file
11
mayan/apps/events/tests/test_api.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from rest_framework.test import APITestCase
|
||||
|
||||
|
||||
class EventAPITestCase(APITestCase):
|
||||
def test_evet_type_list_view(self):
|
||||
response = self.client.get(reverse('rest_api:event-type-list'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -2,6 +2,7 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .api_views import APIEventTypeList
|
||||
from .views import EventListView, ObjectEventListView, VerbEventListView
|
||||
|
||||
urlpatterns = patterns(
|
||||
@@ -16,3 +17,7 @@ urlpatterns = patterns(
|
||||
name='events_by_verb'
|
||||
),
|
||||
)
|
||||
|
||||
api_urls = [
|
||||
url(r'^$', APIEventTypeList.as_view(), name='event-type-list'),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user