# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2009, Gustavo Narea .
# All Rights Reserved.
#
# This software is subject to the provisions of the BSD-like license at
# http://www.repoze.org/LICENSE.txt. A copy of the license should accompany
# this distribution. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL
# EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND
# FITNESS FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
Miscellaneous utilities for :mod:`repoze.what` when used in a Pylons
application.
"""
from pylons import request
from repoze.what.predicates import Predicate
__all__ = ['is_met', 'not_met', 'booleanize_predicates',
'debooleanize_predicates']
#{ Evaluators
def is_met(predicate):
"""
Evaluate the :mod:`repoze.what` ``predicate`` checker and return ``True``
if it's met.
:param predicate: The :mod:`repoze.what` predicate checker to be evaluated.
:return: ``True`` if it's met; ``False`` otherwise.
:rtype: bool
"""
return predicate.is_met(request.environ)
def not_met(predicate):
"""
Evaluate the :mod:`repoze.what` ``predicate`` checker and return ``False``
if it's met.
:param predicate: The :mod:`repoze.what` predicate checker to be evaluated.
:return: ``False`` if it's met; ``True`` otherwise.
:rtype: bool
"""
return not predicate.is_met(request.environ)
#{ Booleanizers
def booleanize_predicates():
"""
Make :mod:`repoze.what` predicates evaluable without passing the
``environ`` explicitly.
.. warning::
The use of this function is **strongly discouraged**. Use
:func:`is_met` or :func:`not_met` instead.
"""
Predicate.__nonzero__ = lambda self: self.is_met(request.environ)
def debooleanize_predicates():
"""
Stop :mod:`repoze.what` predicates from being evaluable without passing the
``environ`` explicitly.
This function reverts :func:`booleanize_predicates`.
"""
del Predicate.__nonzero__
#}