diff --git a/app/__init__.py b/app/__init__.py index f33cb015618c6906fd07980b74f741bf2217a5e5..23439845aaa857574243ca1486b807eb9f47aa33 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -17,17 +17,13 @@ def create_app(config_name): @app.route('/', methods=['GET', 'POST']) # initial route to display the reg page def index(): - if 'username' not in session: - session['username'] = "name_test" + str(random.randint(0, 10000)) - # session['username'] = request.remote_user - if 'uid' not in session: session['uid']=str(uuid.uuid4()) if "redir" in request.args and 'return_url' not in session: # check for redir arg in url session['return_url'] = request.args.get("redir") or "/pun/sys/dashboard" - return render_template('auth/SignUp.html', user=session['username'], room_id=session['uid']) + return render_template('auth/SignUp.html', room_id=session['uid']) # misc page error catching @app.errorhandler(403) diff --git a/app/static/scripts/function.js b/app/static/scripts/function.js index bfc452e8f100bbece2967ff8e7c26516ab7175db..694ff191aaa2e9a4221412f1489f31ee84878ac1 100644 --- a/app/static/scripts/function.js +++ b/app/static/scripts/function.js @@ -6,7 +6,7 @@ function request_account() { socket.emit('request account', { fullname: document.getElementById("fullname").value, reason: document.getElementById("reason").value, - username: document.getElementById("username").innerText + username: document.getElementById("bid").value }) } diff --git a/app/templates/auth/SignUp.html b/app/templates/auth/SignUp.html index ac01902e96262215ba9898c186b17846ea18426c..617b08332d691c691fd3be65bc15dd6759b6444b 100644 --- a/app/templates/auth/SignUp.html +++ b/app/templates/auth/SignUp.html @@ -11,9 +11,7 @@ var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on( 'connect', function() { - socket.emit( 'user connected', { - user: document.getElementById("username").innerText - } ) + socket.emit( 'join_room' ) socket.on( 'creating account', function( msg ) { document.getElementById("error").innerText = ""; @@ -83,10 +81,14 @@ </a> </div> - <h2>Hello, <span id="username">{{ user }}</span>!</h2> +<!-- <h2>Hello, <span id="username">{{ user }}</span>!</h2> --> + + <h2>Hi, </h2> <div id="test"> <form action="." method="post" onsubmit=""> <div class="signUpContainer"> + <label><b><label for="username">Blazer Id: </label><br></b></label> + <input class="form-control" id="bid" name="bid" placeholder="Enter BlazerId" required="" type="text"> <label><b><label for="fullname">Full Name: </label><br></b></label> <input class="form-control" id="fullname" name="fullname" placeholder="Enter Full Name" required="" type="text"> <label><b><label for="reason">Reason for Requesting Account: </label><br></b></label> diff --git a/run.py b/run.py index 15aef062f1a12892565c2e21b911ad9fc9cd5bcd..2bc594c736cf22caaa73dbb0598f999f477479a1 100644 --- a/run.py +++ b/run.py @@ -5,45 +5,42 @@ import time import signal import tasks - from flask import session from flask_socketio import SocketIO, join_room from app import create_app +from gevent import monkey +monkey.patch_all(subprocess=True) + config_name = os.getenv('FLASK_CONFIG') app = create_app(config_name) app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#' -socketio = SocketIO(app) +socketio = SocketIO(app, message_queue='amqp://reggie:reggie@ohpc:5672/socketio') +@socketio.on('connect') +def socket_connect(): + pass -@socketio.on('user connected') -def user_connected(json, methods=['GET', 'POST']): +@socketio.on('join_room') +def on_room(): - username = json["user"] room = str(session['uid']) - join_room(room) - - print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' connected.') print('\t\t\t|-----Room ID: ' + room) @socketio.on('request account') def request_account(json, methods=['GET', 'POST']): print (time.strftime("%m-%d-%Y_%H:%M:%S") + '\tQueue request received: ' + str(json)) - - room = str(session['uid']) - + sid = str(session['uid']) + print("Room: {}".format(sid)) try: - # create_account(json['username'], json['fullname'], json['reason']) - tasks.celery_create_account(json['username'], json['fullname'], json['reason'], room, socketio) - + tasks.celery_create_account.delay(json['username'], json['fullname'], json['reason'], session=sid) except Exception as e: print(time.strftime("%m-%d-%Y_%H:%M:%S") + "\tError in account creation: ", e) socketio.emit("Account creation failed", room) if __name__ == '__main__': - # app.run() socketio.run(app, host='0.0.0.0') diff --git a/tasks.py b/tasks.py index 04574a43514bc8a5647843e8a2463f2fd819a3b1..f596d1d231d5e1dd9ccda5d8614708a1190adf04 100644 --- a/tasks.py +++ b/tasks.py @@ -1,20 +1,26 @@ from celery import Celery import time from flask_socketio import SocketIO +import subprocess + from gevent import monkey monkey.patch_all(subprocess=True) -celery = Celery('flask_user_reg', broker='amqp://') +broker_url = 'amqp://reggie:reggie@ohpc:5672/' +celery = Celery('flask_user_reg', broker=broker_url) -# socketio = SocketIO(message_queue='amqp:///socketio') +socketio = SocketIO(message_queue='amqp://reggie:reggie@ohpc:5672/socketio') +def send_msg(event, room): + print("Post '{}' to room '{}'".format(event,room)) + socketio.emit(event, room=room) @celery.task -def celery_create_account(username, fullname, reason, room, socketio): - # Todo: Ravi's and Louis's code goes here +def celery_create_account(username, fullname, reason, session): + room = session print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' added to queue') - socketio.emit("creating account", room=room) - time.sleep(5) + send_msg('creating account', room) + print(username) + subprocess.call(["/opt/rabbitmq_agents/flask_producer.py", "ohpc_account_create", username]) print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tAccount successfully created for ' + username) - socketio.emit('account ready', room=room) - + send_msg('account ready', room)