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