Exemplo n.º 1
0
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, [])