Better error handling for user registration, better alerts

This commit is contained in:
Sander Ferdinand 2018-07-01 01:16:37 +02:00
parent 40705e5a34
commit 4044c5c644
6 changed files with 38 additions and 18 deletions

View File

@ -47,6 +47,24 @@ class User(base):
def __repr__(self):
return '<User %r>' % 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 {

View File

@ -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'))

View File

@ -2,19 +2,7 @@
{% block content %}
<!--main-->
<div class="container" id="main">
<div class="row">
<div class="col-lg-12">
{% with messages = get_flashed_messages() %}
{% if messages %}
<div class="alert alert-danger">
{% for message in messages %}
{{ message }}<br>
{% endfor %}
</div>
{% endif %}
{% endwith %}
</div>
</div>
{% include 'messages.html' %}
<div class="row">
<style>

View File

@ -3,6 +3,7 @@
<!-- Page Content -->
<div class="container" style="margin-bottom:140px;">
{% include 'messages.html' %}
<div class="row">

View File

@ -3,6 +3,8 @@
<!-- Page Content -->
<div class="container">
{% include 'messages.html' %}
{% if logged_in %}
{% if proposal %}
{% set headline = proposal.headline %}

7
wowfunding/validation.py Normal file
View File

@ -0,0 +1,7 @@
def val_username(value):
if len(value) >= 20:
raise Exception("username too long")
def val_email(value):
if len(value) >= 50:
raise Exception("email too long")