annotate frontend/mfrontend/views/frontend.py @ 7:d86794939fe4

Rejestracja użytkowników
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Mon, 28 Feb 2011 11:34:20 +0100
parents 27d63cac76ac
children 58a993029d9f
rev   line source
3
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
1 #!/usr/bin/python
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
2 # -*- coding: utf-8 -*-
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
3
5
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
4 from flask import Module, render_template, request, url_for
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
5 from flask import escape, session, redirect, flash, abort
6
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
6 from mfrontend import db, utils, exceptions
1
michalr
parents:
diff changeset
7 frontend = Module(__name__)
michalr
parents:
diff changeset
8
michalr
parents:
diff changeset
9 @frontend.route('/')
michalr
parents:
diff changeset
10 def index():
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
11 return render_template('hello.html')
3
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
12
6
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
13 @frontend.route('/install/')
5
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
14 def install():
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
15 """Instaluje aplikację, tworząc pustą bazę danych
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
16 według schematu.
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
17 """
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
18 if db.init_db():
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
19 return render_template('install_ok.html')
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
20 else:
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
21 abort(404)
3ba60dfc1d64 Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 4
diff changeset
22
6
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
23 @frontend.route('/login/', methods=['GET', 'POST'])
3
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
24 def login():
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
25 if request.method == 'POST':
6
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
26 try:
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
27 if db.user_can_login(request.form['username'],
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
28 request.form['password']) :
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
29 session['logged_in'] = True
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
30 session['logged_user'] = request.form['username']
7
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
31 flash(u'Zalogowano')
6
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
32 return redirect(url_for('index'))
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
33 else:
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
34 raise exceptions.BadPasswordOrUsername()
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
35 except (exceptions.UserNotActivated,
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
36 exceptions.BadPasswordOrUsername) as e:
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
37 flash(e)
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
38 return redirect(url_for('index'))
3
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
39 return render_template('login.html')
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
40
6
27d63cac76ac Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 5
diff changeset
41 @frontend.route('/logout/')
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
42 def logout():
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
43 """Funkcja powoduje wyczyszczenie sesji użytkownika,
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
44 a w efekcie wylogowanie z systemu.
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
45 """
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
46 session.clear()
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
47 flash('Wylogowano')
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
48 return redirect(url_for('index'))
7
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
49
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
50 @frontend.route('/register/', methods=['GET', 'POST'])
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
51 def register():
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
52 """Funkcja do rejestrowania użytkowników."""
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
53 if request.method == 'POST':
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
54 try:
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
55 db.register_user(request.form['username'],
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
56 request.form['password'])
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
57 flash(u'Konto założone, poczekaj na akceptację administratora.')
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
58 return redirect(url_for('index'))
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
59 except exceptions.UserExists as e:
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
60 flash(e)
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
61 return redirect(url_for('register'))
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
62 return render_template('register.html')
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
63