Mercurial > kraina_muminkow
annotate frontend/mfrontend/db.py @ 5:3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
author | Michał Rudowicz <michal.rudowicz@fl9.eu> |
---|---|
date | Sun, 27 Feb 2011 09:33:03 +0100 |
parents | cf786ee26a22 |
children | 27d63cac76ac |
rev | line source |
---|---|
1 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 import sqlite3 | |
5 from flask import g | |
6 import ConfigParser | |
4 | 7 from mfrontend import utils |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
8 from contextlib import closing |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
9 import os.path |
1 | 10 |
11 config = ConfigParser.SafeConfigParser() | |
12 config.read('config.ini') | |
13 | |
14 def connect_db(): | |
15 """Funkcja łącząca się z bazą danych.""" | |
16 g.db = sqlite3.connect(config.get('Basic','Database')) | |
17 | |
18 def disconnect_db(): | |
19 """Funkcja zamykająca połączenie z bazą danych""" | |
20 g.db.close() | |
21 | |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
22 def init_db(): |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
23 """Funkcja przeprowadzająca inicjalizację bazy danych zgodnie |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
24 z plikiem schema.sql. Na podstawie kodu ze strony |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
25 http://flask.pocoo.org/docs/patterns/sqlite3/#initial-schemas |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
26 Instalacja powiedzie się tylko wtedy, gdy w obecnym katalogu |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
27 nie istnieje plik '.installed'. Plik taki jest tworzony |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
28 po każdej instalacji, aby zapobiec operacjom na |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
29 istniejących bazach. |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
30 @return True, jeśli instalacja została wykonana, |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
31 False, jeśli plik '.installed' istnieje. |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
32 """ |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
33 if not os.path.isfile('.installed'): |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
34 with open('schema.sql', 'r') as f: |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
35 g.db.cursor().executescript(f.read()) |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
36 g.db.commit() |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
37 open('.installed', 'w').close() |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
38 return True |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
39 else: |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
40 return False |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
41 |
1 | 42 def query_db(query, args=(), one=False): |
43 """Funkcja ułatwiająca odpytywanie bazy danych, źródło: | |
44 http://flask.pocoo.org/docs/patterns/sqlite3/ | |
45 """ | |
46 cur = g.db.execute(query, args) | |
47 rv = [dict((cur.description[idx][0], value) | |
48 for idx, value in enumerate(row)) for row in cur.fetchall()] | |
49 return (rv[0] if rv else None) if one else rv | |
4 | 50 |
51 def user_can_login(username, password): | |
52 """Funkcja sprawdzająca, czy podany użytkownik może sie zalogować | |
53 po podaniu danego w argumencie hasła. | |
54 @param username Nazwa użytkownika | |
55 @param password Hasło | |
56 @return Prawda, jeśli podane dane są akceptowalne, w przeciwnym | |
57 razie fałsz. | |
58 """ | |
59 user = query_db('select * from users where username = ?', | |
60 [username], one=True) | |
61 if user is None: # Brak użytkownika o takiej nazwie | |
62 return False | |
63 if user['password'] == utils.hashPassword(password): | |
64 return True # Jeśli mamy takiego użytkownika, i hasło się zgadza | |
65 # Najwyraźniej jest taki użytkownik, ale hasło się nie zgadza | |
66 return False | |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
67 |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
68 def register_user(username, password): |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
69 """Funkcja rejestrująca nowego użytkownika w systemie. |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
70 @param username Nazwa nowego użytkownika |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
71 @param password Hasło w czystym tekście, funkcja sama |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
72 zajmie się hashowaniem |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
73 """ |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
74 return |