def do_signin(): session = _get_session() user = bottle.request.forms.get('user') password = bottle.request.forms.get('pass') if not user or not password: session['error'] = 'Both username and password are required.' session.save() bottle.redirect('/signin') try: conn = deco.connect(database=user, user=user, password=password) except psycopg2.Error as e: if 'authentication failed' in unicode(e): session['error'] = 'Password authentication failed.' elif 'does not exist' in unicode(e): session['error'] = 'Username does not exist.' else: session['error'] = unicode(e) session.save() bottle.redirect('/signin') else: conn.close() session['user'] = user session['password'] = password if bottle.request.forms.get('remember'): session['_expires'] = datetime.utcnow() + timedelta(days=7) session.save() bottle.redirect('/')
def _connect(): session = _get_session() try: conn = deco.connect(database=session['user'], user=session['user'], password=session['password']) except (KeyError, psycopg2.Error): raise RuntimeError('database connection failed') return conn