Change the way API endpoints are registered

This commit is contained in:
Roberto Rosario
2014-07-08 17:11:55 -04:00
parent 85255207cb
commit 0d0f7be532
4 changed files with 27 additions and 10 deletions

View File

@@ -1,5 +1,7 @@
from __future__ import absolute_import
from django.conf.urls import include, patterns, url
class EndPoint(object):
_registry = {}
@@ -28,3 +30,11 @@ class EndPoint(object):
'urlpattern': urlpattern,
}
)
def register_urls(self, urlpatterns):
from .urls import version_0_endpoints_urlpatterns
endpoint_urls = patterns('',
url(r'^%s/' % self.name, include(urlpatterns)),
)
version_0_endpoints_urlpatterns += endpoint_urls

View File

@@ -2,7 +2,7 @@ from __future__ import absolute_import
from django.conf.urls import include, patterns, url
from .classes import EndPoint
#from .classes import EndPoint
from .views import APIBase, Version_0, EndPointView
version_0_endpoints_urlpatterns = patterns('',
@@ -10,6 +10,7 @@ version_0_endpoints_urlpatterns = patterns('',
url(r'^(?P<endpoint_name>\w+)$', EndPointView.as_view(), name='api-version-0-endpoint'),
)
"""
for endpoint in EndPoint.get_all():
endpoint_urlpatterns = patterns('')
@@ -17,6 +18,7 @@ for endpoint in EndPoint.get_all():
endpoint_urlpatterns += patterns('', service['urlpattern'])
version_0_endpoints_urlpatterns += patterns('', url(r'^%s/' % endpoint.name, include(endpoint_urlpatterns)))
"""
urlpatterns = patterns('',
url(r'^$', APIBase.as_view(), name='api-root'),

View File

@@ -6,7 +6,10 @@ from common.utils import encapsulate
from documents.models import Document
from navigation.api import register_links, register_model_list_columns
from project_setup.api import register_setup
from rest_api.classes import EndPoint
from .api import (APIStagingSourceListView, APIStagingSourceView,
APIStagingSourceFileView, APIStagingSourceFileImageView)
from .classes import StagingFile
from .links import (document_create_multiple, document_create_siblings,
staging_file_delete, setup_sources, setup_web_form_list,
@@ -17,6 +20,7 @@ from .links import (document_create_multiple, document_create_siblings,
upload_version)
from .models import (WebForm, StagingFolder, SourceTransformation,
WatchFolder)
from .urls import api_urls
from .widgets import staging_file_thumbnail
register_links([StagingFile], [staging_file_delete])
@@ -53,3 +57,6 @@ register_setup(setup_sources)
register_links([Document, 'document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_interactive', 'staging_file_delete'], [document_create_multiple], menu_name='secondary_menu')
register_links(Document, [document_create_siblings])
endpoint = EndPoint('sources')
endpoint.register_urls(api_urls)

View File

@@ -37,13 +37,11 @@ urlpatterns = patterns('sources.views',
url(r'^create/from/local/multiple/$', DocumentCreateWizard.as_view(), name='document_create_multiple'),
url(r'^(?P<document_id>\d+)/create/siblings/$', 'document_create_siblings', (), 'document_create_siblings'),
#version_0_api_services = [
url(r'^api/staging_folders/file/(?P<staging_folder_pk>[0-9]+)/(?P<filename>.+)/image/$', APIStagingSourceFileImageView.as_view(), name='stagingfolderfile-image-view'),
url(r'^api/staging_folders/file/(?P<staging_folder_pk>[0-9]+)/(?P<filename>.+)/$', APIStagingSourceFileView.as_view(), name='stagingfolderfile-detail'),
url(r'^api/staging_folders/$', APIStagingSourceListView.as_view(), name='stagingfolder-list'),
url(r'^api/staging_folders/(?P<pk>[0-9]+)/$', APIStagingSourceView.as_view(), name='stagingfolder-detail')
#]
)
api_urls = patterns('',
url(r'^staging_folders/file/(?P<staging_folder_pk>[0-9]+)/(?P<filename>.+)/image/$', APIStagingSourceFileImageView.as_view(), name='stagingfolderfile-image-view'),
url(r'^staging_folders/file/(?P<staging_folder_pk>[0-9]+)/(?P<filename>.+)/$', APIStagingSourceFileView.as_view(), name='stagingfolderfile-detail'),
url(r'^staging_folders/$', APIStagingSourceListView.as_view(), name='stagingfolder-list'),
url(r'^staging_folders/(?P<pk>[0-9]+)/$', APIStagingSourceView.as_view(), name='stagingfolder-detail')
)