diff options
-rw-r--r-- | patchwork/settings/base.py | 11 | ||||
-rw-r--r-- | patchwork/settings/dev.py | 2 | ||||
-rw-r--r-- | patchwork/urls.py | 9 | ||||
-rw-r--r-- | patchwork/views/rest_api.py | 22 | ||||
-rw-r--r-- | requirements-test.txt | 1 |
5 files changed, 45 insertions, 0 deletions
diff --git a/patchwork/settings/base.py b/patchwork/settings/base.py index 2f81d4b..14f3209 100644 --- a/patchwork/settings/base.py +++ b/patchwork/settings/base.py @@ -28,6 +28,14 @@ INSTALLED_APPS = [ 'patchwork', ] +try: + # django rest framework isn't a standard package in most distros, so + # don't make it compulsory + import rest_framework # NOQA + INSTALLED_APPS += ['rest_framework'] +except ImportError: + pass + # HTTP MIDDLEWARE_CLASSES = [ @@ -148,6 +156,9 @@ NOTIFICATION_FROM_EMAIL = DEFAULT_FROM_EMAIL # Set to True to enable the Patchwork XML-RPC interface ENABLE_XMLRPC = False +# Set to True to enable the Patchwork REST API +ENABLE_REST_API = False + # Set to True to enable redirections or URLs from previous versions # of patchwork COMPAT_REDIR = True diff --git a/patchwork/settings/dev.py b/patchwork/settings/dev.py index 8cf0526..e5c88d2 100644 --- a/patchwork/settings/dev.py +++ b/patchwork/settings/dev.py @@ -86,3 +86,5 @@ if django.VERSION >= (1, 7): # ENABLE_XMLRPC = True + +ENABLE_REST_API = True diff --git a/patchwork/urls.py b/patchwork/urls.py index f664501..2318ab9 100644 --- a/patchwork/urls.py +++ b/patchwork/urls.py @@ -143,6 +143,15 @@ if settings.ENABLE_XMLRPC: name='pwclientrc'), ] +if settings.ENABLE_REST_API: + if 'rest_framework' not in settings.INSTALLED_APPS: + raise RuntimeError( + 'djangorestframework must be installed to enable the REST API.') + import patchwork.views.rest_api + urlpatterns += [ + url(r'^api/1.0/', include(patchwork.views.rest_api.router.urls)), + ] + # redirect from old urls if settings.COMPAT_REDIR: urlpatterns += [ diff --git a/patchwork/views/rest_api.py b/patchwork/views/rest_api.py new file mode 100644 index 0000000..5436ed6 --- /dev/null +++ b/patchwork/views/rest_api.py @@ -0,0 +1,22 @@ +# Patchwork - automated patch tracking system +# Copyright (C) 2016 Linaro Corporation +# +# This file is part of the Patchwork package. +# +# Patchwork is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Patchwork is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Patchwork; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from rest_framework import routers + +router = routers.DefaultRouter() diff --git a/requirements-test.txt b/requirements-test.txt index 2d0b32c..b5f976c 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -2,3 +2,4 @@ mysqlclient==1.3.7 # replace this with psycopg2 for a PostgreSQL backend django-debug-toolbar==1.4 python-dateutil>2.0,<3.0 selenium>2.0,<3.0 +djangorestframework>=3.3,<3.4 |