def init_local(): # Change session engine bind, if needed. if Session.get_bind(None) != _engine: log.debug("init_local(): [Re-]configuring session bind.") Session.configure(bind=_engine) # Detect stale pool database connections. # In case of failure, the pool will reconnect automatically. # This is not needed when using only models, but it is needed when using either the engine # or the session directly to do raw queries. try: Session.execute("SELECT 1") except OperationalError, e: if getattr(e, 'connection_invalidated') and e.connection_invalidated: log.warn("init_local(): database connection was invalidated.") else: log.warn("init_local(): database exception: '%s'." % ( str(e) ) )
def get_by_lower_email(workspace_id, email): query = """SELECT * FROM "user" WHERE workspace_id = %i AND lower(email) = lower(%s) LIMIT 1""" % (workspace_id, escape_pg_string(email)) r = Session.execute(query) rr = r.fetchone() Session.rollback() return rr
def get_by_lower_email(workspace_id, email): query = """SELECT * FROM "user" WHERE workspace_id = %i AND lower(email) = lower(%s) LIMIT 1""" % ( workspace_id, escape_pg_string(email), ) r = Session.execute(query) rr = r.fetchone() Session.rollback() return rr
def requested_in_last_seconds(workspace_id, user_id, max_seconds): query = """SELECT * FROM wsrequest WHERE workspace_id=%i AND user_id=%i AND (date_part('epoch', now()) - req_date) < %i ORDER BY req_date DESC LIMIT 1""" \ % ( workspace_id, user_id, max_seconds) log.debug("requested_in_last_seconds(): query='%s'." % ( query ) ) r = Session.execute(query) rr = r.fetchone() Session.rollback() if rr: return True return False
def requested_in_last_seconds(workspace_id, user_id, max_seconds): query = """SELECT * FROM wsrequest WHERE workspace_id=%i AND user_id=%i AND (date_part('epoch', now()) - req_date) < %i ORDER BY req_date DESC LIMIT 1""" \ % ( workspace_id, user_id, max_seconds) log.debug("requested_in_last_seconds(): query='%s'." % (query)) r = Session.execute(query) rr = r.fetchone() Session.rollback() if rr: return True return False
def accepted_lately(workspace_id, user_id): max_seconds = 600 query = """SELECT * FROM chatrequest WHERE workspace_id=%i AND user_id=%i AND accepted=True AND (date_part('epoch', now()) - accepted_date) < %i ORDER BY accepted_date DESC LIMIT 1""" \ % ( workspace_id, user_id, max_seconds) log.debug("accepted_in_last_seconds(): query='%s'." % ( query ) ) r = Session.execute(query) rr = r.fetchone() Session.rollback() if rr: return True return False
def delete_workspace(workspace_id): # This part is done with the current transaction (commit must be done in the callers). ws = Workspace.get_by(id=workspace_id) if not ws: return ws.deleted = True Session.execute("DELETE FROM chatmessage WHERE workspace_id=%i" % ( workspace_id )) Session.execute("DELETE FROM chatrequest WHERE workspace_id=%i" % ( workspace_id )) Session.execute("DELETE FROM kfsnode WHERE workspace_id=%i" % ( workspace_id )) Session.execute("DELETE FROM vncsession WHERE workspace_id=%i" % ( workspace_id )) Session.execute("DELETE FROM wsrequest WHERE workspace_id=%i" % ( workspace_id )) Session.execute("DELETE FROM \"user\" WHERE workspace_id=%i" % ( workspace_id ))