Source code for django_crucrudile.routes.mixins.callback

"""This module contains a route mixin, :class:`CallbackMixin`, that
implements :class:`django_crucrudile.routes.base.BaseRoute`.

"""
[docs]class CallbackMixin: """Route mixin, implements :class:`django_crucrudile.routes.base.BaseRoute`, requires a callback to be set either on the class (:attr:`callback` attribute), or to be passed in :func:`__init__`. .. note:: This mixin makes the class concrete, as it implements the :func:`django_crucrudile.routes.base.BaseRoute.get_callback` abstract function. .. inheritance-diagram:: CallbackMixin """ callback = None """ :attribute callback: Callback that will be used by the URL pattern :type callback: callable """
[docs] def __init__(self, *args, callback=None, **kwargs): """Initialize CallbackRoute, check that callback is defined at class-level or passed as argument :argument callback: See :attr:`callback` :raises ValueError: If ``callback`` and :attr:`callback` are both ``None`` """ if callback is not None: self.callback = callback elif self.callback is None: raise ValueError( "No ``callback`` argument provided to __init__" ", and no callback defined as class attribute." " (in {})".format(self) ) super().__init__(*args, **kwargs)
[docs] def get_callback(self): """Return :attr:`callback` :returns: The callback set on class (:attr:`callback`) or passed to :func:`__init__`. :rtype: callable""" return self.callback