# Copyright (C) 2007-2012 Mortal Coil Games # See LICENSE for details. """ """ from twisted.python.util import mergeFunctionMetadata from mv3d.net.security import AccessDenied def checkServicePermissions(*perms): """ Specify that certain permissions are required for this method assumes argument 2 can be checked for security. """ def decorator(func): def wrapper(self, *args, **kw): for perm in perms: if not self.service.checkPermissions(args[0], perm): raise AccessDenied("You do not have %s permissions " "to run %s." % (perm, func.__name__)) return func(self, *args, **kw) mergeFunctionMetadata(func, wrapper) return wrapper return decorator def viewed(func): def wrapper(self, client, *args, **kw): nm = "_".join(func.__name__.split("_")[1:]) return getattr(self.service, nm)(*args, **kw) mergeFunctionMetadata(func, wrapper) return wrapper def viewedWithClient(func): def wrapper(self, client, *args, **kw): nm = "_".join(func.__name__.split("_")[1:]) return getattr(self.service, nm)(client, *args, **kw) mergeFunctionMetadata(func, wrapper) return wrapper