diff options
Diffstat (limited to 'module/datatypes')
-rw-r--r-- | module/datatypes/User.py | 40 | ||||
-rw-r--r-- | module/datatypes/__init__.py | 1 |
2 files changed, 34 insertions, 7 deletions
diff --git a/module/datatypes/User.py b/module/datatypes/User.py index 6ea958770..d48111182 100644 --- a/module/datatypes/User.py +++ b/module/datatypes/User.py @@ -17,17 +17,45 @@ ############################################################################### -from module.Api import UserData +from module.Api import UserData, Permission, Role, has_permission +#TODO: activate user #noinspection PyUnresolvedReferences class User(UserData): @staticmethod - def fromUserData(manager, user): - return User(manager, user.uid, user.name, user.email, user.role, user.permission, user.folder, + def fromUserData(api, user): + return User(api, user.uid, user.name, user.email, user.role, user.permission, user.folder, user.traffic, user.dllimit, user.dlquota, user.hddquota, user.user, user.templateName) - def __init__(self, manager, *args): - UserData.__init__(*args) - self.m = manager + def __init__(self, api, *args): + UserData.__init__(self, *args) + self.api = api + + def toUserData(self): + return UserData() + + def hasPermission(self, perms): + """ Accepts permission bit or name """ + + if isinstance(perms, basestring) and hasattr(Permission, perms): + perms = getattr(Role, perms) + + return has_permission(self.permission, perms) + + def hasRole(self, role): + if isinstance(role, basestring) and hasattr(Role, role): + role = getattr(Role, role) + + return self.role == role + + def isAdmin(self): + return self.hasRole(Role.Admin) + + @property + def handle(self): + """ Internal user handle used for most operations (secondary share handle with primary user) """ + if self.hasRole(Role.Admin): + return None + return self.user if self.user else self.uid diff --git a/module/datatypes/__init__.py b/module/datatypes/__init__.py index 4b31e848b..e69de29bb 100644 --- a/module/datatypes/__init__.py +++ b/module/datatypes/__init__.py @@ -1 +0,0 @@ -__author__ = 'christian' |