politikorama/app/controller/controller.py

24 lines
795 B
Python
Raw Normal View History

2021-07-23 17:35:29 +02:00
# 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