From 388c94deb866fdc9e25de31728ecdadecf4e5785 Mon Sep 17 00:00:00 2001 From: Marian Sigler Date: Wed, 19 Sep 2012 21:24:35 +0200 Subject: intermediate commit before I remove flask-login again --- app.py | 42 ++++++++++++++++++++++++++++++++++++------ default_settings.py | 1 + forms.py | 9 ++++++++- requirements.txt | 1 + templates/index.html | 10 ++++++++-- templates/login.html | 0 utils.py | 12 ++++++++++++ 7 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 default_settings.py create mode 100644 templates/login.html diff --git a/app.py b/app.py index 8166834..1bf035f 100644 --- a/app.py +++ b/app.py @@ -1,14 +1,28 @@ # -*- coding: utf-8 -*- +import os from flask import Flask, request -from utils import templated -from forms import RegisterForm +from flask_login import login_required, login_user, logout_user +from utils import templated, login_manager +from forms import RegisterForm, LoginForm + app = Flask(__name__) +app.config.from_object('default_settings') +if 'SPLINE_ACCOUNT_WEB_SETTINGS' in os.environ: + app.config.from_envvar('SPLINE_ACCOUNT_WEB_SETTINGS') +login_manager.setup_app(app) + -@app.route('/') +@app.route('/', methods=['GET', 'POST']) @templated('index.html') def index(): - return {} + form = LoginForm(request.form) + if request.method == 'POST' and form.validate(): + login_user(form.username.data) + return redirect(url_for('index')) + + return {'form': form} + @app.route('/register', methods=['GET', 'POST']) @templated('register.html') @@ -19,15 +33,31 @@ def register(): mail = form.mail.data password = form.password.data return '

501 Not Implemented

' + return {'form': form} -if __name__ == '__main__': - app.run(debug=True) +@app.route('/settings') +@templated('settings.html') +@login_required +def settings(): + return {} + + +@app.route('/logout') +@login_required +def logout(): + logout_user() + return redirect(url_for('index')) + +if __name__ == '__main__': + app.run(debug=True) + + # wir brauchen: # registrieren # login diff --git a/default_settings.py b/default_settings.py new file mode 100644 index 0000000..bcd641a --- /dev/null +++ b/default_settings.py @@ -0,0 +1 @@ +SECRET_KEY = 'remember to change this to something more random and private' diff --git a/forms.py b/forms.py index 273d02f..c560776 100644 --- a/forms.py +++ b/forms.py @@ -1,9 +1,16 @@ # -*- coding: utf-8 -*- from wtforms import Form, validators, TextField, PasswordField +username = TextField('Benutzername', [validators.Length(min=4, max=20)]) + class RegisterForm(Form): - username = TextField('Benutzername', [validators.Length(min=4, max=20)]) + username = username mail = TextField('E-Mail-Adresse', [validators.Length(min=6, max=50)]) password = PasswordField('Passwort', [validators.Required(), validators.EqualTo('password_confirm', message=u'Passwörter stimmen nicht überein')]) password_confirm = PasswordField(u'Passwort bestätigen') + + +class LoginForm(Form): + username = username + password = PasswordField('Passwort', [validators.Required()]) diff --git a/requirements.txt b/requirements.txt index 327efd6..1e537a1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ Flask==0.6 python-ldap +Flask-Login diff --git a/templates/index.html b/templates/index.html index 9ee3b0f..74ffb6b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,5 +1,11 @@ {%- extends 'base.html' %} +{%- from '_macros.html' import render_field %} {%- block content %} -

Willkommen bei spline accounts!

-

Account erstellen

+

Willkommen bei spline accounts!

+

Account erstellen

+
+ {{ render_field(form.username) }} + {{ render_field(form.password) }} + +
{%- endblock %} diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..e69de29 diff --git a/utils.py b/utils.py index 2f3b433..56d1f89 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from functools import wraps from flask import request, render_template +from flask_login import LoginManager, UserMixin # from http://flask.pocoo.org/docs/patterns/viewdecorators/#templating-decorator def templated(template=None): @@ -19,3 +20,14 @@ def templated(template=None): return render_template(template_name, **ctx) return decorated_function return decorator + +login_manager = LoginManager() +@login_manager.user_loader +def load_user(username): + raise NotImplemented() + + +class User(UserMixin): + def __init__(self, username): + self.username = username + -- cgit v1.2.3-1-g7c22