# -*- coding: utf8 -*- import string, MySQLdb, mod_python, hashlib # Коннектор к базе def Connect(host, user, passwd, db): db = MySQLdb.Connect(host=host, user=user, passwd=passwd, db=db, use_unicode=True, charset='utf8') return db.cursor() # Формируем запрос def Query(c, query): result = c.execute(query) return result # Делаем запрос к БД и вытаскиваем одну запись def SelectOne(db, query): result = db.execute(query) row = db.fetchone() return row # Делаем запрос к БД и вытаскиваем все записи def SelectAll(db, query): result = db.execute(query) rows = db.fetchall() return rows # Шаблонизатор: подменяет переменные значениями def ReplaceTmpl(tmpl, var_list): lines = open(tmpl).readlines() src = "%s"*len(lines) % tuple(lines) for key, var in var_list.items(): src = string.replace( src, key, var ) return src # Возвращает хэш пароля def md5(pass) m = hashlib.md5() m.update(pass) pwd = m.hexdigest() return pwd def index(req, username, password): # Присланная через форму инфа: postname = req.form['username'] postpass = req.form['password'] ### коннектимся к базе. вынести во внешний файл-конфиг (параметры) db = Connect('localhost', 'root', 'galka', 'test_db') # Получаем хэш реального пароля realpass = SelectOne (db, 'SELECT password FROM users WHERE username="%s"' % postAuth[0]) # Сверяем хэши паролей if md5(postpass) == realpass: # Определяем ID организации по логину: SearchTmpl = SelectOne (db, 'SELECT org FROM users WHERE username="%s"' % postname) # Делаем выборку для всех записей с полученным ID организации result = SelectAll (db, 'SELECT * FROM payments WHERE org RLIKE "%s"' % SearchTmpl) ### Путь к шаблону. Вынести во внешний файл-конфиг lineTmpl = '/var/www/line.tmpl' # Формируем вывод body = '' for row in result: body = body + ReplaceTmpl(lineTmpl, {'$date$':str(row[0]), '$session$':str(row[1]), '$org$':str(row[2]), '$sum$':str(row[3]), '$name$':str(row[4])}) top = """\ """ bottom = """\
Date Session Organisation Sum Name
""" page = top + body + bottom return page;