24 lines
795 B
Python
24 lines
795 B
Python
# encoding: utf-8
|
|
|
|
|
|
class Controller:
|
|
@classmethod
|
|
def as_view(cls, method_name, *class_args, **class_kwargs):
|
|
# Create the view function to return
|
|
def view(*args, **kwargs):
|
|
self = view.view_class(*class_args, **class_kwargs)
|
|
if hasattr(self, method_name):
|
|
return getattr(self, method_name)(*args, **kwargs)
|
|
else:
|
|
return "Class %s has no method called %s" % (
|
|
cls.__name__,
|
|
method_name,
|
|
)
|
|
|
|
view.view_class = cls
|
|
# name used for endpoint : class name + method name
|
|
view.__name__ = ".".join((cls.__name__.lower(), method_name))
|
|
view.__doc__ = cls.__doc__
|
|
view.__module__ = cls.__module__
|
|
return view
|