def __listen_dashboard_console(job_id): logger.debug('listen:console for %s', job_id) if not job_id: logger.debug('job_id not set') return flask_socketio.disconnect() try: uuid.UUID(job_id) except: logger.debug('job_id not a uuid') return flask_socketio.disconnect() conn = dbpool.get() try: u = conn.execute_one_dict( ''' SELECT p.public, j.project_id FROM project p INNER JOIN job j ON j.project_id = p.id AND j.id = %s ''', [job_id]) if not u: logger.warn('job not found') return flask_socketio.disconnect() if not u['public']: token = get_token() if token['type'] == 'user': user_id = token['user']['id'] collaborator = is_collaborator(user_id, u['project_id'], db=conn) if not collaborator: logger.warn('not a collaborator') return flask_socketio.disconnect() else: logger.debug('only user token allowed') return flask_socketio.disconnect() finally: dbpool.put(conn) flask_socketio.join_room(job_id)
def __listen_jobs(project_id): logger.debug('listen:jobs for %s', project_id) if not project_id: logger.debug('project_id not set') return flask_socketio.disconnect() try: uuid.UUID(project_id) except: logger.debug('project_id not a uuid') return flask_socketio.disconnect() conn = dbpool.get() try: p = conn.execute_one_dict( ''' SELECT public FROM project WHERE id = %s ''', [project_id]) if not p['public']: token = get_token() if token['type'] == 'user': user_id = token['user']['id'] collaborator = is_collaborator(user_id, project_id, db=conn) if not collaborator: logger.warn('not a collaborator') return flask_socketio.disconnect() else: logger.debug('only user token allowed') return flask_socketio.disconnect() finally: dbpool.put(conn) flask_socketio.join_room(project_id)