##// END OF EJS Templates
fixed bug when there was no dbfile, and dbmanage raise an exception
marcink -
r243:9d64df49 default
parent child Browse files
Show More
@@ -1,95 +1,98 b''
1 1 from os.path import dirname as dn, join as jn
2 2 from pylons_app.lib.auth import get_crypt_password
3 3 from pylons_app.model import init_model
4 4 from pylons_app.model.db import User, Permission
5 5 from pylons_app.model.meta import Session, Base
6 6 from sqlalchemy.engine import create_engine
7 7 import logging
8 8 import os
9 9 import sys
10 10 ROOT = dn(dn(dn(os.path.realpath(__file__))))
11 11 sys.path.append(ROOT)
12 12
13 13
14 14
15 15 log = logging.getLogger('db manage')
16 16 log.setLevel(logging.DEBUG)
17 17 console_handler = logging.StreamHandler()
18 18 console_handler.setFormatter(logging.Formatter("%(asctime)s.%(msecs)03d"
19 19 " %(levelname)-5.5s [%(name)s] %(message)s"))
20 20 log.addHandler(console_handler)
21 21
22 22 class DbManage(object):
23 23 def __init__(self, log_sql):
24 24 self.dbname = 'hg_app.db'
25 25 dburi = 'sqlite:////%s' % jn(ROOT, self.dbname)
26 26 engine = create_engine(dburi, echo=log_sql)
27 27 init_model(engine)
28 28 self.sa = Session()
29 self.db_exists = False
29 30
30 31 def check_for_db(self, override):
31 32 log.info('checking for exisiting db')
32 33 if os.path.isfile(jn(ROOT, self.dbname)):
34 self.db_exists = True
33 35 log.info('database exisist')
34 36 if not override:
35 37 raise Exception('database already exists')
36 38
37 39 def create_tables(self, override=False):
38 40 """
39 41 Create a auth database
40 42 """
41 43 self.check_for_db(override)
42 44 if override:
43 45 log.info("database exisist and it's going to be destroyed")
46 if self.db_exists:
44 47 os.remove(jn(ROOT, self.dbname))
45 48 Base.metadata.create_all(checkfirst=override)
46 49 log.info('Created tables for %s', self.dbname)
47 50
48 51 def admin_prompt(self):
49 52 import getpass
50 53 username = raw_input('Specify admin username:')
51 54 password = getpass.getpass('Specify admin password:')
52 55 self.create_user(username, password, True)
53 56
54 57 def create_user(self, username, password, admin=False):
55 58 log.info('creating administrator user %s', username)
56 59
57 60 new_user = User()
58 61 new_user.username = username
59 62 new_user.password = get_crypt_password(password)
60 63 new_user.admin = admin
61 64 new_user.active = True
62 65
63 66 try:
64 67 self.sa.add(new_user)
65 68 self.sa.commit()
66 69 except:
67 70 self.sa.rollback()
68 71 raise
69 72
70 73 def create_permissions(self):
71 74 #module.(access|create|change|delete)_[name]
72 75 perms = [('admin.access_home', 'Access to admin user view'),
73 76
74 77 ]
75 78
76 79 for p in perms:
77 80 new_perm = Permission()
78 81 new_perm.permission_name = p[0]
79 82 new_perm.permission_longname = p[1]
80 83 try:
81 84 self.sa.add(new_perm)
82 85 self.sa.commit()
83 86 except:
84 87 self.sa.rollback()
85 88 raise
86 89
87 90
88 91
89 92 if __name__ == '__main__':
90 93 dbmanage = DbManage(log_sql=True)
91 94 dbmanage.create_tables(override=True)
92 95 dbmanage.admin_prompt()
93 96 dbmanage.create_permissions()
94 97
95 98
General Comments 0
You need to be logged in to leave comments. Login now