summaryrefslogtreecommitdiffstats
path: root/module/datatypes/User.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/datatypes/User.py')
-rw-r--r--module/datatypes/User.py40
1 files changed, 34 insertions, 6 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