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: |