Changeset 1130 for pykota/trunk/pykota/storages/pgstorage.py
- Timestamp:
- 10/02/03 22:23:18 (21 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/pykota/storages/pgstorage.py
r1115 r1130 21 21 # 22 22 # $Log$ 23 # Revision 1.13 2003/10/02 20:23:18 jalet 24 # Storage caching mechanism added. 25 # 23 26 # Revision 1.12 2003/08/17 14:20:25 jalet 24 27 # Bug fix by Oleg Biteryakov … … 64 67 # 65 68 66 from pykota.storage import PyKotaStorageError 67 from pykota.storage import StorageObject,StorageUser,StorageGroup,StoragePrinter,StorageLastJob,StorageUserPQuota,StorageGroupPQuota 69 from pykota.storage import PyKotaStorageError,BaseStorage,StorageObject,StorageUser,StorageGroup,StoragePrinter,StorageLastJob,StorageUserPQuota,StorageGroupPQuota 68 70 69 71 try : … … 74 76 raise PyKotaStorageError, "This python version (%s) doesn't seem to have the PygreSQL module installed correctly." % sys.version.split()[0] 75 77 76 class Storage :78 class Storage(BaseStorage) : 77 79 def __init__(self, pykotatool, host, dbname, user, passwd) : 78 80 """Opens the PostgreSQL database connection.""" 79 self.tool = pykotatool 80 self.debug = pykotatool.config.getDebug() 81 self.closed = 1 81 BaseStorage.__init__(self, pykotatool) 82 82 try : 83 83 (host, port) = host.split(":") … … 92 92 else : 93 93 self.closed = 0 94 if self.debug : 95 self.tool.logger.log_message("Database opened (host=%s, port=%s, dbname=%s, user=%s)" % (host, port, dbname, user), "debug") 96 97 def __del__(self) : 98 """Ensures that the database connection is closed.""" 99 self.close() 100 94 self.tool.logdebug("Database opened (host=%s, port=%s, dbname=%s, user=%s)" % (host, port, dbname, user)) 95 101 96 def close(self) : 102 97 """Closes the database connection.""" … … 104 99 self.database.close() 105 100 self.closed = 1 106 if self.debug : 107 self.tool.logger.log_message("Database closed.", "debug") 101 self.tool.logdebug("Database closed.") 108 102 109 103 def beginTransaction(self) : 110 104 """Starts a transaction.""" 111 105 self.database.query("BEGIN;") 112 if self.debug : 113 self.tool.logger.log_message("Transaction begins...", "debug") 106 self.tool.logdebug("Transaction begins...") 114 107 115 108 def commitTransaction(self) : 116 109 """Commits a transaction.""" 117 110 self.database.query("COMMIT;") 118 if self.debug : 119 self.tool.logger.log_message("Transaction committed.", "debug") 111 self.tool.logdebug("Transaction committed.") 120 112 121 113 def rollbackTransaction(self) : 122 114 """Rollbacks a transaction.""" 123 115 self.database.query("ROLLBACK;") 124 if self.debug : 125 self.tool.logger.log_message("Transaction aborted.", "debug") 116 self.tool.logdebug("Transaction aborted.") 126 117 127 118 def doSearch(self, query) : … … 131 122 query += ';' 132 123 try : 133 if self.debug : 134 self.tool.logger.log_message("QUERY : %s" % query, "debug") 124 self.tool.logdebug("QUERY : %s" % query) 135 125 result = self.database.query(query) 136 126 except pg.error, msg : … … 146 136 query += ';' 147 137 try : 148 if self.debug : 149 self.tool.logger.log_message("QUERY : %s" % query, "debug") 138 self.tool.logdebug("QUERY : %s" % query) 150 139 result = self.database.query(query) 151 140 except pg.error, msg : … … 164 153 return pg._quote(field, typ) 165 154 166 def getUser (self, username) :155 def getUserFromBackend(self, username) : 167 156 """Extracts user information given its name.""" 168 157 user = StorageUser(self, username) … … 178 167 return user 179 168 180 def getGroup (self, groupname) :169 def getGroupFromBackend(self, groupname) : 181 170 """Extracts group information given its name.""" 182 171 group = StorageGroup(self, groupname) … … 194 183 return group 195 184 196 def getPrinter (self, printername) :185 def getPrinterFromBackend(self, printername) : 197 186 """Extracts printer information given its name.""" 198 187 printer = StoragePrinter(self, printername) … … 206 195 printer.Exists = 1 207 196 return printer 208 209 def getUserGroups(self, user) : 210 """Returns the user's groups list.""" 211 groups = [] 212 result = self.doSearch("SELECT groupname FROM groupsmembers JOIN groups ON groupsmembers.groupid=groups.id WHERE userid=%s" % self.doQuote(user.ident)) 213 if result : 214 for record in result : 215 groups.append(self.getGroup(record.get("groupname"))) 216 return groups 217 218 def getGroupMembers(self, group) : 219 """Returns the group's members list.""" 220 groupmembers = [] 221 result = self.doSearch("SELECT * FROM groupsmembers JOIN users ON groupsmembers.userid=users.id WHERE groupid=%s" % self.doQuote(group.ident)) 222 if result : 223 for record in result : 224 user = StorageUser(self, record.get("username")) 225 user.ident = record.get("userid") 226 user.LimitBy = record.get("limitby") 227 user.AccountBalance = record.get("balance") 228 user.LifeTimePaid = record.get("lifetimepaid") 229 user.Email = record.get("email") 230 user.Exists = 1 231 groupmembers.append(user) 232 return groupmembers 233 234 def getUserPQuota(self, user, printer) : 197 198 def getUserPQuotaFromBackend(self, user, printer) : 235 199 """Extracts a user print quota.""" 236 200 userpquota = StorageUserPQuota(self, user, printer) … … 248 212 return userpquota 249 213 250 def getGroupPQuota (self, group, printer) :214 def getGroupPQuotaFromBackend(self, group, printer) : 251 215 """Extracts a group print quota.""" 252 216 grouppquota = StorageGroupPQuota(self, group, printer) … … 267 231 return grouppquota 268 232 269 def getPrinterLastJob (self, printer) :233 def getPrinterLastJobFromBackend(self, printer) : 270 234 """Extracts a printer's last job information.""" 271 235 lastjob = StorageLastJob(self, printer) … … 282 246 lastjob.Exists = 1 283 247 return lastjob 248 249 def getUserGroups(self, user) : 250 """Returns the user's groups list.""" 251 groups = [] 252 result = self.doSearch("SELECT groupname FROM groupsmembers JOIN groups ON groupsmembers.groupid=groups.id WHERE userid=%s" % self.doQuote(user.ident)) 253 if result : 254 for record in result : 255 groups.append(self.getGroup(record.get("groupname"))) 256 return groups 257 258 def getGroupMembers(self, group) : 259 """Returns the group's members list.""" 260 groupmembers = [] 261 result = self.doSearch("SELECT * FROM groupsmembers JOIN users ON groupsmembers.userid=users.id WHERE groupid=%s" % self.doQuote(group.ident)) 262 if result : 263 for record in result : 264 user = StorageUser(self, record.get("username")) 265 user.ident = record.get("userid") 266 user.LimitBy = record.get("limitby") 267 user.AccountBalance = record.get("balance") 268 user.LifeTimePaid = record.get("lifetimepaid") 269 user.Email = record.get("email") 270 user.Exists = 1 271 groupmembers.append(user) 272 return groupmembers 284 273 285 274 def getMatchingPrinters(self, printerpattern) :