lib/my_db.py
changeset 65 b975a3d7606a
parent 57 31271426f879
child 66 a0aa025ee6a2
equal deleted inserted replaced
64:f1b93ddec9e0 65:b975a3d7606a
     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)