# HG changeset patch # User michalr # Date 1298398218 0 # Node ID c3fb1e9fc1f7c5d3af6a98e3722473c15d98d1b3 # Parent ebb283da07f7165d7d9cc64b4dc39437c788812e diff -r ebb283da07f7 -r c3fb1e9fc1f7 frontend/mfrontend/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/__init__.py Tue Feb 22 18:10:18 2011 +0000 @@ -0,0 +1,36 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import flask +import ConfigParser +from mfrontend.views.frontend import frontend +from mfrontend import db, utils + + +#-- konfiguracja +config = ConfigParser.SafeConfigParser() +config.read('config.ini') +while True: + try: + DATABASE = config.get('Basic', 'Database') + DEBUG = config.getboolean('Basic', 'Debug') + SECRET_KEY = config.get('Basic', 'Secret_Key') + break + except ConfigParser.NoSectionError: + utils.default_ini() +#-- koniec konfiguracji + +app = flask.Flask(__name__) +app.register_module(frontend) +app.config.from_object(__name__) +app.config.from_envvar('MFRONTEND_SETTINGS', silent=True) + +@app.before_request +def before_request(): + """Funkcja wywoływana zawsze przed wykonaniem żądania""" + db.connect_db() + +@app.after_request +def after_request(response): + db.disconnect_db() + return response diff -r ebb283da07f7 -r c3fb1e9fc1f7 frontend/mfrontend/db.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/db.py Tue Feb 22 18:10:18 2011 +0000 @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sqlite3 +from flask import g +import ConfigParser + +config = ConfigParser.SafeConfigParser() +config.read('config.ini') + +def connect_db(): + """Funkcja łącząca się z bazą danych.""" + g.db = sqlite3.connect(config.get('Basic','Database')) + +def disconnect_db(): + """Funkcja zamykająca połączenie z bazą danych""" + g.db.close() + +def query_db(query, args=(), one=False): + """Funkcja ułatwiająca odpytywanie bazy danych, źródło: + http://flask.pocoo.org/docs/patterns/sqlite3/ + """ + cur = g.db.execute(query, args) + rv = [dict((cur.description[idx][0], value) + for idx, value in enumerate(row)) for row in cur.fetchall()] + return (rv[0] if rv else None) if one else rv diff -r ebb283da07f7 -r c3fb1e9fc1f7 frontend/mfrontend/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/utils.py Tue Feb 22 18:10:18 2011 +0000 @@ -0,0 +1,16 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import random + +def default_ini(): + """Funkcja tworząca domyślny plik .ini z ustawieniami aplikacji""" + config = ConfigParser.SafeConfigParser() + config.add_section('Basic') + config.set('Basic', 'Database', '../baza.sqlite') + config.set('Basic', 'Debug', '0') + config.set('Basic', 'Secret_Key', + ''.join(random.choice(string.ascii_letters for x in range(10)))) + with open('config.ini', 'wb') as configfile: + config.write(configfile) + diff -r ebb283da07f7 -r c3fb1e9fc1f7 frontend/mfrontend/views/__init__.py diff -r ebb283da07f7 -r c3fb1e9fc1f7 frontend/mfrontend/views/frontend.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/views/frontend.py Tue Feb 22 18:10:18 2011 +0000 @@ -0,0 +1,8 @@ +from flask import Module +from mfrontend import db +frontend = Module(__name__) + +@frontend.route('/') +def index(): + lol = db.query_db('select id, username, password from users') + return lol[0]['username'] diff -r ebb283da07f7 -r c3fb1e9fc1f7 frontend/runserver.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/runserver.py Tue Feb 22 18:10:18 2011 +0000 @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from mfrontend import app + +# Jeśli chcemy, aby frontend był dostępny z zewnątrz, +# należy dodać parametr host='0.0.0.0'. +app.run(debug=True)