Skip to content

Commit 8b3ee06

Browse files
committed
Merge branch 'liminspace-issue-83'
2 parents 1601011 + b3482d6 commit 8b3ee06

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

jsonrpc/backend/django.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from django.views.decorators.csrf import csrf_exempt
44
from django.conf.urls import url
5+
from django.conf import settings
56
from django.http import HttpResponse, HttpResponseNotAllowed
67
import copy
78
import json
@@ -18,6 +19,11 @@
1819
logger = logging.getLogger(__name__)
1920

2021

22+
def response_serialize(obj):
23+
""" Serializes response's data object to JSON. """
24+
return json.dumps(obj, cls=DatetimeDecimalEncoder)
25+
26+
2127
class JSONRPCAPI(object):
2228
def __init__(self, dispatcher=None):
2329
self.dispatcher = dispatcher if dispatcher is not None \
@@ -26,10 +32,14 @@ def __init__(self, dispatcher=None):
2632
@property
2733
def urls(self):
2834
urls = [
29-
url(r'^$', self.jsonrpc),
30-
url(r'map$', self.jsonrpc_map),
35+
url(r'^$', self.jsonrpc, name='endpoint'),
3136
]
3237

38+
if getattr(settings, 'JSONRPC_MAP_VIEW_ENABLED', settings.DEBUG):
39+
urls.append(
40+
url(r'^map$', self.jsonrpc_map, name='map')
41+
)
42+
3343
return urls
3444

3545
@csrf_exempt
@@ -58,10 +68,7 @@ def jsonrpc(self, request):
5868
jsonrpc_request.method, jsonrpc_request_params, t2 - t1))
5969

6070
if response:
61-
def serialize(s):
62-
return json.dumps(s, cls=DatetimeDecimalEncoder)
63-
64-
response.serialize = serialize
71+
response.serialize = response_serialize
6572
response = response.json
6673

6774
return HttpResponse(response, content_type="application/json")

jsonrpc/tests/test_backend_django/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
'NAME': ':memory:',
99
}
1010
}
11+
JSONRPC_MAP_VIEW_ENABLED = True

jsonrpc/tests/test_backend_django/tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def test_resource_map(self):
7070

7171
def test_method_not_allowed_prefix(self):
7272
response = self.client.get(
73-
'/prefix',
73+
'/prefix/',
7474
content_type='application/json',
7575
)
7676
self.assertEqual(response.status_code, 405)

jsonrpc/tests/test_backend_django/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33

44
urlpatterns = [
55
url(r'', include(api.urls)),
6-
url(r'prefix', include(api.urls)),
6+
url(r'^prefix/', include(api.urls)),
77
]

0 commit comments

Comments
 (0)