# -*- coding: iso-8859-1 -*-
"""
@copyright: (c) Bastian Blank, Florian Festi, Thomas Waldmann
@copyright: MoinMoin:FrankieChow
@license: GNU GPL, see COPYING for details.
"""

class security_rules_obj:
    """ Template of SecurityRules Object
    """

    def __init__(self, user, dict):
        """ Calculate the permissons `user` has.
        """
        self.user = user
        self.name = user.name
        self.request = user._request
        self.dict = dict

    def cal_rule_result(self):
        """ Cal the dict('is_non') and set the rule_result.
        """
        if self.dict.has_key('is_non'):
            self.rule_result = self.dict['is_non'] * self.match_rule()
        else:
            self.rule_result = self.match_rule()

    def check_dict(self):
        """
        Developer can override it to check pass dict.
        """
        self.cal_rule_result()
        if getattr(self, attr, 0):
            return 1

    def true(self, pagename, **kw):
        return 1
    def false(self, pagename, **kw):
        return 0

    def __getattr__(self, attr):
        if not self.rule_result: raise AttributeError, attr
        if self.dict[attr]:
            return lambda pagename, **kw: self.true(pagename, **kw)
        else:
            return lambda pagename, **kw: self.false(pagename, **kw)

class vaild_user(security_rules_obj):
    """
    Maybe Developer must need to write this module.
    """
    def match_rule(self):
        if self.user.valid:
            return 1
        else:
            return 0
