diff --git a/wowfunding/orm/orm.py b/wowfunding/orm/orm.py index 6edb3b3..8f995a9 100644 --- a/wowfunding/orm/orm.py +++ b/wowfunding/orm/orm.py @@ -47,6 +47,24 @@ class User(base): def __repr__(self): return '' % self.username + @classmethod + def add(cls, username, password, email): + from wowfunding.factory import db_session + from wowfunding.validation import val_username, val_email + + try: + # validate incoming username/email + val_username(username) + val_email(email) + + user = User(username, password, email) + db_session.add(user) + db_session.commit() + db_session.flush() + return user + except Exception as ex: + db_session.rollback() + raise class Proposal(base): __tablename__ = "proposals" @@ -91,6 +109,8 @@ class Proposal(base): raise Exception('wrong category') self.category = category + + @property def json(self): return { diff --git a/wowfunding/routes.py b/wowfunding/routes.py index cb83865..408cf89 100644 --- a/wowfunding/routes.py +++ b/wowfunding/routes.py @@ -142,14 +142,16 @@ def register(): if request.method == 'GET': return make_response(render_template('register.html')) + username = request.form['username'] + password = request.form['password'] + email = request.form['email'] + try: - user = User(request.form['username'], request.form['password'], request.form['email']) - db_session.add(user) - db_session.commit() - flash('User successfully registered') + user = User.add(username, password, email) + flash('Successfully registered. No confirmation email required. You can login!') return redirect(url_for('login')) except Exception as ex: - flash('Could not register user.') + flash('Could not register user: %s' % str(ex), 'error') return make_response(render_template('register.html')) diff --git a/wowfunding/templates/login.html b/wowfunding/templates/login.html index ce31105..5e0107c 100644 --- a/wowfunding/templates/login.html +++ b/wowfunding/templates/login.html @@ -2,19 +2,7 @@ {% block content %}
-
-
- {% with messages = get_flashed_messages() %} - {% if messages %} -
- {% for message in messages %} - {{ message }}
- {% endfor %} -
- {% endif %} - {% endwith %} -
-
+ {% include 'messages.html' %}