]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
REST: Add base configuration hooks for a REST API
authorAndy Doan <andy.doan@linaro.org>
Thu, 16 Jun 2016 21:13:17 +0000 (16:13 -0500)
committerStephen Finucane <stephen.finucane@intel.com>
Mon, 27 Jun 2016 17:19:08 +0000 (18:19 +0100)
This adds the ability to expose a REST API based on the Django REST
framework project. Since this project isn't packaged in most current
distributions, we ensure that its both installed and enabled before
trying to use it.

Signed-off-by: Andy Doan <andy.doan@linaro.org>
Inspired-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Stephen Finucane <stephen.finucane@intel.com>
patchwork/settings/base.py
patchwork/settings/dev.py
patchwork/urls.py
patchwork/views/rest_api.py [new file with mode: 0644]
requirements-test.txt

index 2f81d4b172769f3ea7e8c7b470f4375d7a6800bf..14f320966e6cfbfe7bf586aabba45ab40ce02016 100644 (file)
@@ -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
index 8cf052698d887281774983f4d779a27233e44fab..e5c88d28dad48bb7862e6d364236e4dc001ac7e5 100644 (file)
@@ -86,3 +86,5 @@ if django.VERSION >= (1, 7):
 #
 
 ENABLE_XMLRPC = True
+
+ENABLE_REST_API = True
index f664501c84011cd2807412aab33b336e9dc331ce..2318ab914d0fdb47f1f2279244995c2c9bf7aae1 100644 (file)
@@ -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 (file)
index 0000000..5436ed6
--- /dev/null
@@ -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()
index 2d0b32c733e2d608bdd8eb113c6c21b5370301fe..b5f976c3830277640b6f1cc30c5dc6d4c24a2d9e 100644 (file)
@@ -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