diff --git a/gracedb/api.py b/gracedb/api.py index ef3c5d0fb42803b958246d20cd37a50a9a21156c..7d81a0832f61540f6ae34e29bcaa1dee4886c227 100644 --- a/gracedb/api.py +++ b/gracedb/api.py @@ -6,14 +6,47 @@ import simplejson from gracedb.models import Event -from piston.handler import BaseHandler - import os -class EventHandler(BaseHandler): - model = Event - allowed_methods = ('GET',) +################################################################## +# Piston + + +################################################################## +# rest_framework +from rest_framework import generics, serializers + +class EventSerializer(serializers.ModelSerializer): + class Meta: + model = Event + +class EventList(generics.ListCreateAPIView): + model = Event + serializer_class = EventSerializer + +class EventDetail(generics.RetrieveUpdateDestroyAPIView): + model = Event + serializer_class = EventSerializer + +def api_root(request): + """the api root""" + return HttpResponse(""" +<html> + <head> + </head> + <body> + O Hai. %s<br/>%s + </body> +</html> +""" % ( + reverse('event-list'), + reverse('event-detail', args=[12]), + )) +#""" % reverse('download', kwargs={"graceid":"G12", "filename":"FLED_THE_FILER"})) +#""" % reverse(download, args=["G12", "FRED_THE_FILE"])) +################################################################## +# Old. Must support this. def download(request, graceid, filename=""): # Do not filename to be None. That messes up later os.path.join filename = filename or "" diff --git a/gracedb/urls_rest.py b/gracedb/urls_rest.py index f640f2d5e8cdd1cb3a3584d54990880deaba83a4..7c19bee4bcb108a9821227cf45f7ecb83ec54af1 100644 --- a/gracedb/urls_rest.py +++ b/gracedb/urls_rest.py @@ -1,13 +1,18 @@ -from django.conf.urls.defaults import * +from django.conf.urls.defaults import patterns, url -from piston.resource import Resource -from gracedb.api import EventHandler - -eventHandler = Resource(EventHandler) +# rest_framework +from gracedb.api import EventList, EventDetail urlpatterns = patterns('gracedb.api', - url (r'^events/[A-Z]?(?P<id>[\w\d]+)$', eventHandler, name="api_event"), + url (r'^$', 'api_root'), + # Piston + + # rest_framework + url (r'^revents/$', EventList.as_view(), name='event-list'), + url (r'^revents/[GEHT](?P<pk>\d+)$', EventDetail.as_view(), name='event-detail'), + + # Legacy url (r'^events/(?P<graceid>[\w\d]+)/files/(?P<filename>.+)?$', 'download', name="download"), url (r'^event/(?P<graceid>[\w\d]+)/files/(?P<filename>.+)?$', 'download', name="download2"), ) diff --git a/settings/default.py b/settings/default.py index 0a03ec5651effefd00ec73332e6de30fd8573b0a..3a93f89bb0d94aea402072336f879d6f80ab6bf1 100644 --- a/settings/default.py +++ b/settings/default.py @@ -152,6 +152,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", + "django.core.context_processors.static", "django.core.context_processors.request", "gracedb.middleware.auth.LigoAuthContext", 'middleware.debug.LigoDebugContext', @@ -183,6 +184,23 @@ INSTALLED_APPS = ( 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', + 'django.contrib.staticfiles', 'gracedb', 'userprofile', + 'rest_framework', ) + +REST_FRAMEWORK = { + 'PAGINATE_BY': 10 +} + + +STATIC_URL = "/gracedb-static/" + +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +# 'django.contrib.staticfiles.finders.DefaultStorageFinder', +) + +STATICFILES_DIRS = ()