blob: cc6cd0a25c13179def5841d917fd4785b662ebf3 [file] [log] [blame]
import json
from flask import Blueprint, request, session, render_template, url_for, flash
from flask_email import EmailMessage
from flask_login import logout_user, login_user
from werkzeug.utils import redirect
from flask_babel import lazy_gettext as _
import APIFactory
from utils import secured
from models import ProfileForm, UserEncoder, SigninForm, SignupForm
import providers
__author__ = 'hanl'
router = Blueprint('user', __name__,
template_folder='templates')
@router.route('/', methods=['GET'])
@secured
def index():
return redirect(url_for('.profile'))
@router.route('/profile', methods=['GET', 'POST'])
@secured
def profile():
user = providers.PROVIDER.get_user(session, True)
form = ProfileForm(obj=user)
if request.method == 'POST':
pass
elif request.method == 'GET':
return render_template('profile.html', form=form, submit=_('Update'),
complete=user.has_details())
@router.route('/profile/<user>', methods=['GET'])
def user_profile(user=None):
user = providers.User(username=user)
form = ProfileForm(obj=user)
if request.method == 'POST':
pass
elif request.method == 'GET':
return render_template('profile.html', form=form, submit=_('Update'))
# @router.route('/delete', methods=['POST', 'GET'])
def delete():
response = APIFactory.request('delete')
pass
@router.route('/login', methods=['GET', 'POST'])
def login():
form = SigninForm()
if request.method == 'POST':
if not form.validate():
return render_template('login.html', form=form)
else:
user = providers.User(username=form.username.data, password=form.password.data)
success = providers.PROVIDER.login(session, user)
if success:
login_user(user)
else:
return redirect(url_for('.login'))
print "the data serialized %s" % json.dumps(user, cls=UserEncoder)
return redirect(request.args.get('next') or url_for('.profile'))
elif request.method == 'GET':
providers.PROVIDER.is_admin("")
return render_template('login.html', form=form, submit=_('sign in'))
@router.route('/logout', methods=['GET'])
@secured
def logout():
if not providers.PROVIDER.logout(session):
redirect(url_for('.login'))
logout_user()
return redirect(url_for('.index'))
@router.route('/signup', methods=['GET', 'POST'])
@secured
def signup():
form = SignupForm()
if request.method == 'POST':
if not form.validate():
return render_template('signup.html', form=form)
else:
newuser = providers.User(firstName=form.firstName.data, password=form.password.data,
lastName=form.lastName.data,
email=form.email.data, username=form.username.data,
institution=form.institution.data, phone=form.phone.data,
address=form.address.data)
response = APIFactory.post("user/register",
data=json.dumps(newuser, cls=UserEncoder))
if response is None:
return redirect(url_for('.index'))
elif providers.MESSAGE_HANDLER.isError(response):
providers.MESSAGE_HANDLER.notify(response.json(), flash)
else:
# send email
email = EmailMessage(subject='successful registration', to=['micha.hanl@gmail.com'],
body=response.content)
email.send()
print "the response %s" % str(response.content)
providers.MESSAGE_HANDLER.notify("You successfully registered. Congrats", flash, category='success')
return render_template('signup.html', form=form, submit=_('sign up'))
elif request.method == 'GET':
return render_template('signup.html', form=form, submit=_('sign up'))
@router.route('/reset', methods=['POST', 'GET'])
def reset():
email = EmailMessage(subject='successful registration', to=['micha.hanl@gmail.com'],
body="This is a body")
print "the messages %s " % str(email.send())
return redirect(url_for('.index'))