Show
Ignore:
Timestamp:
02/23/04 23:53:21 (20 years ago)
Author:
jalet
Message:

Don't retrieve data when it's not needed, to avoid database queries

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/storage.py

    r1333 r1358  
    2222# 
    2323# $Log$ 
     24# Revision 1.42  2004/02/23 22:53:21  jalet 
     25# Don't retrieve data when it's not needed, to avoid database queries 
     26# 
    2427# Revision 1.41  2004/02/04 17:12:33  jalet 
    2528# Removing a printer from a printers group should work now. 
     
    257260        self.PricePerPage = None 
    258261        self.PricePerJob = None 
    259         self.LastJob = None 
    260          
     262         
     263    def __getattr__(self, name) :     
     264        """Delays data retrieval until it's really needed.""" 
     265        if name == "LastJob" :  
     266            self.LastJob = self.parent.getPrinterLastJob(self) 
     267            return self.LastJob 
     268        else : 
     269            raise AttributeError, name 
     270             
    261271    def addJobToHistory(self, jobid, user, pagecounter, action, jobsize=None, jobprice=None, filename=None, title=None, copies=None, options=None) : 
    262272        """Adds a job to the printer's history.""" 
     
    309319        self.HardLimit = None 
    310320        self.DateLimit = None 
    311         self.ParentPrintersUserPQuota = (user.Exists and printer.Exists and parent.getParentPrintersUserPQuota(self)) or [] 
     321         
     322    def __getattr__(self, name) :     
     323        """Delays data retrieval until it's really needed.""" 
     324        if name == "ParentPrintersUserPQuota" :  
     325            self.ParentPrintersUserPQuota = (self.User.Exists and self.Printer.Exists and self.parent.getParentPrintersUserPQuota(self)) or [] 
     326            return self.ParentPrintersUserPQuota 
     327        else : 
     328            raise AttributeError, name 
    312329         
    313330    def setDateLimit(self, datelimit) :     
     
    383400    def __init__(self, parent) : 
    384401        StorageObject.__init__(self, parent) 
    385         self.User = None 
    386         self.Printer = None 
     402        self.UserName = None 
     403        self.PrinterName = None 
    387404        self.JobId = None 
    388405        self.PrinterPageCounter = None 
     
    396413        self.JobOptions = None 
    397414         
     415    def __getattr__(self, name) :     
     416        """Delays data retrieval until it's really needed.""" 
     417        if name == "User" :  
     418            self.User = self.parent.getUser(self.UserName) 
     419            return self.User 
     420        elif name == "Printer" :     
     421            self.Printer = self.parent.getPrinter(self.PrinterName) 
     422            return self.Printer 
     423        else : 
     424            raise AttributeError, name 
     425         
    398426class StorageLastJob(StorageJob) : 
    399427    """Printer's Last Job class.""" 
     
    401429        StorageJob.__init__(self, parent) 
    402430        self.Printer = printer 
     431        self.UserName = None 
     432         
     433    def __getattr__(self, name) :     
     434        """Delays data retrieval until it's really needed.""" 
     435        if name == "User" :  
     436            self.User = self.parent.getUser(self.UserName) 
     437            return self.User 
     438        else :     
     439            raise AttributeError, name 
    403440         
    404441    def setSize(self, jobsize) :