1 import pgdb |
1 import pgdb |
2 import config |
2 import os |
|
3 |
|
4 # BADSMELL: There must be an interface between both |
3 from bkmark import Bookmark |
5 from bkmark import Bookmark |
4 import os |
|
5 |
6 |
6 def sql_quote(str): |
7 def sql_quote(str): |
7 return pgdb._quote(str) |
8 return pgdb._quote(str) |
8 |
9 |
9 class MyDbConnexion: |
10 class MyDbConnexion: |
10 def __init__(self, name): |
11 def __init__(self, config): |
11 self.cnx = pgdb.connect(database = config.database, |
12 self.cnx = pgdb.connect(database = config.db_name, |
12 host = config.host+':%d'%config.port, |
13 host = config.db_host+':%d'%config.db_port, |
13 user = config.user, password = config.passwd) |
14 user = config.db_user, password = config.db_passwd) |
14 self.crs = self.cnx.cursor(); |
15 self.crs = self.cnx.cursor(); |
15 self.userid = self.get_user_id(name) |
16 def connect_user(self, name): |
16 if self.userid == None: |
17 if (self.userid == None): |
17 self.userid = self.create_user(name) |
18 self.userid = self._get_user_id(username) |
18 else: |
19 if self.userid == None: |
19 self.userid = self.userid[0] |
20 self.userid = self._create_user(username) |
20 def get_user_id(self, name): |
21 else: |
|
22 self.userid = self.userid[0] |
|
23 return self.userid |
|
24 def _get_user_id(self, name): |
21 self.crs.execute(""" |
25 self.crs.execute(""" |
22 SELECT id FROM users |
26 SELECT id FROM users |
23 WHERE name = %s; |
27 WHERE name = %s; |
24 """ % (sql_quote(name),)) |
28 """ % (sql_quote(name),)) |
25 return self.crs.fetchone() |
29 return self.crs.fetchone() |
26 def create_user(self, name): |
30 def _create_user(self, name): |
27 id = self.get_next_id('users') |
31 id = self.get_next_id('users') |
28 self.crs.execute(""" |
32 self.crs.execute(""" |
29 INSERT INTO users(id, name, full_name) |
33 INSERT INTO users(id, name, full_name) |
30 VALUES (%d, %s, %s); |
34 VALUES (%d, %s, %s); |
31 """ % (id, sql_quote(name), sql_quote(name))) |
35 """ % (id, sql_quote(name), sql_quote(name))) |
61 DELETE FROM bookmarks_keywords WHERE userid = %d; |
65 DELETE FROM bookmarks_keywords WHERE userid = %d; |
62 DELETE FROM bookmarks WHERE userid = %d; |
66 DELETE FROM bookmarks WHERE userid = %d; |
63 DELETE FROM preferences WHERE userid = %d; |
67 DELETE FROM preferences WHERE userid = %d; |
64 DELETE FROM keywords WHERE userid = %d; |
68 DELETE FROM keywords WHERE userid = %d; |
65 DELETE FROM db_sequence WHERE userid = %d; |
69 DELETE FROM db_sequence WHERE userid = %d; |
66 """ % (userid,userid,userid,userid,userid)) |
70 """ % ((userid,)*5)) |
67 self.cnx.commit() |
71 self.cnx.commit() |
68 def get_preferences(self): |
72 def get_preferences(self): |
69 self.crs.execute(""" |
73 self.crs.execute(""" |
70 SELECT p.keywords_box, |
74 SELECT p.keywords_box, |
71 p.keywords_sort, p.keywords_reverse, |
75 p.keywords_sort, p.keywords_reverse, |
390 WHERE seq_name = '%s' |
394 WHERE seq_name = '%s' |
391 AND userid = %d; |
395 AND userid = %d; |
392 """ % (id+1, seq_name, userid)) |
396 """ % (id+1, seq_name, userid)) |
393 return id |
397 return id |
394 |
398 |
395 def connect(username): |
399 def connect(config, username): |
396 return MyDbConnexion(username) |
400 db = MyDbConnexion(config) |
|
401 db.connect_user(username) |