annotate frontend/mfrontend/db.py @ 4:cf786ee26a22

MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
author michalr
date Tue, 22 Feb 2011 20:38:51 +0000
parents c3fb1e9fc1f7
children 3ba60dfc1d64
rev   line source
1
michalr
parents:
diff changeset
1 #!/usr/bin/python
michalr
parents:
diff changeset
2 # -*- coding: utf-8 -*-
michalr
parents:
diff changeset
3
michalr
parents:
diff changeset
4 import sqlite3
michalr
parents:
diff changeset
5 from flask import g
michalr
parents:
diff changeset
6 import ConfigParser
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
7 from mfrontend import utils
1
michalr
parents:
diff changeset
8
michalr
parents:
diff changeset
9 config = ConfigParser.SafeConfigParser()
michalr
parents:
diff changeset
10 config.read('config.ini')
michalr
parents:
diff changeset
11
michalr
parents:
diff changeset
12 def connect_db():
michalr
parents:
diff changeset
13 """Funkcja łącząca się z bazą danych."""
michalr
parents:
diff changeset
14 g.db = sqlite3.connect(config.get('Basic','Database'))
michalr
parents:
diff changeset
15
michalr
parents:
diff changeset
16 def disconnect_db():
michalr
parents:
diff changeset
17 """Funkcja zamykająca połączenie z bazą danych"""
michalr
parents:
diff changeset
18 g.db.close()
michalr
parents:
diff changeset
19
michalr
parents:
diff changeset
20 def query_db(query, args=(), one=False):
michalr
parents:
diff changeset
21 """Funkcja ułatwiająca odpytywanie bazy danych, źródło:
michalr
parents:
diff changeset
22 http://flask.pocoo.org/docs/patterns/sqlite3/
michalr
parents:
diff changeset
23 """
michalr
parents:
diff changeset
24 cur = g.db.execute(query, args)
michalr
parents:
diff changeset
25 rv = [dict((cur.description[idx][0], value)
michalr
parents:
diff changeset
26 for idx, value in enumerate(row)) for row in cur.fetchall()]
michalr
parents:
diff changeset
27 return (rv[0] if rv else None) if one else rv
4
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
28
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
29 def user_can_login(username, password):
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
30 """Funkcja sprawdzająca, czy podany użytkownik może sie zalogować
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
31 po podaniu danego w argumencie hasła.
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
32 @param username Nazwa użytkownika
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
33 @param password Hasło
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
34 @return Prawda, jeśli podane dane są akceptowalne, w przeciwnym
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
35 razie fałsz.
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
36 """
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
37 user = query_db('select * from users where username = ?',
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
38 [username], one=True)
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
39 if user is None: # Brak użytkownika o takiej nazwie
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
40 return False
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
41 if user['password'] == utils.hashPassword(password):
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
42 return True # Jeśli mamy takiego użytkownika, i hasło się zgadza
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
43 # Najwyraźniej jest taki użytkownik, ale hasło się nie zgadza
cf786ee26a22 MOŻNA SIĘ LOGOWAĆ I WYLOGOWAĆ jestem wspaniały
michalr
parents: 1
diff changeset
44 return False