Changeset 791 for pykota/trunk

Show
Ignore:
Timestamp:
02/10/03 13:07:31 (22 years ago)
Author:
jalet
Message:

Now repykota should output the recorded total page number for each printer too.

Location:
pykota/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/edpykota

    r775 r791  
    1717# 
    1818# $Log$ 
     19# Revision 1.20  2003/02/10 12:07:30  jalet 
     20# Now repykota should output the recorded total page number for each printer too. 
     21# 
    1922# Revision 1.19  2003/02/09 13:40:29  jalet 
    2023# typo 
     
    177180                if self.isValidName(pname) : 
    178181                    self.storage.addPrinter(pname) 
    179                     printernames = [ pname ] 
     182                    printernames = [ (pname, 0) ] 
    180183                else :     
    181184                    raise PyKotaToolError, _("Invalid printer name %s") % pname 
     
    197200            self.logger.log_message(_("Hard limit %i is less than soft limit %i, values will be exchanged.") % (hardlimit, softlimit), "warn") 
    198201            (softlimit, hardlimit) = (hardlimit, softlimit) 
    199         for printer in printernames : 
     202        for (printer, printerpagecounter) in printernames : 
    200203            if options["prototype"] : 
    201204                if options["users"] : 
  • pykota/trunk/bin/repykota

    r775 r791  
    1717# 
    1818# $Log$ 
     19# Revision 1.10  2003/02/10 12:07:30  jalet 
     20# Now repykota should output the recorded total page number for each printer too. 
     21# 
    1922# Revision 1.9  2003/02/09 13:40:29  jalet 
    2023# typo 
     
    109112        if not printernames : 
    110113            raise PyKotaToolError, _("There's no printer matching %s") % options["printer"] 
    111         for printer in printernames : 
     114        for (printer, printerpagecounter) in printernames : 
    112115            print _("*** Report for %s quota on printer %s") % ((options["users"] and "user") or "group", printer) 
    113116            print _("Pages grace time: %idays") % self.config.getGraceDelay() 
     
    127130            if total :         
    128131                print (" " * 43) + ("Total : %9i" % total) 
     132            print (" " * 44) + ("Real : %9i" % printerpagecounter) 
    129133            print         
    130134                         
  • pykota/trunk/bin/warnpykota

    r775 r791  
    1717# 
    1818# $Log$ 
     19# Revision 1.8  2003/02/10 12:07:30  jalet 
     20# Now repykota should output the recorded total page number for each printer too. 
     21# 
    1922# Revision 1.7  2003/02/09 13:40:29  jalet 
    2023# typo 
     
    107110        if not printernames : 
    108111            raise PyKotaToolError, _("There's no printer matching %s") % options["printer"] 
    109         for printer in printernames : 
     112        for (printer, printerpagecounter) in printernames : 
    110113            if options["users"] : 
    111114                for name in self.storage.getPrinterUsers(printer) : 
  • pykota/trunk/pykota/storage.py

    r773 r791  
    1515# 
    1616# $Log$ 
     17# Revision 1.7  2003/02/10 12:07:31  jalet 
     18# Now repykota should output the recorded total page number for each printer too. 
     19# 
    1720# Revision 1.6  2003/02/09 13:05:43  jalet 
    1821# Internationalization continues... 
     
    4851    """Base class for all storages.""" 
    4952    def getMatchingPrinters(self, printerpattern) : 
    50         """Returns the list of all printer names which match a certain pattern.""" 
     53        """Returns the list of all printers tuples (name, pagecounter) which match a certain pattern for the printer name.""" 
    5154        pass 
    5255             
  • pykota/trunk/pykota/storages/sql.py

    r784 r791  
    1515# 
    1616# $Log$ 
     17# Revision 1.18  2003/02/10 12:07:31  jalet 
     18# Now repykota should output the recorded total page number for each printer too. 
     19# 
    1720# Revision 1.17  2003/02/10 08:41:36  jalet 
    1821# edpykota's --reset command line option resets the limit date too. 
     
    7780class SQLStorage :     
    7881    def getMatchingPrinters(self, printerpattern) : 
    79         """Returns the list of all printer names which match a certain pattern.""" 
     82        """Returns the list of all printers tuples (name, pagecounter) which match a certain pattern for the printer name.""" 
    8083        printerslist = [] 
    8184        # We 'could' do a SELECT printername FROM printers WHERE printername LIKE ... 
    8285        # but we don't because other storages semantics may be different, so every 
    8386        # storage should use fnmatch to match patterns and be storage agnostic 
    84         result = self.doQuery("SELECT printername FROM printers;") 
     87        result = self.doQuery("SELECT printername, pagecounter FROM printers;") 
    8588        result = self.doParseResult(result) 
    8689        if result is not None : 
    8790            for printer in result : 
    8891                if fnmatch.fnmatchcase(printer["printername"], printerpattern) : 
    89                     printerslist.append(printer["printername"]) 
     92                    printerslist.append((printer["printername"], printer["pagecounter"])) 
    9093        return printerslist         
    9194             
     
    9699    def getPrinterUsers(self, printername) :         
    97100        """Returns the list of usernames which uses a given printer.""" 
    98         result = self.doQuery("SELECT DISTINCT username FROM users WHERE id IN (SELECT userid FROM userpquota WHERE printerid IN (SELECT printerid FROM printers WHERE printername=%s));" % self.doQuote(printername)) 
     101        result = self.doQuery("SELECT DISTINCT username FROM users WHERE id IN (SELECT userid FROM userpquota WHERE printerid IN (SELECT printerid FROM printers WHERE printername=%s)) ORDER BY username;" % self.doQuote(printername)) 
    99102        result = self.doParseResult(result) 
    100103        if result is None :