diff 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
line wrap: on
line diff
--- a/frontend/mfrontend/db.py	Tue Feb 22 20:38:51 2011 +0000
+++ b/frontend/mfrontend/db.py	Sun Feb 27 09:33:03 2011 +0100
@@ -5,6 +5,8 @@
 from flask import g
 import ConfigParser
 from mfrontend import utils
+from contextlib import closing
+import os.path
 
 config = ConfigParser.SafeConfigParser()
 config.read('config.ini')
@@ -17,6 +19,26 @@
     """Funkcja zamykająca połączenie z bazą danych"""
     g.db.close()
 
+def init_db():
+    """Funkcja przeprowadzająca inicjalizację bazy danych zgodnie
+       z plikiem schema.sql. Na podstawie kodu ze strony
+       http://flask.pocoo.org/docs/patterns/sqlite3/#initial-schemas
+       Instalacja powiedzie się tylko wtedy, gdy w obecnym katalogu
+       nie istnieje plik '.installed'. Plik taki jest tworzony
+       po każdej instalacji, aby zapobiec operacjom na
+       istniejących bazach.
+       @return True, jeśli instalacja została wykonana,
+               False, jeśli plik '.installed' istnieje.
+    """
+    if not os.path.isfile('.installed'):
+        with open('schema.sql', 'r') as f:
+            g.db.cursor().executescript(f.read())
+        g.db.commit()
+        open('.installed', 'w').close()
+        return True
+    else:
+        return False
+
 def query_db(query, args=(), one=False):
     """Funkcja ułatwiająca odpytywanie bazy danych, źródło:
        http://flask.pocoo.org/docs/patterns/sqlite3/
@@ -42,3 +64,11 @@
         return True     # Jeśli mamy takiego użytkownika, i hasło się zgadza
     # Najwyraźniej jest taki użytkownik, ale hasło się nie zgadza
     return False
+
+def register_user(username, password):
+    """Funkcja rejestrująca nowego użytkownika w systemie.
+       @param username Nazwa nowego użytkownika
+       @param password Hasło w czystym tekście, funkcja sama
+                       zajmie się hashowaniem
+    """
+    return