Show
Ignore:
Timestamp:
10/02/03 22:23:18 (21 years ago)
Author:
jalet
Message:

Storage caching mechanism added.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/storages/pgstorage.py

    r1115 r1130  
    2121# 
    2222# $Log$ 
     23# Revision 1.13  2003/10/02 20:23:18  jalet 
     24# Storage caching mechanism added. 
     25# 
    2326# Revision 1.12  2003/08/17 14:20:25  jalet 
    2427# Bug fix by Oleg Biteryakov 
     
    6467# 
    6568 
    66 from pykota.storage import PyKotaStorageError 
    67 from pykota.storage import StorageObject,StorageUser,StorageGroup,StoragePrinter,StorageLastJob,StorageUserPQuota,StorageGroupPQuota 
     69from pykota.storage import PyKotaStorageError,BaseStorage,StorageObject,StorageUser,StorageGroup,StoragePrinter,StorageLastJob,StorageUserPQuota,StorageGroupPQuota 
    6870 
    6971try : 
     
    7476    raise PyKotaStorageError, "This python version (%s) doesn't seem to have the PygreSQL module installed correctly." % sys.version.split()[0] 
    7577 
    76 class Storage : 
     78class Storage(BaseStorage) : 
    7779    def __init__(self, pykotatool, host, dbname, user, passwd) : 
    7880        """Opens the PostgreSQL database connection.""" 
    79         self.tool = pykotatool 
    80         self.debug = pykotatool.config.getDebug() 
    81         self.closed = 1 
     81        BaseStorage.__init__(self, pykotatool) 
    8282        try : 
    8383            (host, port) = host.split(":") 
     
    9292        else :     
    9393            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             
    10196    def close(self) :     
    10297        """Closes the database connection.""" 
     
    10499            self.database.close() 
    105100            self.closed = 1 
    106             if self.debug : 
    107                 self.tool.logger.log_message("Database closed.", "debug") 
     101            self.tool.logdebug("Database closed.") 
    108102         
    109103    def beginTransaction(self) :     
    110104        """Starts a transaction.""" 
    111105        self.database.query("BEGIN;") 
    112         if self.debug : 
    113             self.tool.logger.log_message("Transaction begins...", "debug") 
     106        self.tool.logdebug("Transaction begins...") 
    114107         
    115108    def commitTransaction(self) :     
    116109        """Commits a transaction.""" 
    117110        self.database.query("COMMIT;") 
    118         if self.debug : 
    119             self.tool.logger.log_message("Transaction committed.", "debug") 
     111        self.tool.logdebug("Transaction committed.") 
    120112         
    121113    def rollbackTransaction(self) :      
    122114        """Rollbacks a transaction.""" 
    123115        self.database.query("ROLLBACK;") 
    124         if self.debug : 
    125             self.tool.logger.log_message("Transaction aborted.", "debug") 
     116        self.tool.logdebug("Transaction aborted.") 
    126117         
    127118    def doSearch(self, query) : 
     
    131122            query += ';' 
    132123        try : 
    133             if self.debug : 
    134                 self.tool.logger.log_message("QUERY : %s" % query, "debug") 
     124            self.tool.logdebug("QUERY : %s" % query) 
    135125            result = self.database.query(query) 
    136126        except pg.error, msg :     
     
    146136            query += ';' 
    147137        try : 
    148             if self.debug : 
    149                 self.tool.logger.log_message("QUERY : %s" % query, "debug") 
     138            self.tool.logdebug("QUERY : %s" % query) 
    150139            result = self.database.query(query) 
    151140        except pg.error, msg :     
     
    164153        return pg._quote(field, typ) 
    165154         
    166     def getUser(self, username) :     
     155    def getUserFromBackend(self, username) :     
    167156        """Extracts user information given its name.""" 
    168157        user = StorageUser(self, username) 
     
    178167        return user 
    179168        
    180     def getGroup(self, groupname) :     
     169    def getGroupFromBackend(self, groupname) :     
    181170        """Extracts group information given its name.""" 
    182171        group = StorageGroup(self, groupname) 
     
    194183        return group 
    195184        
    196     def getPrinter(self, printername) :         
     185    def getPrinterFromBackend(self, printername) :         
    197186        """Extracts printer information given its name.""" 
    198187        printer = StoragePrinter(self, printername) 
     
    206195            printer.Exists = 1 
    207196        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) :         
    235199        """Extracts a user print quota.""" 
    236200        userpquota = StorageUserPQuota(self, user, printer) 
     
    248212        return userpquota 
    249213         
    250     def getGroupPQuota(self, group, printer) :         
     214    def getGroupPQuotaFromBackend(self, group, printer) :         
    251215        """Extracts a group print quota.""" 
    252216        grouppquota = StorageGroupPQuota(self, group, printer) 
     
    267231        return grouppquota 
    268232         
    269     def getPrinterLastJob(self, printer) :         
     233    def getPrinterLastJobFromBackend(self, printer) :         
    270234        """Extracts a printer's last job information.""" 
    271235        lastjob = StorageLastJob(self, printer) 
     
    282246            lastjob.Exists = 1 
    283247        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         
    284273         
    285274    def getMatchingPrinters(self, printerpattern) :