Skip to content

Commit 39619a3

Browse files
committed
fix python2 and 3 compatible
1 parent bbf0f92 commit 39619a3

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed
Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import absolute_import, print_function
33

4+
from six import with_metaclass
5+
import six
46
import falcon
57

68
from ..validators import request_validate, response_filter
@@ -11,25 +13,33 @@ before_decorators = [request_validate]
1113
after_decorators = [response_filter]
1214

1315

16+
if six.PY3:
17+
ismethod = inspect.isfunction
18+
else:
19+
ismethod = inspect.ismethod
20+
21+
1422
def add_before_decorators(model_class):
15-
for name, m in inspect.getmembers(model_class, inspect.ismethod):
23+
for name, m in inspect.getmembers(model_class, ismethod):
1624
if name in ['on_get', 'on_post', 'on_put', 'on_delete']:
1725
setattr(model_class, name, falcon.before(*before_decorators)(m))
1826

1927

2028
def add_after_decorators(model_class):
21-
for name, m in inspect.getmembers(model_class, inspect.ismethod):
29+
for name, m in inspect.getmembers(model_class, ismethod):
2230
if name in ['on_get', 'on_post', 'on_put', 'on_delete']:
2331
setattr(model_class, name, falcon.after(*after_decorators)(m))
2432

2533

2634
class APIMetaclass(type):
27-
2835
"""
2936
Metaclass of the Model.
3037
"""
31-
3238
def __init__(cls, name, bases, attrs):
3339
super(APIMetaclass, cls).__init__(name, bases, attrs)
3440
add_before_decorators(cls)
3541
add_after_decorators(cls)
42+
43+
class Resource(with_metaclass(APIMetaclass, object)):
44+
45+
pass

swagger_py_codegen/templates/falcon/validators.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def request_validate(req, resp, resource, params):
102102
if method == 'HEAD':
103103
method = 'GET'
104104
locations = validators.get((endpoint, method), {})
105-
options = {}
105+
context = {}
106106
for location, schema in six.iteritems(locations):
107107
value = getattr(req, location, MultiDict())
108108
if location == 'headers':
@@ -124,8 +124,8 @@ def request_validate(req, resp, resource, params):
124124
result, errors = validator.validate(value)
125125
if errors:
126126
raise falcon.HTTPUnprocessableEntity('Unprocessable Entity', description=errors)
127-
options[location] = result
128-
req.options = options
127+
context[location] = result
128+
req.context = context
129129

130130

131131
def response_filter(req, resp, resource):

swagger_py_codegen/templates/falcon/view.tpl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@ from __future__ import absolute_import, print_function
33

44
import falcon
55

6-
from . import APIMetaclass
6+
from . import Resource
77

88

9-
class {{ name }}(object):
10-
11-
__metaclass__ = APIMetaclass
9+
class {{ name }}(Resource):
1210

1311
{%- for method, ins in methods.items() %}
1412

1513
def on_{{ method.lower() }}(self, req, resp{{ params.__len__() and ', ' or '' }}{{ params | join(', ') }}):
1614
{%- for request in ins.requests %}
17-
print(req.options['{{ request }}'])
15+
print(req.context['{{ request }}'])
1816
{%- endfor %}
1917

2018
{% if 'response' in ins -%}

0 commit comments

Comments
 (0)