Hello all,
I recently made a little code snippet that has come in very handy for
my Pylon projects. It automatically connects methods in a controller
with a url. For example, if we have a controller called MyController,
and inside it a method:
def myaction(self, arg1, arg2)
The, on our make_map, calling:
add_magic_route(map, MyController)
will automatically insert /my/myaction/{arg1}/{arg2} into the map and
associate with the correct method in the controller. Note that it
works better calling it before any custom routes. I hope this will be
useful to someone.
=============
Here is the code:
=============
from types import FunctionType
import inspect
def add_magic_route(map_instance, clazz, controller_name=None,
ignore_actions=None):
if ignore_actions is None:
ignore_actions = []
# identifies the controller name
if controller_name is None:
name = clazz.__name__
pos = name.find("Controller")
if pos < 0:
controller_name = name.lower()
else:
controller_name = name.lower()[:pos]
# puts all the controller methods on the map
for method_name, method in clazz.__dict__.items():
if type(method) == FunctionType \
and method_name[0] != "_" \
and method_name not in ignore_actions:
args = inspect.getargspec(method).args
args = map(lambda x: '{'+x+'}',args[1:])
if len(args):
map_instance.connect(
'/'+controller_name+
'/'+method_name+
'/'+'/'.join(args),
controller=controller_name,action=method_name)
print '/'+controller_name+'/'+method_name
+'/'+'/'.join(args)
--
You received this message because you are subscribed to the Google Groups
"pylons-devel" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pylons-devel?hl=en.