From 38e4a1e0fa3da669c57f542fcbfef2378ebced00 Mon Sep 17 00:00:00 2001 From: Ben Date: Sun, 17 May 2020 03:24:51 +0100 Subject: [PATCH] Wrapper functions for registering and unregistering permissions --- houdini/data/permission.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/houdini/data/permission.py b/houdini/data/permission.py index 521dffc..725848b 100644 --- a/houdini/data/permission.py +++ b/houdini/data/permission.py @@ -21,6 +21,18 @@ class PermissionCollection(AbstractDataCollection): __indexby__ = 'name' __filterby__ = 'name' + async def register(self, permission_name): + permission_parts = permission_name.split('.') + for permission_index in range(1, len(permission_parts) + 1): + permission_name = '.'.join(permission_parts[:permission_index]) + if permission_name not in self: + await self.insert(name=permission_name) + + async def unregister(self, permission_name): + for permission in self.values(): + if permission.name == permission_name or permission.name.startswith(permission_name): + await self.delete(permission.name) + class PenguinPermissionCollection(AbstractDataCollection): __model__ = PenguinPermission