Beispiel #1
0
 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
Beispiel #2
0
Datei: user.py Projekt: tmbx/kas
 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
Beispiel #3
0
def init_model(junk=None):
    # Connect.
    new_engine()

    # Import models.
    import_models()

    # Setup elixir entities.
    setup_all()

    # Bind session to the engine.
    Session.configure(bind=_engine)
Beispiel #4
0
 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
Beispiel #5
0
 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
Beispiel #6
0
    def from_evt(evt):
        # Extract information from event.
        workspace_id = evt.kws_id
        # workspace id # = evt.anp.get_u64(0)
        date = evt.anp.get_u64(1)
        if evt.minor >= 3: request_id = evt.anp.get_u64(2)
        else: request_id = evt.anp.get_u32(2)
        user_id = evt.anp.get_u32(3)
        # subject # = evt.anp.get_str(4)
        timeout = evt.anp.get_u32(5)

        # Workaround part A:
        # Delete former requests with the same (workspace_id - request_id) key.
        while 1:
            chat_req = Session.query(ChatRequest).filter_by(workspace_id=workspace_id, request_id=request_id).first()
            if not chat_req: break
            chat_req.delete()

        # Create a new chat request instance.
        chat_req = ChatRequest()

        # Fill chat request.
        chat_req.workspace_id = workspace_id
        chat_req.request_id = request_id
        chat_req.req_date = date
        chat_req.user_id = user_id
        chat_req.timeout = timeout

        return chat_req
Beispiel #7
0
    def from_evt(evt):
        # Extract information from event.
        workspace_id = evt.kws_id
        # workspace id # = evt.anp.get_u64(0)
        date = evt.anp.get_u64(1)
        if evt.minor >= 3: request_id = evt.anp.get_u64(2)
        else: request_id = evt.anp.get_u32(2)
        user_id = evt.anp.get_u32(3)
        subject = evt.anp.get_str(4)

        # Workaround part A:
        # Delete former requests with the same (workspace_id - request_id) key.
        while 1:
            ws_req = Session.query(WSRequest).filter_by(
                workspace_id=workspace_id, request_id=request_id).first()
            if not ws_req: break
            ws_req.delete()

        # Create a new workspace request instance.
        ws_req = WSRequest()

        # Fill request.
        ws_req.workspace_id = workspace_id
        ws_req.request_id = request_id
        ws_req.req_date = date
        ws_req.user_id = user_id
        ws_req.subject = subject

        return ws_req
Beispiel #8
0
    def from_evt(evt):
        # Extract information from event.
        workspace_id = evt.kws_id
        # workspace id # = evt.anp.get_u64(0)
        date = evt.anp.get_u64(1)
        if evt.minor >= 3: request_id = evt.anp.get_u64(2)
        else: request_id = evt.anp.get_u32(2)
        user_id = evt.anp.get_u32(3)
        subject = evt.anp.get_str(4)

        # Workaround part A:
        # Delete former requests with the same (workspace_id - request_id) key.
        while 1:
            ws_req = Session.query(WSRequest).filter_by(workspace_id=workspace_id, request_id=request_id).first()
            if not ws_req: break
            ws_req.delete()

        # Create a new workspace request instance.
        ws_req = WSRequest()

        # Fill request.
        ws_req.workspace_id = workspace_id
        ws_req.request_id = request_id
        ws_req.req_date = date
        ws_req.user_id = user_id
        ws_req.subject = subject

        return ws_req
Beispiel #9
0
 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
Beispiel #10
0
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) ) )
Beispiel #11
0
Datei: user.py Projekt: tmbx/kas
    def update_registered_from_evt(evt):
        workspace_id = evt.kws_id
        # workspace_id # =  evt.anp.get_u64(0)
        # date # = evt.anp.get_u64(1)
        user_id = evt.anp.get_u32(2)
        real_name = evt.anp.get_str(3)
        # ...
        user = Session.query(User).filter_by(workspace_id=workspace_id, id=user_id).first()
        user.real_name = real_name
        user.evt_id = evt.evt_id

        return user
Beispiel #12
0
    def update_registered_from_evt(evt):
        workspace_id = evt.kws_id
        # workspace_id # =  evt.anp.get_u64(0)
        # date # = evt.anp.get_u64(1)
        user_id = evt.anp.get_u32(2)
        real_name = evt.anp.get_str(3)
        # ...
        user = Session.query(User).filter_by(workspace_id=workspace_id,
                                             id=user_id).first()
        user.real_name = real_name
        user.evt_id = evt.evt_id

        return user
Beispiel #13
0
    def stop_from_evt(evt):
        # Get informations from event.
        workspace_id = evt.kws_id
        # workspace_id # = evt.anp.get_u64(0)
        # date # = evt.anp.get_u64(1)
        user_id = evt.anp.get_u32(2)
        session_id = evt.anp.get_u64(3)

        # Get the corresponding vnc request.
        vnc_sess = Session.query(VncSession).filter_by(workspace_id=workspace_id, session_id=session_id).first()

        # Delete the session.
        vnc_sess.delete()

        return vnc_sess
Beispiel #14
0
    def stop_from_evt(evt):
        # Get informations from event.
        workspace_id = evt.kws_id
        # workspace_id # = evt.anp.get_u64(0)
        # date # = evt.anp.get_u64(1)
        user_id = evt.anp.get_u32(2)
        session_id = evt.anp.get_u64(3)

        # Get the corresponding vnc request.
        vnc_sess = Session.query(VncSession).filter_by(
            workspace_id=workspace_id, session_id=session_id).first()

        # Delete the session.
        vnc_sess.delete()

        return vnc_sess
Beispiel #15
0
    def accept_from_evt(evt):
        # Extract informations from event.
        workspace_id = evt.anp.get_u64(0)
        date = evt.anp.get_u64(1)
        if evt.minor >= 3: request_id = evt.anp.get_u64(2)
        else: request_id = evt.anp.get_u32(2)
        user_id = evt.anp.get_u32(3)
        channel_id = evt.anp.get_u32(4)

        # Get the corresponding chat request.
        chat_req = Session.query(ChatRequest).filter_by(workspace_id=workspace_id, request_id=request_id).first()

        # Update the chat request.
        chat_req.accepted = True
        chat_req.accepted_date = date
        chat_req.channel_id = channel_id

        # Workaround part B:
        # Nothing to do - read the note above.

        return chat_req
Beispiel #16
0
    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 ))
Beispiel #17
0
def reset_thread_local_session():
    Session.remove()