Initial cleanup of the codebase

Change-Id: Idbc92ea3c2d7ee4d4807d1d83ceee9a299b9a9f7
diff --git a/service/app/user.py b/service/app/user.py
new file mode 100644
index 0000000..b97d138
--- /dev/null
+++ b/service/app/user.py
@@ -0,0 +1,122 @@
+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 app 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'))