def get_functionality(name, request): result = [] errors = set() global FUNCTIONALITIES_TYPES if FUNCTIONALITIES_TYPES is None: FUNCTIONALITIES_TYPES = get_types_map( request.registry.settings.get("admin_interface", {}) .get("available_functionalities", []) ) if request.user is not None and request.user.role is not None: result = _get_db_functionality( name, request.user.role, FUNCTIONALITIES_TYPES, request, errors ) if len(result) == 0: result = _get_config_functionality( name, request.user is not None, FUNCTIONALITIES_TYPES, request, errors ) if errors != set(): # pragma: no cover log.errors("\n".join(errors)) return result
def test_get_config_functionality(self): from c2cgeoportal.lib import get_types_map from c2cgeoportal.lib import functionality types = get_types_map(["func"]) class Registry: settings = {} class Request: registry = Registry() request = Request() request.registry.settings = { "functionalities": { "registered": { "func": 10 }, "anonymous": { "func": 20 } } } functionality.FUNCTIONALITIES_TYPES = None errors = set() f = functionality._get_config_functionality("func", True, types, request, errors) self.assertEquals(errors, set()) self.assertEquals(f, [10]) f = functionality._get_config_functionality("func", False, types, request, errors) self.assertEquals(errors, set()) self.assertEquals(f, [20]) request.registry.settings = { "functionalities": { "registered": { "not_func": 10 }, "anonymous": { "func": 20 } } } functionality.FUNCTIONALITIES_TYPES = None f = functionality._get_config_functionality("func", True, types, request, errors) self.assertEquals(errors, set()) self.assertEquals(f, [20]) request.registry.settings = { "functionalities": { "registered": { "func": 10 }, "anonymous": { "not_func": 20 } } } functionality.FUNCTIONALITIES_TYPES = None f = functionality._get_config_functionality("func", False, types, request, errors) self.assertEquals(errors, set()) self.assertEquals(f, [])