540 raise `ConnectionError` if we can't open a connection |
540 raise `ConnectionError` if we can't open a connection |
541 """ |
541 """ |
542 # use an internal connection |
542 # use an internal connection |
543 session = self.internal_session() |
543 session = self.internal_session() |
544 # try to get a user object |
544 # try to get a user object |
|
545 cnxprops = kwargs.pop('cnxprops', None) |
545 try: |
546 try: |
546 user = self.authenticate_user(session, login, **kwargs) |
547 user = self.authenticate_user(session, login, **kwargs) |
547 finally: |
548 finally: |
548 session.close() |
549 session.close() |
549 session = Session(user, self, kwargs.get('cnxprops')) |
550 session = Session(user, self, cnxprops) |
550 user._cw = user.cw_rset.req = session |
551 user._cw = user.cw_rset.req = session |
551 user.clear_related_cache() |
552 user.clear_related_cache() |
552 self._sessions[session.id] = session |
553 self._sessions[session.id] = session |
553 self.info('opened %s', session) |
554 self.info('opened %s', session) |
554 self.hm.call_hooks('session_open', session) |
555 self.hm.call_hooks('session_open', session) |