Show
Ignore:
Timestamp:
08/18/10 04:20:57 (14 years ago)
Author:
jerome
Message:

Removed support for the MaxJobSize? attribute for users group print quota
entries : I couldn't see a real use for this at the moment, and it would
complexify the code. This support might reappear later however. Added full
support for the MaxJobSize? attribute for user print quota entries,
editable with edpykota's new --maxjobsize command line switch. Changed
the internal handling of the MaxJobSize? attribute for printers :
internally 0 used to mean unlimited, it now allows one to forbid
printing onto a particular printer. The database upgrade script (only
for PostgreSQL) takes care of this.
IMPORTANT : the database schema changes. A database upgrade script is
provided for PostgreSQL only. The LDAP schema doesn't change to not
break any existing LDAP directory, so the pykotaMaxJobSize attribute is
still allowed on group print quota entries, but never used.
Seems to work as expected, for a change :-)
Fixes #15.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/edpykota

    r3489 r3549  
    3636class EdPyKota(PyKotaTool) : 
    3737    """A class for edpykota.""" 
    38     def modifyPQEntry(self, pqkey, pqentry, noquota, softlimit, hardlimit, increase, reset, hardreset, suffix, used) : 
     38    def modifyPQEntry(self, pqkey, pqentry, noquota, softlimit, hardlimit, increase, reset, hardreset, suffix, used, maxjobsize) : 
    3939        """Modifies a print quota entry.""" 
    4040        if noquota or ((softlimit is not None) and (hardlimit is not None)) : 
     
    5454            if used : 
    5555                pqentry.setUsage(used) 
     56            if maxjobsize is not None : 
     57                if maxjobsize == "unlimited" : 
     58                    pqentry.setMaxJobSize(None) 
     59                else : 
     60                    pqentry.setMaxJobSize(maxjobsize) 
    5661 
    5762    def main(self, names, options) : 
     
    7782                                      or options.noquota \ 
    7883                                      or options.increase \ 
     84                                      or options.maxjobsize \ 
    7985                                      or options.skipexisting))) \ 
    8086             or (options.groups and (options.used \ 
     87                                  or options.maxjobsize \ 
    8188                                  or options.increase \ 
    8289                                  or options.reset \ 
     
    106113                        self.display("    %s\n" % (_("Hard limit : %s") % pqentry.HardLimit)) 
    107114                        self.display("    %s\n" % (_("Date limit : %s") % pqentry.DateLimit)) 
    108                         self.display("    %s (Not supported yet)\n" % (_("Maximum job size : %s") % ((pqentry.MaxJobSize and (_("%s pages") % pqentry.MaxJobSize)) or _("Unlimited")))) 
     115                        if suffix == "User" : 
     116                            self.display("    %s\n" % (_("Maximum job size : %s") % (((pqentry.MaxJobSize is not None) and (_("%s pages") % pqentry.MaxJobSize)) or _("Unlimited")))) 
    109117                        if hasattr(pqentry, "WarnCount") : 
    110118                            self.display("    %s\n" % (_("Warning banners printed : %s") % pqentry.WarnCount)) 
     
    159167                        self.printInfo(_("Undefined soft limit set to hard limit (%s).") % str(softlimit)) 
    160168 
     169            if options.maxjobsize : 
     170                if options.maxjobsize.lower() == "unlimited" : 
     171                    maxjobsize = "unlimited" 
     172                else : 
     173                    try : 
     174                        maxjobsize = int(options.maxjobsize) 
     175                        if maxjobsize < 0 : 
     176                            raise ValueError 
     177                    except ValueError : 
     178                        raise PyKotaCommandLineError, _("Invalid maximum job size value %s") % options.maxjobsize 
     179            else : 
     180                maxjobsize = None 
     181 
    161182            self.storage.beginTransaction() 
    162183            try : 
     
    183204                                               options.hardreset, 
    184205                                               suffix, 
    185                                                used) 
     206                                               used, 
     207                                               maxjobsize) 
    186208                            oldpqentry = getattr(self.storage, "add%sPQuota" % suffix)(pqentry) 
    187209                            if oldpqentry is not None : 
     
    201223                                                       options.hardreset, 
    202224                                                       suffix, 
    203                                                        used) 
     225                                                       used, 
     226                                                       maxjobsize) 
    204227                                    oldpqentry.save() 
    205228                            percent.oneMore() 
     
    220243                                                   options.hardreset, 
    221244                                                   suffix, 
    222                                                    used) 
     245                                                   used, 
     246                                                   maxjobsize) 
    223247                                pqentry.save() 
    224248                            percent.oneMore() 
     
    263287                            dest="action", 
    264288                            help=_("Display detailed informations about the specified users or groups print quota entries.")) 
     289    parser.add_option("-m", "--maxjobsize", 
     290                            dest="maxjobsize", 
     291                            help=_("Set the maximum job size in pages the specified users are allowed to print to the specified printers in a single job. Accepted values are '0' to forbid printing, 'unlimited' to allow unrestricted printing, or any positive integer value. This option is not supported for users groups.")) 
    265292    parser.add_option("-n", "--noquota", 
    266293                            dest="noquota",