From 0d0f7be5325a2ee6f3d8946cfed1fba96d66c407 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 8 Jul 2014 17:11:55 -0400 Subject: [PATCH] Change the way API endpoints are registered --- mayan/apps/rest_api/classes.py | 10 ++++++++++ mayan/apps/rest_api/urls.py | 4 +++- mayan/apps/sources/__init__.py | 7 +++++++ mayan/apps/sources/urls.py | 16 +++++++--------- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/mayan/apps/rest_api/classes.py b/mayan/apps/rest_api/classes.py index b365f4ced5..45bdada1ca 100644 --- a/mayan/apps/rest_api/classes.py +++ b/mayan/apps/rest_api/classes.py @@ -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 diff --git a/mayan/apps/rest_api/urls.py b/mayan/apps/rest_api/urls.py index b0fd73e91f..f1ce1d0d19 100644 --- a/mayan/apps/rest_api/urls.py +++ b/mayan/apps/rest_api/urls.py @@ -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\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'), diff --git a/mayan/apps/sources/__init__.py b/mayan/apps/sources/__init__.py index f9e36d9604..cf146c01a7 100644 --- a/mayan/apps/sources/__init__.py +++ b/mayan/apps/sources/__init__.py @@ -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) diff --git a/mayan/apps/sources/urls.py b/mayan/apps/sources/urls.py index 79caaae072..d289bc3b64 100644 --- a/mayan/apps/sources/urls.py +++ b/mayan/apps/sources/urls.py @@ -37,13 +37,11 @@ urlpatterns = patterns('sources.views', url(r'^create/from/local/multiple/$', DocumentCreateWizard.as_view(), name='document_create_multiple'), url(r'^(?P\d+)/create/siblings/$', 'document_create_siblings', (), 'document_create_siblings'), - - -#version_0_api_services = [ - url(r'^api/staging_folders/file/(?P[0-9]+)/(?P.+)/image/$', APIStagingSourceFileImageView.as_view(), name='stagingfolderfile-image-view'), - url(r'^api/staging_folders/file/(?P[0-9]+)/(?P.+)/$', APIStagingSourceFileView.as_view(), name='stagingfolderfile-detail'), - url(r'^api/staging_folders/$', APIStagingSourceListView.as_view(), name='stagingfolder-list'), - url(r'^api/staging_folders/(?P[0-9]+)/$', APIStagingSourceView.as_view(), name='stagingfolder-detail') -#] - +) + +api_urls = patterns('', + url(r'^staging_folders/file/(?P[0-9]+)/(?P.+)/image/$', APIStagingSourceFileImageView.as_view(), name='stagingfolderfile-image-view'), + url(r'^staging_folders/file/(?P[0-9]+)/(?P.+)/$', APIStagingSourceFileView.as_view(), name='stagingfolderfile-detail'), + url(r'^staging_folders/$', APIStagingSourceListView.as_view(), name='stagingfolder-list'), + url(r'^staging_folders/(?P[0-9]+)/$', APIStagingSourceView.as_view(), name='stagingfolder-detail') )