summaryrefslogtreecommitdiff
path: root/pecan/core.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-10-14 21:14:34 +0000
committerGerrit Code Review <review@openstack.org>2014-10-14 21:14:34 +0000
commit8b30a0ec72860aa78b3b9c2246aa1c6e7a1b9cfe (patch)
tree3a9cfc5ba41f9df205d4724c470ec6848274fbd6 /pecan/core.py
parentfd9a0dc1f67348014a05f75b13da05d5147c1233 (diff)
parent2d5f5e482d77bfcaab2b4677241e85e9f1ac9b39 (diff)
downloadpecan-8b30a0ec72860aa78b3b9c2246aa1c6e7a1b9cfe.tar.gz
Merge "Resolve a bug that mixes up argument order for generic functions."
Diffstat (limited to 'pecan/core.py')
-rw-r--r--pecan/core.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/pecan/core.py b/pecan/core.py
index 20d6403..49c7e8e 100644
--- a/pecan/core.py
+++ b/pecan/core.py
@@ -11,6 +11,10 @@ import operator
import types
import six
+if six.PY3:
+ from .compat import is_bound_method as ismethod
+else:
+ from inspect import ismethod
from webob import (Request as WebObRequest, Response as WebObResponse, exc,
acceptparse)
@@ -738,7 +742,13 @@ class ExplicitPecan(PecanBase):
args, varargs, kwargs = super(ExplicitPecan, self).get_args(
state, all_params, remainder, argspec, im_self
)
- args = [state.request, state.response] + args
+
+ if ismethod(state.controller):
+ args = [state.request, state.response] + args
+ else:
+ # generic controllers have an explicit self *first*
+ # (because they're decorated functions, not instance methods)
+ args[1:1] = [state.request, state.response]
return args, varargs, kwargs