Add event type list api view.

This commit is contained in:
Roberto Rosario
2017-01-28 22:56:22 -04:00
parent 3a13027be0
commit 562a9dea70
6 changed files with 60 additions and 6 deletions

View 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)

View File

@@ -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.

View File

@@ -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')

View 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()

View 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)

View File

@@ -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'),
]