Mercurial > public > src > rhodecode
diff pylons_app/lib/db_manage.py @ 66:163464441e0d
updated db manage script for creating interactive admin account and db
author | Marcin Kuzminski <marcin@python-blog.com> |
---|---|
date | Sat, 10 Apr 2010 19:07:13 +0200 |
parents | 736078908f37 |
children | ffd9ff6e2f33 |
line wrap: on
line diff
--- a/pylons_app/lib/db_manage.py Sat Apr 10 16:45:13 2010 +0200 +++ b/pylons_app/lib/db_manage.py Sat Apr 10 19:07:13 2010 +0200 @@ -1,23 +1,29 @@ import logging import sqlite3 -log = logging.getLogger(__name__) + import os import crypt from os.path import dirname as dn ROOT = dn(dn(dn(os.path.realpath(__file__)))) +logging.basicConfig(level=logging.DEBUG) def get_sqlite_conn_cur(): - conn = sqlite3.connect(os.path.join(ROOT, 'auth.sqlite')) + conn = sqlite3.connect(os.path.join(ROOT, 'hg_app.db')) cur = conn.cursor() return conn, cur -def create_user_table(): +def check_for_db(): + if os.path.isfile(os.path.join(ROOT, 'hg_app.db')): + raise Exception('database already exists') + +def create_tables(): """ Create a auth database """ + check_for_db() conn, cur = get_sqlite_conn_cur() try: - log.info('creating table %s', 'users') + logging.info('creating table %s', 'users') cur.execute("""DROP TABLE IF EXISTS users """) cur.execute("""CREATE TABLE users (user_id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -25,24 +31,31 @@ password TEXT, active INTEGER, admin INTEGER)""") - log.info('creating table %s', 'user_logs') - cur.execute("""DROP TABLE IF EXISTS user_logs """) - cur.execute("""CREATE TABLE user_logs + logging.info('creating table %s', 'user_loggings') + cur.execute("""DROP TABLE IF EXISTS user_loggings """) + cur.execute("""CREATE TABLE user_loggings (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, - last_action TEXT, - last_action_date DATETIME)""") + repository TEXT, + action TEXT, + action_date DATETIME)""") conn.commit() except: conn.rollback() raise cur.close() + +def admin_prompt(): + import getpass + username = raw_input('give username:') + password = getpass.getpass('Specify admin password:') + create_user(username, password, True) def create_user(username, password, admin=False): conn, cur = get_sqlite_conn_cur() password_crypt = crypt.crypt(password, '6a') - log.info('creating user %s', username) + logging.info('creating user %s', username) try: cur.execute("""INSERT INTO users values (?,?,?,?,?) """, (None, username, password_crypt, 1, admin)) @@ -50,3 +63,9 @@ except: conn.rollback() raise + +if __name__ == '__main__': + create_tables() + admin_prompt() + +