Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mmoo97/flask_user_reg
  • tr27p/flask_user_reg
  • ishan747/flask_user_reg
  • louistw/flask_user_reg
  • krish94/flask_user_reg
  • rrand11/flask_user_reg
  • ravi89/flask_user_reg
7 results
Show changes
docs/images/site_example.png

478 KiB

amqp==2.5.2
billiard==3.6.2.0
celery==4.4.0
Click==7.0
dominate==2.3.5
Flask==1.0.2
dominate==2.4.0
Flask==1.1.1
Flask-Bootstrap==3.3.7.1
Flask-Login==0.4.1
Flask-SocketIO==4.2.1
Flask-Testing==0.7.1
Flask-WTF==0.14.2
gevent==1.4.0
greenlet==0.4.15
importlib-metadata==1.5.0
itsdangerous==1.1.0
Jinja2==2.10
Mako==1.0.7
Jinja2==2.11.1
kombu==4.6.7
MarkupSafe==1.1.1
pbr==5.1.3
python-dateutil==1.5
python-editor==1.0.4
pytz==2013.7
six==1.12.0
stevedore==1.30.1
virtualenv==16.4.3
virtualenv-clone==0.5.1
virtualenvwrapper==4.8.4
pika==1.1.0
python-engineio==3.11.2
python-socketio==4.4.0
pytz==2019.3
six==1.14.0
vine==1.3.0
visitor==0.1.3
Werkzeug==0.14.1
WTForms==2.2.1
Werkzeug==1.0.0
zipp==3.0.0
# run.py
import os
import time
import tasks
import vars
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'] = vars.key
socketio = SocketIO(app, message_queue= vars.message_queue)
@socketio.on('connect')
def socket_connect():
pass
@socketio.on('join_room')
def on_room(json):
room = str(session['uid'])
referrer = json['referrer']
join_room(room)
print('\t\t\t|-----Room ID: ' + room)
print('\t\t\t|-----Referrer: ' + referrer)
@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'])
print("Room: {}".format(room))
try:
tasks.celery_create_account.delay(json['username'], json['fullname'], json['reason'], session=room)
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')
from celery import Celery
import time
from flask_socketio import SocketIO
import subprocess
import vars
from gevent import monkey
monkey.patch_all(subprocess=True)
broker_url = vars.broker_url
celery = Celery('flask_user_reg', broker=broker_url)
socketio = SocketIO(message_queue=vars.message_queue)
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, session):
room = session
print(time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' added to queue')
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)
send_msg('account ready', room)
import pika
import sys
# Begin RabbitMQ process.
credentials = pika.PlainCredentials('reggie', 'reggie')
parameters = pika.ConnectionParameters('ood',
5672,
'/',
credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
node = sys.argv[1] if len(sys.argv) > 1 else 'info'
message = ' '.join(sys.argv[2:]) or 'Hello World!'
channel.basic_publish(
exchange='direct_logs', routing_key=node, body=message)
print(" [x] Sent %r:%r" % (node, message))
connection.close()
# tests.py
import unittest
import flask
from flask import abort, url_for, g
from flask_testing import TestCase
from app import create_app
class TestBase(TestCase):
def create_app(self):
app = create_app('testing')
return app
def setUp(self):
"""
Will be called before every test
"""
app = create_app('testing')
return app
def tearDown(self):
"""
Will be called after every test
"""
class TestModels(TestBase):
# TODO: make tests
pass
class TestViews(TestBase):
# TODO: make tests
def test_index_view(self):
"""
Test that homepage is accessible.
"""
response = self.client.get(url_for('index'))
self.assertEqual(response.status_code, 200)
# with self.app.test_client() as c:
# rv = c.get('/')
# assert flask.session['REMOTE_USER'] == 'bobby'
def test_page_resources(self):
"""
Test that all resources load are found.
"""
with self.app.test_request_context('/?redir=test'):
assert flask.request.path == '/'
c = flask.app.request.args['redir']
assert c == 'test'
# def test_logout_view(self):
# """
# Test that logout link is inaccessible without login
# and redirects to login page then to logout
# """
# target_url = url_for('auth.logout')
# redirect_url = url_for('auth.login', next=target_url)
# response = self.client.get(target_url)
# self.assertEqual(response.status_code, 302)
# self.assertRedirects(response, redirect_url)\
class TestErrorPages(TestBase):
def test_403_forbidden(self):
# create route to abort the request with the 403 Error
@self.app.route('/403')
def forbidden_error():
abort(403)
response = self.client.get('/403')
self.assertEqual(response.status_code, 403)
self.assertTrue("403 Error" in response.data)
def test_404_not_found(self):
response = self.client.get('/nothinghere')
self.assertEqual(response.status_code, 404)
self.assertTrue("404 Error" in response.data)
def test_500_internal_server_error(self):
# create route to abort the request with the 500 Error
@self.app.route('/500')
def internal_server_error():
abort(500)
response = self.client.get('/500')
self.assertEqual(response.status_code, 500)
self.assertTrue("500 Error" in response.data)
if __name__ == '__main__':
unittest.main()
id = ''
password = ''
key = ''
broker_url = 'amqp://' + id + ':' + password + '@ohpc:5672/'
message_queue = broker_url + 'socketio'
default_referrer = "https://docs.uabgrid.uab.edu/wiki/Cheaha_Quick_Start"