Show
Ignore:
Timestamp:
02/21/06 00:22:17 (18 years ago)
Author:
jerome
Message:

Added userful helpers to retrieve all interesting datas with a single query
(LDAP will use more queries, as usual)

Files:
1 modified

Legend:

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

    r2721 r2722  
    827827        return usersandquotas 
    828828                 
     829    def getMatchingUserPQuotas(self, pnames = ["*"], unames=["*"]) :     
     830        """Returns all printers, users and users print quota entries which match a set of names.""" 
     831        printers = {} 
     832        users = {} 
     833        upquotas = {} 
     834        for printer in self.getMatchingPrinters(",".join(pnames)) : 
     835            printers[printer.Name] = printer 
     836        for user in self.getMatchingUsers(",".join(unames)) : 
     837            users[user.Name] = user 
     838        for (p, printer) in printers.items() : 
     839            for (u, user) in users.items() : 
     840                upqkey = "%s@%s" % (u, p) 
     841                upquotas[upqkey] = self.getUserPQuota(user, printer) 
     842        return (printers, users, upquotas) 
     843         
     844    def getMatchingGroupPQuotas(self, pnames = ["*"], gnames=["*"]) :     
     845        """Returns all printers, groups and groups print quota entries which match a set of names.""" 
     846        printers = {} 
     847        groups = {} 
     848        gpquotas = {} 
     849        for printer in self.getMatchingPrinters(",".join(pnames)) : 
     850            printers[printer.Name] = printer 
     851        for group in self.getMatchingGroups(",".join(gnames)) : 
     852            groups[group.Name] = group 
     853        for (p, printer) in printers.items() : 
     854            for (g, group) in groups.items() : 
     855                gpqkey = "%s@%s" % (g, p) 
     856                gpquotas[gpqkey] = self.getGroupPQuota(group, printer) 
     857        return (printers, groups, gpquotas) 
     858         
    829859    def getPrinterGroupsAndQuotas(self, printer, names=["*"]) :         
    830860        """Returns the list of groups which uses a given printer, along with their quotas."""