devtools/testlib.py
changeset 5082 d6fd82a5a4e8
parent 5048 bf8a53a11b6d
parent 5055 14906474c55d
child 5121 a63d7886fcf5
equal deleted inserted replaced
5052:c9dbd95333f7 5082:d6fd82a5a4e8
   276             return self.cnx.user(req)
   276             return self.cnx.user(req)
   277         else:
   277         else:
   278             return req.user
   278             return req.user
   279 
   279 
   280     def create_user(self, login, groups=('users',), password=None, req=None,
   280     def create_user(self, login, groups=('users',), password=None, req=None,
   281                     commit=True):
   281                     commit=True, **kwargs):
   282         """create and return a new user entity"""
   282         """create and return a new user entity"""
   283         if password is None:
   283         if password is None:
   284             password = login.encode('utf8')
   284             password = login.encode('utf8')
   285         cursor = self._orig_cnx.cursor(req or self.request())
   285         if req is None:
   286         rset = cursor.execute('INSERT CWUser X: X login %(login)s, X upassword %(passwd)s',
   286             req = self._orig_cnx.request()
   287                               {'login': unicode(login), 'passwd': password})
   287         user = req.create_entity('CWUser', login=unicode(login),
   288         user = rset.get_entity(0, 0)
   288                                  upassword=password, **kwargs)
   289         cursor.execute('SET X in_group G WHERE X eid %%(x)s, G name IN(%s)'
   289         req.execute('SET X in_group G WHERE X eid %%(x)s, G name IN(%s)'
   290                        % ','.join(repr(g) for g in groups),
   290                     % ','.join(repr(g) for g in groups),
   291                        {'x': user.eid}, 'x')
   291                     {'x': user.eid}, 'x')
   292         user.clear_related_cache('in_group', 'subject')
   292         user.clear_related_cache('in_group', 'subject')
   293         if commit:
   293         if commit:
   294             self._orig_cnx.commit()
   294             req.cnx.commit()
   295         return user
   295         return user
   296 
   296 
   297     def login(self, login, **kwargs):
   297     def login(self, login, **kwargs):
   298         """return a connection for the given login/password"""
   298         """return a connection for the given login/password"""
   299         if login == self.admlogin:
   299         if login == self.admlogin: