:py:mod:`oioioi.base.permissions` ================================= .. py:module:: oioioi.base.permissions Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: oioioi.base.permissions.AccessDenied oioioi.base.permissions.Condition oioioi.base.permissions.RequestBasedCondition Functions ~~~~~~~~~ .. autoapisummary:: oioioi.base.permissions.make_condition oioioi.base.permissions.enforce_condition oioioi.base.permissions.not_anonymous oioioi.base.permissions.is_superuser Attributes ~~~~~~~~~~ .. autoapisummary:: oioioi.base.permissions.make_request_condition .. py:class:: AccessDenied(response=None) Bases: :py:obj:`object` A ``False``-like class with additional response to use as the access denied message. .. py:method:: __nonzero__() .. py:class:: Condition(condition, *args, **kwargs) Bases: :py:obj:`object` Class representing a condition (a function which returns a boolean based on its arguments) intended for use with views and menu items. Technically, an instance of this class is a callable object wrapping a function. Additionally, it implements basic logical operators: AND (&), OR (|), and (~) -- a logical negation. :param condition: the function to be wrapped :type condition: fun: \*args, \*\*kwargs → bool .. py:method:: __call__(*args, **kwargs) .. py:method:: __or__(other) .. py:method:: __and__(other) .. py:method:: __invert__() .. py:class:: RequestBasedCondition(condition, *args, **kwargs) Bases: :py:obj:`Condition` Subclass of the :class:`Condition` class. It is a special condition class representing a condition which takes request as its only argument. It allows the usage of :func:`oioioi.base.utils.request_cached`. .. py:method:: __call__(request, *args, **kwargs) .. py:function:: make_condition(condition_class=Condition) Decorator which transforms a function into an instance of a given ``condition_class`` (subclass of :class:`~Condition`). .. py:data:: make_request_condition .. py:function:: enforce_condition(condition, template=None, login_redirect=True) Decorator for views that checks that the request passes the given ``condition``. ``condition`` must be an instance of :class:`Condition`. If the condition returns ``False`` and ``template`` is not ``None``, a suitable :class:`TemplateResponse` is returned. If ``template`` is ``None`` and the user is not authenticated and the ``login_redirect`` flag is set to ``True``, a redirect to the login page is issued, otherwise :exc:`PermissionDenied` is raised. If the condition returns an instance of :class:`AccessDenied` with a specific response to use, this response is used instead of calling the decorated view. :param condition: condition to check :type condition: :class:`Condition` :param template: template name to return when ``condition`` fails :type template: basestring .. py:function:: not_anonymous(request) Checks if user is logged in and if his account is active. Logs out inactive users, effectively blocking them from performing actions. :param request: :return: .. py:function:: is_superuser(request)