politikorama/app/controller/controller.py

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