def _update(self, **kwargs): username = kwargs.get('username', self.name) password = kwargs.get('password', self._ecuser.Password) email = kwargs.get('email', str(self._ecuser.Email)) fullname = kwargs.get('fullname', str(self._ecuser.FullName)) user_class = kwargs.get('user_class', self._ecuser.Class) admin = kwargs.get('admin', self._ecuser.IsAdmin) try: # Pass the MVPropMAP otherwise the set values are reset if hasattr(self._ecuser, 'MVPropMap'): self.server.sa.SetUser(ECUSER( Username=username, Password=password, Email=email, FullName=fullname, Class=user_class, UserID=self._ecuser.UserID, IsAdmin=admin, MVPropMap=self._ecuser.MVPropMap ), MAPI_UNICODE) else: self.server.sa.SetUser(ECUSER( Username=username, Password=password, Email=email, FullName=fullname, Class=user_class, UserID=self._ecuser.UserID, IsAdmin=admin ), MAPI_UNICODE) except MAPIErrorNoSupport: pass self._ecuser = self.server.sa.GetUser( self.server.sa.ResolveUserName(username, MAPI_UNICODE), MAPI_UNICODE ) self._name = username
def create_user(self, name, email=None, password=None, company=None, fullname=None, create_store=True): """Create a new :class:`user <User>` on the server. :param name: the login name of the user :param email: the email address of the user :param password: the login password of the user :param company: the company of the user :param fullname: the full name of the user :param create_store: should a store be created for the new user :return: :class:`<User>` """ fullname = _unicode(fullname or name or '') name = _unicode(name) if email: email = _unicode(email) else: email = u'%s@%s' % (name, socket.gethostname()) if password: password = _unicode(password) if company: company = _unicode(company) if company and company != u'Default': self.sa.CreateUser( ECUSER(u'%s@%s' % (name, company), password, email, fullname), MAPI_UNICODE) user = self.company(company).user(u'%s@%s' % (name, company)) else: try: self.sa.CreateUser(ECUSER(name, password, email, fullname), MAPI_UNICODE) except MAPIErrorNoSupport: raise NotSupportedError( "cannot create users with configured user plugin") except MAPIErrorCollision: raise DuplicateError("user '%s' already exists" % name) user = self.user(name) if create_store: try: self.sa.CreateStore(ECSTORE_TYPE_PRIVATE, _bdec(user.userid)) except MAPIErrorCollision: pass # create-user userscript may already create store return user
def create_user(self, name, email=None, password=None, company=None, fullname=None, create_store=True): """Create a new :class:`user <User>` on the server. :param name: User login name :param email: User email address (optional) :param password: User login password (optional) :param company: User company (optional) :param fullname: User full name (optional) :param create_store: Should a store be created (default True) """ fullname = str(fullname or name or '') name = str(name) if email: email = str(email) else: email = '%s@%s' % (name, socket.gethostname()) if password: password = str(password) if company: company = str(company) if company and company != 'Default': self.sa.CreateUser( ECUSER('%s@%s' % (name, company), password, email, fullname), MAPI_UNICODE) user = self.company(company).user('%s@%s' % (name, company)) else: try: self.sa.CreateUser(ECUSER(name, password, email, fullname), MAPI_UNICODE) except MAPIErrorNoSupport: raise NotSupportedError( "cannot create users with configured user plugin") except MAPIErrorCollision: raise DuplicateError("user '%s' already exists" % name) user = self.user(name) if create_store: try: self.sa.CreateStore(ECSTORE_TYPE_PRIVATE, _bdec(user.userid)) except MAPIErrorCollision: pass # create-user userscript may already create store return user