changeset 1:c3fb1e9fc1f7

(none)
author michalr
date Tue, 22 Feb 2011 18:10:18 +0000
parents ebb283da07f7
children e0061735c327
files frontend/mfrontend/__init__.py frontend/mfrontend/db.py frontend/mfrontend/utils.py frontend/mfrontend/views/__init__.py frontend/mfrontend/views/frontend.py frontend/runserver.py
diffstat 5 files changed, 94 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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
--- /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
--- /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)
+
--- /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']
--- /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)