server/repository.py
changeset 636 3e9245cf0d9c
parent 594 76218d42d21f
child 1016 26387b836099
equal deleted inserted replaced
626:97924df9168c 636:3e9245cf0d9c
   489         """
   489         """
   490         session = self.internal_session()
   490         session = self.internal_session()
   491         try:
   491         try:
   492             if session.execute('EUser X WHERE X login %(login)s', {'login': login}):
   492             if session.execute('EUser X WHERE X login %(login)s', {'login': login}):
   493                 return False
   493                 return False
       
   494             if session.execute('EUser X WHERE X use_email C, C address %(login)s',
       
   495                                {'login': login}):
       
   496                 return False
   494             # we have to create the user
   497             # we have to create the user
   495             user = self.vreg.etype_class('EUser')(session, None)
   498             user = self.vreg.etype_class('EUser')(session, None)
   496             if isinstance(password, unicode):
   499             if isinstance(password, unicode):
   497                 # password should *always* be utf8 encoded
   500                 # password should *always* be utf8 encoded
   498                 password = password.encode('UTF8')
   501                 password = password.encode('UTF8')
   500             kwargs['upassword'] = password
   503             kwargs['upassword'] = password
   501             user.update(kwargs)
   504             user.update(kwargs)
   502             self.glob_add_entity(session, user)
   505             self.glob_add_entity(session, user)
   503             session.execute('SET X in_group G WHERE X eid %(x)s, G name "users"',
   506             session.execute('SET X in_group G WHERE X eid %(x)s, G name "users"',
   504                             {'x': user.eid})
   507                             {'x': user.eid})
       
   508             # FIXME this does not work yet
       
   509             if '@' in login:
       
   510                 session.execute('INSERT EmailAddress X: X address "%(login)s", '
       
   511                                 'U primary_email X, U use_email X WHERE U login "%(login)s"',
       
   512                                 {'login':login})
   505             session.commit()
   513             session.commit()
   506         finally:
   514         finally:
   507             session.close()
   515             session.close()
   508         return True
   516         return True
   509         
   517