Mercurial > kraina_muminkow
changeset 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 |
files | frontend/mfrontend/db.py frontend/mfrontend/templates/install_ok.html frontend/mfrontend/views/frontend.py frontend/schema.sql |
diffstat | 4 files changed, 52 insertions(+), 1 deletions(-) [+] |
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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/templates/install_ok.html Sun Feb 27 09:33:03 2011 +0100 @@ -0,0 +1,5 @@ +{% extends "layout.html" %} +{% block body %} + <h2>Instalacja</h2> + <p>Instalacja przebiegła poprawnie.</p> +{% endblock %}
--- a/frontend/mfrontend/views/frontend.py Tue Feb 22 20:38:51 2011 +0000 +++ b/frontend/mfrontend/views/frontend.py Sun Feb 27 09:33:03 2011 +0100 @@ -1,7 +1,8 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from flask import Module, render_template, request, url_for, escape, session, redirect, flash +from flask import Module, render_template, request, url_for +from flask import escape, session, redirect, flash, abort from mfrontend import db, utils frontend = Module(__name__) @@ -9,6 +10,16 @@ def index(): return render_template('hello.html') +@frontend.route('/install') +def install(): + """Instaluje aplikację, tworząc pustą bazę danych + według schematu. + """ + if db.init_db(): + return render_template('install_ok.html') + else: + abort(404) + @frontend.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST':