annotate frontend/mfrontend/views/frontend.py @ 10:58a993029d9f

Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Mon, 07 Mar 2011 10:47:48 +0100
parents d86794939fe4
children c87f82a15606
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
10
58a993029d9f Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 7
diff changeset
5 from flask import escape, session, redirect, flash, abort, g
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']) :
10
58a993029d9f Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 7
diff changeset
29 session['user_id'] = db.get_user_id(request.form['username'])
58a993029d9f Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 7
diff changeset
30 session['user_name'] = request.form['username']
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
31 session['logged_in'] = True
7
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
32 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
33 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
34 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
35 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
36 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
37 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
38 flash(e)
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
39 return redirect(url_for('index'))
3
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
40 return render_template('login.html')
79fc37fe85a6 Zabawy z Flaskiem ciąg dalszy, zaczyna to jakoś wyglądać
michalr
parents: 1
diff changeset
41
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
42 @frontend.route('/logout/')
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
43 def logout():
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
44 """Funkcja powoduje wyczyszczenie sesji użytkownika,
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
45 a w efekcie wylogowanie z systemu.
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
46 """
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
47 session.clear()
10
58a993029d9f Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 7
diff changeset
48 g.user = None
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
49 flash('Wylogowano')
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 3
diff changeset
50 return redirect(url_for('index'))
7
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
51
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
52 @frontend.route('/register/', methods=['GET', 'POST'])
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
53 def register():
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
54 """Funkcja do rejestrowania użytkowników."""
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
55 if request.method == 'POST':
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
56 try:
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
57 db.register_user(request.form['username'],
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
58 request.form['password'])
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
59 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
60 return redirect(url_for('index'))
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
61 except exceptions.UserExists as e:
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
62 flash(e)
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
63 return redirect(url_for('register'))
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
64 return render_template('register.html')
d86794939fe4 Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 6
diff changeset
65