Index: /pykota/trunk/conf/pykota.conf.sample
===================================================================
--- /pykota/trunk/conf/pykota.conf.sample (revision 1475)
+++ /pykota/trunk/conf/pykota.conf.sample (revision 1483)
@@ -187,4 +187,70 @@
 #                 default in PyKota since its beginning.
 #
+#                 In the lines below "%(printer)s" is automatically replaced
+#                 at run time with your printer's Fully Qualified Domain Name
+#                 for network printers.
+#                 e.g. myprinter.example.com
+#
+#         Example : 
+#         
+#             accounter: hardware(/usr/bin/snmpget -v1 -c public -Ov %(printer)s mib-2.43.10.2.1.4.1.1 | cut -f 2,2 -d " ")
+#         
+#         Another untested example, using npadmin :
+#         
+#             accounter: hardware(/usr/bin/npadmin --pagecount %(printer)s)
+#         
+#         Another example, for AppleTalk printers which works fine :
+#         (You may need the pap CUPS backend installed, and copy the 
+#         pagecount.ps file from untested/netatalk into /etc or any 
+#         appropriate location)
+#         
+#             accounter: hardware(/usr/share/pykota/papwaitprinter.sh "MyPrinter:LaserWriter@*" && /usr/bin/pap -p "MyPrinter:LaserWriter@*" /usr/share/pykota/pagecount.ps  2>/dev/null | /bin/grep -v status | /bin/grep -v Connect | /usr/bin/tail -1)
+#         
+#         An example for parallel printers like the HP Laserjet 5MP :
+#         
+#             accounter: hardware(/bin/cat /usr/share/pykota/pagecount.pjl >/dev/lp0 && /usr/bin/head -2 </dev/lp0 | /usr/bin/tail -1)
+#         
+#         This value can be set either globally or per printer or both.
+#         If both are defined, the printer option has priority.
+#         
+#         Some examples and comments provided by Bob Martel from csuohio.edu
+#         
+#         For several printers I could not get the page count using snmpget.  I
+#         resorted to snmpwalk:
+#         
+#             accounter: hardware(/opt/local/net-snmp/bin/snmpwalk -v 1 -Cc -c public %(printer)s | grep mib-2.43.10.2.1.4.1.1 | cut -d " " -f4)
+#         
+#         The last example is still more ugly, some of the printers only provided
+#         their counters without names, but at least always on the same line:
+#         
+#             accounter: hardware(/opt/local/net-snmp/bin/snmpwalk -v 1 -Cc -c public -Ov %(printer)s | grep Counter32 | tail -2 | head -1 | cut -d " " -f2)
+#         
+#         An example using netcat and a preformatted PJL job which you can find
+#         in the untested/pjl directory, which is sent to a JetDirect print
+#         server on port 9100 :
+#         
+#             accounter: hardware(/bin/nc -w 2 %(printer)s 9100 </usr/share/pykota/pagecount.pjl | /usr/bin/tail -2)
+#         
+#         An example using the contributed pagecount.pl script which does 
+#         the same as above, but should work on more printers : 
+#         
+#             accounter: hardware(/usr/share/pykota/pagecount.pl %(printer)s 9100)
+#         
+#         WARNING : In any case, when using an hardware accounter, please test the command line outside
+#                   of PyKota before. This will save you some headaches in case it doesn't work as expected.
+#         
+#         The waitprinter.sh is there to wait until the printer is idle again.
+#         This should prevent a job to be sent to the printer while another one is 
+#         not yet finished (not all pages are printed, but the complete job is in 
+#         the printer)
+#         
+#         YOU ABSOLUTELY HAVE TO BE SURE YOU HAVE A SCRIPT WHICH WAITS FOR THE
+#         PRINTER BEING READY BEFORE ASKING FOR ITS INTERNAL PAGE COUNTER.
+#         
+#         PYKOTA INCLUDES SUCH SCRIPTS FOR SNMP AND APPLETALK PRINTERS, MORE TO COME
+#
+#         SOME OF THE ABOVE EXAMPLES DON'T USE SUCH A SCRIPT, YOU HAVE BEEN WARNED
+#         
+#
 #    - software : delegates the job's size computation to any 
 #                 external command of your choice. 
@@ -209,8 +275,7 @@
 # This value can be set either globally or on a per printer basis
 # If both are defined, the printer option has priority.
-# if not set it defaults to 'hardware'.
-#
-# default value 
-accounter: hardware
+#
+# default value
+accounter: hardware(/usr/share/pykota/waitprinter.sh %(printer)s && /usr/bin/snmpget -v1 -c public -Ov %(printer)s mib-2.43.10.2.1.4.1.1 | cut -f 2,2 -d " ")
 # accounter: software(/usr/bin/pkpgcounter)
 
@@ -317,76 +382,4 @@
 [hpmarketing]
 
-# How to query the hpmarketing printer for its page counter.
-# THIS IS ONLY USED IF YOU HAVE SET 'accounter' TO 'hardware'
-# JUST COMMENT IT OUT IF YOU USE ANY OTHER ACCOUNTING METHOD.
-# (it would be ignored anyway)
-#
-# In the lines below "%(printer)s" is automatically replaced
-# at run time with your printer's Fully Qualified Domain Name
-# for network printers.
-# e.g. myprinter.example.com
-#
-# Only value supported is : external(... your command here...) 
-#
-# Example : 
-#
-#     requester: external(/usr/bin/snmpget -v1 -c public -Ov %(printer)s mib-2.43.10.2.1.4.1.1 | cut -f 2,2 -d " ")
-#
-# Another untested example, using npadmin :
-#
-#     requester: external(/usr/bin/npadmin --pagecount %(printer)s)
-#
-# Another example, for AppleTalk printers which works fine :
-# (You may need the pap CUPS backend installed, and copy the 
-# pagecount.ps file from untested/netatalk into /etc or any 
-# appropriate location)
-#
-#     requester: external(/usr/share/pykota/papwaitprinter.sh "MyPrinter:LaserWriter@*" && /usr/bin/pap -p "MyPrinter:LaserWriter@*" /usr/share/pykota/pagecount.ps  2>/dev/null | /bin/grep -v status | /bin/grep -v Connect | /usr/bin/tail -1)
-#
-# An example for parallel printers like the HP Laserjet 5MP :
-#
-#     requester: external(/bin/cat /usr/share/pykota/pagecount.pjl >/dev/lp0 && /usr/bin/head -2 </dev/lp0 | /usr/bin/tail -1)
-# 
-# This value can be set either globally or per printer or both.
-# If both are defined, the printer option has priority.
-#
-# Some examples and comments provided by Bob Martel from csuohio.edu
-#
-# For several printers I could not get the page count using snmpget.  I
-# resorted to snmpwalk:
-# 
-# requester: external(/opt/local/net-snmp/bin/snmpwalk -v 1 -Cc -c public %(printer)s | grep mib-2.43.10.2.1.4.1.1 | cut -d " " -f4)
-#
-# The last example is still more ugly, some of the printers only provided
-# their counters without names, but at least always on the same line:
-#
-# requester: external(/opt/local/net-snmp/bin/snmpwalk -v 1 -Cc -c public -Ov %(printer)s | grep Counter32 | tail -2 | head -1 | cut -d " " -f2)
-#
-# An example using netcat and a preformatted PJL job which you can find
-# in the untested/pjl directory, which is sent to a JetDirect print
-# server on port 9100 :
-#
-# requester: external(/bin/nc -w 2 %(printer)s 9100 </usr/share/pykota/pagecount.pjl | /usr/bin/tail -2)
-#
-# An example using the contributed pagecount.pl script which does 
-# the same as above, but should work on more printers : 
-#
-# requester: external(/usr/share/pykota/pagecount.pl %(printer)s 9100)
-#
-# WARNING : In any case, when using an external requester, please test the command line outside
-#           of PyKota before. This will save you some headaches in case it doesn't work as expected.
-#
-# The waitprinter.sh is there to wait until the printer is idle again.
-# This should prevent a job to be sent to the printer while another one is 
-# not yet finished (not all pages are printed, but the complete job is in 
-# the printer)
-#
-# YOU ABSOLUTELY HAVE TO BE SURE YOU HAVE A SCRIPT WHICH WAITS FOR THE
-# PRINTER BEING READY BEFORE ASKING FOR ITS INTERNAL PAGE COUNTER.
-#
-# PYKOTA INCLUDES SUCH SCRIPTS FOR SNMP AND APPLETALK PRINTERS, MORE TO COME
-#
-# default value
-requester: external(/usr/share/pykota/waitprinter.sh %(printer)s && /usr/bin/snmpget -v1 -c public -Ov %(printer)s mib-2.43.10.2.1.4.1.1 | cut -f 2,2 -d " ")
 
 # Default policy for inexistant users (e.g. root)
@@ -395,8 +388,4 @@
 # If both are defined, the printer option has priority.
 # If the value is not set then the default policy DENY applies.
-# ATTENTION :
-#     Before 1.04 the default value was ALLOW, but unknown users
-#     allowed to print causes accuracy problems : their jobs are
-#     charged to the next person who prints on the same printer.
 # There's no policy wrt inexistant groups, they are ignored.
 #
@@ -441,5 +430,5 @@
 # List of available environment variables :
 # NB : Most of these variables are also available during the execution
-# of external commands defined in the accounter, requester or mailto 
+# of external commands defined in the accounter and mailto 
 # directives.
 #
Index: /pykota/trunk/setup.py
===================================================================
--- /pykota/trunk/setup.py (revision 1476)
+++ /pykota/trunk/setup.py (revision 1483)
@@ -24,4 +24,8 @@
 #
 # $Log$
+# Revision 1.42  2004/05/18 14:48:46  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.41  2004/05/13 14:17:32  jalet
 # Warning about changed accounter and requester directives
@@ -301,5 +305,5 @@
                 
         # now checks if pre-1.19alpha8 code is still there       
-        for module in ["accounters/querying", "accounters/external", "requesters/snmp"] :
+        for module in ["accounters/querying", "accounters/external", "requesters/snmp", "requesters/external"] :
             checkOldModule(module)
         
@@ -377,9 +381,9 @@
     dummy = raw_input("Please press ENTER when you have read the message above. ")
     
-    sys.stdout.write("\n\nWARNING : IF YOU ARE UPGRADING FROM A PRE-1.19alpha8 TO 1.19alpha8 OR ABOVE\n")
+    sys.stdout.write("\n\nWARNING : IF YOU ARE UPGRADING FROM A PRE-1.19alpha10 TO 1.19alpha10 OR ABOVE\n")
     sys.stdout.write("YOU **MUST** MODIFY YOUR /etc/pykota/pykota.conf FILE BECAUSE accounter\n")
     sys.stdout.write("AND requester DIRECTIVES SUPPORTED VALUES HAVE CHANGED.\n\n")
     sys.stdout.write("YOU CAN DO THAT AFTER THE INSTALLATION IS FINISHED, OR PRESS CTRL+C NOW.\n")
-    sys.stdout.write("\n\nYOU DON'T HAVE ANYTHING SPECIAL TO DO IF THIS IS YOUR FIRST INSTALLATION\nOR IF YOU ARE ALREADY RUNNING VERSION 1.19alpha8 OR ABOVE.\n\n")
+    sys.stdout.write("\n\nYOU DON'T HAVE ANYTHING SPECIAL TO DO IF THIS IS YOUR FIRST INSTALLATION\nOR IF YOU ARE ALREADY RUNNING VERSION 1.19alpha10 OR ABOVE.\n\n")
     dummy = raw_input("Please press ENTER when you have read the message above. ")
     
@@ -442,5 +446,5 @@
       author_email = "alet@librelogiciel.com",
       url = "http://www.librelogiciel.com/software/",
-      packages = [ "pykota", "pykota.storages", "pykota.requesters", "pykota.loggers", "pykota.accounters", "pykota.reporters" ],
+      packages = [ "pykota", "pykota.storages", "pykota.loggers", "pykota.accounters", "pykota.reporters" ],
       scripts = [ "bin/pkpgcounter", "bin/snmpprinterstatus", "bin/edpykota", "bin/repykota", "bin/warnpykota", "bin/pykotme", "bin/pkprinters", "bin/pkhint" ],
       data_files = data_files)
Index: /pykota/trunk/docs/scripts.sgml
===================================================================
--- /pykota/trunk/docs/scripts.sgml (revision 1406)
+++ /pykota/trunk/docs/scripts.sgml (revision 1483)
@@ -21,5 +21,5 @@
     
     <para>
-      When defining an external <literal>requester</literal> for a printer, it is important to wait for the printer being
+      When defining an hardware <literal>accounter</literal> for a printer, it is important to wait for the printer being
       <literal>idle</literal> before asking it for its internal page counter, otherwise results could
       be inaccurate. If the printer is asked while the job is still being printed, then the page counter's
@@ -49,5 +49,5 @@
     
     <para>
-      When defining an external <literal>requester</literal> for a printer, it is important to wait for the printer being
+      When defining an hardware <literal>accounter</literal> for a printer, it is important to wait for the printer being
       <literal>idle</literal> before asking it for its internal page counter, otherwise results could
       be inaccurate. If the printer is asked while the job is still being printed, then the page counter's
@@ -92,5 +92,5 @@
     <title>pagecount.pl</title>
     <para>
-      This <application>Perl</application> script can be used in the <literal>requester</literal> directive of <filename>pykota.conf</filename>,
+      This <application>Perl</application> script can be used in the <literal>accounter</literal> directive of <filename>pykota.conf</filename>,
       to ask a printer for its internal page counter by sending a specially crafted <acronym>PJL</acronym> job
       to it over the AppSocket protocol, usually on <acronym>TCP</acronym> port 9100.
@@ -103,5 +103,5 @@
       to be in <literal>idle</literal> state, in something like :
 <screen>      
-requester: external(somewaitscript.sh && pagecount.pl %(printer)s)
+accounter: hardware(somewaitscript.sh && pagecount.pl %(printer)s)
 </screen>
     </para>
@@ -119,4 +119,8 @@
 
 $Log$
+Revision 1.2  2004/05/18 14:48:48  jalet
+Big code changes to completely remove the need for "requester" directives,
+jsut use "hardware(... your previous requester directive's content ...)"
+
 Revision 1.1  2004/03/16 14:42:31  jalet
 Improved documentation
Index: /pykota/trunk/untested/README
===================================================================
--- /pykota/trunk/untested/README (revision 1257)
+++ /pykota/trunk/untested/README (revision 1483)
@@ -22,5 +22,5 @@
 This directory contains scripts which may be used to query printers 
 for their life time page counter, so you could define them as
-external requesters in PyKota configuration file.
+hardware accounters in PyKota configuration file.
 
 They are completely untested, and you certainely have to edit them to
Index: /pykota/trunk/pykota/tool.py
===================================================================
--- /pykota/trunk/pykota/tool.py (revision 1481)
+++ /pykota/trunk/pykota/tool.py (revision 1483)
@@ -22,4 +22,8 @@
 #
 # $Log$
+# Revision 1.88  2004/05/18 14:49:20  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.87  2004/05/17 19:14:59  jalet
 # Now catches SIGPIPE and SIGCHLD
@@ -764,5 +768,5 @@
          self.options, \
          self.originalbackend) = self.extractInfoFromCupsOrLprng()
-        self.username = self.username or 'root' 
+        self.username = self.username or 'root' # when printing test page from CUPS web interface, username is empty
         if self.config.getUserNameToLower() :
             self.username = self.username.lower()
Index: /pykota/trunk/pykota/accounters/software.py
===================================================================
--- /pykota/trunk/pykota/accounters/software.py (revision 1475)
+++ /pykota/trunk/pykota/accounters/software.py (revision 1483)
@@ -22,4 +22,8 @@
 #
 # $Log$
+# Revision 1.2  2004/05/18 14:49:23  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.1  2004/05/13 13:59:30  jalet
 # Code simplifications
@@ -45,5 +49,5 @@
             infile = open(self.filter.inputfile, "rb")
             
-        # launches external accounter
+        # launches software accounter
         # TODO : USE tempfile.mkstemp() instead ! Needs some work !
         infilename = tempfile.mktemp()
@@ -68,5 +72,5 @@
             # check exit status
             if (os.WIFEXITED(retcode) and not os.WEXITSTATUS(retcode)) or os.stat(errfilename) :
-                # tries to extract the job size from the external accounter's
+                # tries to extract the job size from the software accounter's
                 # standard output
                 childoutput = open(outfilename, "r")
@@ -74,9 +78,9 @@
                     pagecount = int(childoutput.readline().strip())
                 except (AttributeError, ValueError) :
-                    self.filter.logger.log_message(_("Unable to compute job size with external accounter %s") % self.arguments)
+                    self.filter.logger.log_message(_("Unable to compute job size with accounter %s") % self.arguments)
                     pagecount = 0
                 childoutput.close()    
             else :
-                self.filter.logger.log_message(_("Unable to compute job size with external accounter %s") % self.arguments)
+                self.filter.logger.log_message(_("Unable to compute job size with accounter %s") % self.arguments)
                 pagecount = 0
             os.remove(infilename)
@@ -86,5 +90,5 @@
             # TODO : temporary files may remain on the filesystem...
             msg = "%s : %s" % (self.arguments, msg) 
-            self.filter.logger.log_message(_("Unable to compute job size with external accounter %s") % msg)
+            self.filter.logger.log_message(_("Unable to compute job size with accounter %s") % msg)
             pagecount = 0
             
Index: /pykota/trunk/pykota/accounters/hardware.py
===================================================================
--- /pykota/trunk/pykota/accounters/hardware.py (revision 1475)
+++ /pykota/trunk/pykota/accounters/hardware.py (revision 1483)
@@ -22,4 +22,8 @@
 #
 # $Log$
+# Revision 1.2  2004/05/18 14:49:22  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.1  2004/05/13 13:59:30  jalet
 # Code simplifications
@@ -30,6 +34,6 @@
 import sys
 import os
+import popen2
 from pykota.accounter import AccounterBase, PyKotaAccounterError
-from pykota.requester import openRequester, PyKotaRequesterError
 
 class Accounter(AccounterBase) :
@@ -37,5 +41,4 @@
         """Initializes querying accounter."""
         AccounterBase.__init__(self, kotabackend, arguments)
-        self.requester = openRequester(kotabackend, kotabackend.printername)
         self.isDelayed = 1 # With the pykota filter, accounting is delayed by one job
         
@@ -44,6 +47,6 @@
         self.filter.logdebug("Reading printer's internal page counter...")
         try :
-            counter = self.requester.getPrinterPageCounter(self.filter.printerhostname)
-        except PyKotaRequesterError, msg :
+            counter = self.askPrinterPageCounter(self.filter.printerhostname)
+        except PyKotaAccounterError, msg :
             # can't get actual page counter, assume printer is off or warming up
             # log the message anyway.
@@ -97,3 +100,36 @@
         userpquota.Printer.addJobToHistory(self.filter.jobid, userpquota.User, counterbeforejob, action, filename=self.filter.preserveinputfile, title=self.filter.title, copies=self.filter.copies, options=self.filter.options)
         return action
+        
+    def askPrinterPageCounter(self, printer) :
+        """Returns the page counter from the printer via an external command.
+        
+           The external command must report the life time page number of the printer on stdout.
+        """
+        commandline = self.arguments.strip() % locals()
+        if printer is None :
+            raise PyKotaAccounterError, _("Unknown printer address in HARDWARE(%s) for printer %s") % (commandline, self.filter.printername)
+        error = 1
+        pagecounter = None
+        child = popen2.Popen4(commandline)    
+        try :
+            pagecounter = int(child.fromchild.readline().strip())
+        except ValueError :    
+            pass
+        except IOError :    
+            # we were interrupted by a signal, certainely a SIGTERM
+            # caused by the user cancelling the current job
+            try :
+                os.kill(child.pid, signal.SIGTERM)
+            except :    
+                pass # already killed ?
+            self.filter.logger.log_message(_("SIGTERM was sent to hardware accounter %s (pid: %s)") % (commandline, child.pid), "info")
+        else :    
+            error = 0
+        child.fromchild.close()    
+        child.tochild.close()
+        status = child.wait()
+        if (not error) and os.WIFEXITED(status) and (not os.WEXITSTATUS(status)) :
+            return pagecounter
+        else :    
+            raise PyKotaAccounterError, _("Unable to query printer %s via HARDWARE(%s)") % (printer, commandline) 
             
Index: /pykota/trunk/pykota/Makefile.am
===================================================================
--- /pykota/trunk/pykota/Makefile.am (revision 1482)
+++ /pykota/trunk/pykota/Makefile.am (revision 1483)
@@ -7,5 +7,4 @@
 	logger.py		\
 	reporter.py		\
-	requester.py	\
 	storage.py		\
 	tool.py			\
@@ -13,4 +12,4 @@
 	version.py
 
-SUBDIRS = accounters loggers reporters requesters storages
+SUBDIRS = accounters loggers reporters storages
 
Index: /pykota/trunk/pykota/accounter.py
===================================================================
--- /pykota/trunk/pykota/accounter.py (revision 1285)
+++ /pykota/trunk/pykota/accounter.py (revision 1483)
@@ -22,4 +22,8 @@
 #
 # $Log$
+# Revision 1.14  2004/05/18 14:49:19  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.13  2004/01/12 22:43:40  jalet
 # New formula to compute a job's price
@@ -63,4 +67,5 @@
 
 import sys
+from pykota import pdlanalyzer
 
 class PyKotaAccounterError(Exception):
@@ -80,9 +85,24 @@
         self.arguments = arguments
         self.isDelayed = 0      # Accounting is immediate by default
+        self.firstPassSize = None
+        
+    def getSoftwareJobSize(self) :    
+        """Pre-computes the job's size with a software method."""
+        if self.filter.preserveinputfile is None :
+            raise PyKotaAccounterError, "Only supports raw jobs for now."""
+        else :    
+            fname = self.filter.preserveinputfile
+        parser = pdfanalyzer.PDLAnalyzer(fname)    
+        try : 
+            jobsize = parser.getJobSize()
+        except TypeError, msg :    
+            raise PyKotaAccounterError, msg
+        else :    
+            self.firstPassSize = jobsize
         
     def getLastPageCounter(self) :    
         """Returns last internal page counter value (possibly faked)."""
         try :
-            return self.LastPageCounter
+            return self.LastPageCounter or 0
         except :    
             return 0
Index: /pykota/trunk/pykota/config.py
===================================================================
--- /pykota/trunk/pykota/config.py (revision 1475)
+++ /pykota/trunk/pykota/config.py (revision 1483)
@@ -22,4 +22,8 @@
 #
 # $Log$
+# Revision 1.47  2004/05/18 14:49:20  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.46  2004/05/13 13:59:28  jalet
 # Code simplifications
@@ -311,18 +315,17 @@
         validaccounters = [ "hardware", "software" ]     
         fullaccounter = self.getPrinterOption(printername, "accounter").strip()
-        if fullaccounter.lower().startswith("software") :    
+        flower = fullaccounter.lower()
+        if flower.startswith("software") or flower.startswith("hardware") :    
             try :
                 (accounter, args) = [x.strip() for x in fullaccounter.split('(', 1)]
             except ValueError :    
-                raise PyKotaConfigError, _("Invalid external accounter %s for printer %s") % (fullaccounter, printername)
+                raise PyKotaConfigError, _("Invalid accounter %s for printer %s") % (fullaccounter, printername)
             if args.endswith(')') :
                 args = args[:-1]
             if not args :
-                raise PyKotaConfigError, _("Invalid external accounter %s for printer %s") % (fullaccounter, printername)
+                raise PyKotaConfigError, _("Invalid accounter %s for printer %s") % (fullaccounter, printername)
             return (accounter.lower(), args)    
-        elif fullaccounter.lower() not in validaccounters :
+        else :
             raise PyKotaConfigError, _("Option accounter in section %s only supports values in %s") % (printername, str(validaccounters))
-        else :    
-            return (fullaccounter.lower(), None)
         
     def getPreHook(self, printername) :    
@@ -340,28 +343,4 @@
             return      # No command to launch in the post-hook
             
-    def getRequesterBackend(self, printername) :    
-        """Returns the requester backend to use for a given printer, with its arguments."""
-        try :
-            fullrequester = self.getPrinterOption(printername, "requester")
-        except PyKotaConfigError :    
-            # No requester defined, maybe it is not needed if accounting method
-            # is not set to 'hardware', but if we are called, then the accounting
-            # method really IS 'hardware', and so there's a big problem.
-            raise PyKotaConfigError, _("Option requester for printer %s was not set") % printername
-        else :    
-            try :
-                (requester, args) = [x.strip() for x in fullrequester.split('(', 1)]
-            except ValueError :    
-                raise PyKotaConfigError, _("Invalid requester %s for printer %s") % (fullrequester, printername)
-            if args.endswith(')') :
-                args = args[:-1]
-            if not args :
-                raise PyKotaConfigError, _("Invalid requester %s for printer %s") % (fullrequester, printername)
-            validrequesters = [ "external" ] 
-            requester = requester.lower()
-            if requester not in validrequesters :
-                raise PyKotaConfigError, _("Option requester for printer %s only supports values in %s") % (printername, str(validrequesters))
-            return (requester, args)
-        
     def getPrinterPolicy(self, printername) :    
         """Returns the default policy for the current printer."""
Index: /pykota/trunk/pykota/version.py
===================================================================
--- /pykota/trunk/pykota/version.py (revision 1478)
+++ /pykota/trunk/pykota/version.py (revision 1483)
@@ -22,5 +22,5 @@
 #
 
-__version__ = "1.19alpha9_unofficial"
+__version__ = "1.19alpha10_unofficial"
 
 __doc__ = """PyKota : a complete Printing Quota Solution for CUPS and LPRng."""
Index: /kota/trunk/pykota/requester.py
===================================================================
--- /pykota/trunk/pykota/requester.py (revision 1433)
+++  (revision )
@@ -1,88 +1,0 @@
-# PyKota
-# -*- coding: ISO-8859-15 -*-
-#
-# PyKota : Print Quotas for CUPS and LPRng
-#
-# (c) 2003-2004 Jerome Alet <alet@librelogiciel.com>
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-#
-# $Id$
-#
-# $Log$
-# Revision 1.13  2004/04/09 22:24:46  jalet
-# Began work on correct handling of child processes when jobs are cancelled by
-# the user. Especially important when an external requester is running for a
-# long time.
-#
-# Revision 1.12  2004/01/08 14:10:32  jalet
-# Copyright year changed.
-#
-# Revision 1.11  2003/12/27 16:49:25  uid67467
-# Should be ok now.
-#
-# Revision 1.10  2003/11/25 23:46:40  jalet
-# Don't try to verify if module name is valid, Python does this better than us.
-#
-# Revision 1.9  2003/10/07 09:07:28  jalet
-# Character encoding added to please latest version of Python
-#
-# Revision 1.8  2003/07/07 11:49:24  jalet
-# Lots of small fixes with the help of PyChecker
-#
-# Revision 1.7  2003/04/23 22:13:57  jalet
-# Preliminary support for LPRng added BUT STILL UNTESTED.
-#
-# Revision 1.6  2003/03/29 13:45:27  jalet
-# GPL paragraphs were incorrectly (from memory) copied into the sources.
-# Two README files were added.
-# Upgrade script for PostgreSQL pre 1.01 schema was added.
-#
-# Revision 1.5  2003/02/10 00:42:17  jalet
-# External requester should be ok (untested)
-# New syntax for configuration file wrt requesters
-#
-# Revision 1.4  2003/02/09 13:05:43  jalet
-# Internationalization continues...
-#
-# Revision 1.3  2003/02/05 22:10:29  jalet
-# Typos
-#
-# Revision 1.2  2003/02/05 22:02:22  jalet
-# __import__ statement didn't work as expected
-#
-# Revision 1.1  2003/02/05 21:28:17  jalet
-# Initial import into CVS
-#
-#
-#
-
-class PyKotaRequesterError(Exception):
-    """An exception for Requester related stuff."""
-    def __init__(self, message = ""):
-        self.message = message
-        Exception.__init__(self, message)
-    def __repr__(self):
-        return self.message
-    __str__ = __repr__
-    
-def openRequester(kotabackend, printername) :
-    """Returns a connection handle to the appropriate requester."""
-    (backend, args) = kotabackend.config.getRequesterBackend(printername)
-    try :
-        exec "from pykota.requesters import %s as requesterbackend" % backend.lower()
-    except ImportError :
-        raise PyKotaRequesterError, _("Unsupported requester backend %s") % backend
-    else :    
-        return requesterbackend.Requester(kotabackend, printername, args)
Index: /pykota/trunk/bin/cupspykota
===================================================================
--- /pykota/trunk/bin/cupspykota (revision 1478)
+++ /pykota/trunk/bin/cupspykota (revision 1483)
@@ -24,4 +24,8 @@
 #
 # $Log$
+# Revision 1.44  2004/05/18 14:48:47  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.43  2004/05/17 11:46:05  jalet
 # First try at cupspykota's main loop rewrite
@@ -186,5 +190,4 @@
 from pykota.storage import PyKotaStorageError
 from pykota.accounter import PyKotaAccounterError
-from pykota.requester import PyKotaRequesterError
     
 class PyKotaPopen4(popen2.Popen4) :
@@ -508,5 +511,5 @@
             kotabackend = PyKotaBackend()    
             retcode = kotabackend.mainWork()
-        except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError, PyKotaAccounterError, PyKotaRequesterError, AttributeError, KeyError, IndexError, ValueError, TypeError, IOError), msg :
+        except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError, PyKotaAccounterError, AttributeError, KeyError, IndexError, ValueError, TypeError, IOError), msg :
             import traceback
             mm = [((f.endswith('\n') and f) or (f + '\n')) for f in traceback.format_exception(*sys.exc_info())]
Index: /pykota/trunk/bin/pykota
===================================================================
--- /pykota/trunk/bin/pykota (revision 1400)
+++ /pykota/trunk/bin/pykota (revision 1483)
@@ -24,4 +24,8 @@
 #
 # $Log$
+# Revision 1.58  2004/05/18 14:48:47  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.57  2004/03/15 10:47:56  jalet
 # This time the traceback formatting should be correct !
@@ -233,5 +237,4 @@
 from pykota.storage import PyKotaStorageError
 from pykota.accounter import PyKotaAccounterError
-from pykota.requester import PyKotaRequesterError
 
 class PyKotaFilter(PyKotaFilterOrBackend) :        
@@ -359,5 +362,5 @@
         kotafilter = PyKotaFilter()    
         retcode = kotafilter.mainWork()
-    except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError, PyKotaAccounterError, PyKotaRequesterError, AttributeError, KeyError, IndexError, ValueError, TypeError, IOError), msg :
+    except (PyKotaToolError, PyKotaConfigError, PyKotaStorageError, PyKotaAccounterError, AttributeError, KeyError, IndexError, ValueError, TypeError, IOError), msg :
         import traceback
         mm = [((f.endswith('\n') and f) or (f + '\n')) for f in traceback.format_exception(*sys.exc_info())]
Index: /pykota/trunk/bin/pkhint
===================================================================
--- /pykota/trunk/bin/pkhint (revision 1475)
+++ /pykota/trunk/bin/pkhint (revision 1483)
@@ -24,4 +24,8 @@
 #
 # $Log$
+# Revision 1.8  2004/05/18 14:48:47  jalet
+# Big code changes to completely remove the need for "requester" directives,
+# jsut use "hardware(... your previous requester directive's content ...)"
+#
 # Revision 1.7  2004/05/13 13:59:27  jalet
 # Code simplifications
@@ -214,13 +218,11 @@
                     snmpcommand = self.accepts(SNMPTESTS, hostname)
                     if snmpcommand is not None :
-                        accounter = "hardware"
-                        requester = 'external(/usr/share/pykota/waitprinter.sh %(printer)s && ' + snmpcommand + ')'
-                        configuration.append((printer, accounter, requester))
+                        accounter = 'hardware(/usr/share/pykota/waitprinter.sh %(printer)s && ' + snmpcommand + ')'
+                        configuration.append((printer, accounter))
                     else :    
                         netpjlcommand = self.accepts(NETPJLTESTS, hostname, port)
                         if netpjlcommand is not None :
-                            accounter = "hardware"
-                            requester = 'external(' + netpjlcommand + ')'
-                            configuration.append((printer, accounter, requester))
+                            accounter = 'hardware(' + netpjlcommand + ')'
+                            configuration.append((printer, accounter))
                 elif devicetype == "direct" : 
                     sys.stderr.write("Can't currently handle device %s for printer %s\n" % (device, printer))
@@ -234,9 +236,7 @@
         else :
             print "\nPut the following lines into your /etc/pykota/pykota.conf file :\n"
-            for (printer, accounter, requester) in configuration :
+            for (printer, accounter) in configuration :
                 print "[%s]" % printer
                 print "accounter: %s" % accounter
-                if requester is not None :
-                    print "requester: %s" % requester
                 print    
         
Index: /pykota/trunk/NEWS
===================================================================
--- /pykota/trunk/NEWS (revision 1482)
+++ /pykota/trunk/NEWS (revision 1483)
@@ -22,4 +22,11 @@
 PyKota NEWS :
 
+    - 1.19alpha10 :
+    
+        - configuration simplifications : the "accounter" directive's
+          'hardware' arguments now accepts what was in the "requester"
+          directive as it's content. The "requester" directive is not
+          supported anymore. See sample configuration file for details.
+        
     - 1.19alpha9 :
        
Index: /pykota/trunk/po/en/pykota.po
===================================================================
--- /pykota/trunk/po/en/pykota.po (revision 1470)
+++ /pykota/trunk/po/en/pykota.po (revision 1483)
@@ -174,21 +174,9 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
+msgid "Invalid accounter %s for printer %s"
 msgstr ""
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
-msgstr ""
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr ""
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr ""
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
 msgstr ""
 
@@ -278,8 +266,4 @@
 #, python-format
 msgid "Unsupported reporter backend %s"
-msgstr ""
-
-#, python-format
-msgid "Unsupported requester backend %s"
 msgstr ""
 
@@ -402,5 +386,5 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
+msgid "Unable to compute job size with accounter %s"
 msgstr ""
 
@@ -412,9 +396,9 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr ""
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr ""
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
 msgstr ""
 
@@ -460,8 +444,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
Index: /pykota/trunk/po/br/pykota.po
===================================================================
--- /pykota/trunk/po/br/pykota.po (revision 1470)
+++ /pykota/trunk/po/br/pykota.po (revision 1483)
@@ -172,22 +172,10 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
-msgstr "Contador de p�nas externo %s inv�do, para a impressora %s"
+msgid "Invalid accounter %s for printer %s"
+msgstr "Contador de p�nas %s inv�do, para a impressora %s"
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
 msgstr "A op� accounter na se� %s s�porta valores em %s"
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr "A op� requester para a impressora %s n�foi configurada "
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr "Requester inv�do %s para a impressora %s"
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
-msgstr "a op� requester para a impresora %s s�porta valores em %s"
 
 #, python-format
@@ -291,8 +279,4 @@
 
 #, python-format
-msgid "Unsupported requester backend %s"
-msgstr "Requester backend %s n�suportado"
-
-#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "o banco de dados: %s  n�suportado"
@@ -438,6 +422,6 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
-msgstr "Impossivel calcular o tamanho do trabalho com o contador externo %s"
+msgid "Unable to compute job size with accounter %s"
+msgstr "Impossivel calcular o tamanho do trabalho com o contador %s"
 
 msgid "Using the 'stupid' accounting method is unreliable."
@@ -448,10 +432,10 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr "Endere�invalido em  EXTERNAL(%s) para a impressora %s"
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
-msgstr "Imposive consultar a impressora %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Endere�invalido em  HARDWARE(%s) para a impressora %s"
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Imposive consultar a impressora %s via HARDWARE(%s)"
 
 #, python-format
@@ -496,8 +480,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
Index: /pykota/trunk/po/pt/pykota.po
===================================================================
--- /pykota/trunk/po/pt/pykota.po (revision 1470)
+++ /pykota/trunk/po/pt/pykota.po (revision 1483)
@@ -171,22 +171,10 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
-msgstr "Contador externo de p�nas %s inv�do, para a impressora %s"
+msgid "Invalid accounter %s for printer %s"
+msgstr "Contador de p�nas %s inv�do, para a impressora %s"
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
 msgstr "A op� accounter na sec� %s s�porta valores em %s"
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr "A op� requester para a impressora %s n�foi configurada"
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr "Requester %s inv�do para a impressora %s"
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
-msgstr "A op� requester para a impresora %s s�porta valores em %s"
 
 #, python-format
@@ -290,8 +278,4 @@
 
 #, python-format
-msgid "Unsupported requester backend %s"
-msgstr "Backend requester %s n�suportado"
-
-#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "Base de dados %s n�suportada"
@@ -437,6 +421,6 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
-msgstr "Foi imposs�l calcular o tamanho do trabalho com o contador externo %s"
+msgid "Unable to compute job size with accounter %s"
+msgstr "Foi imposs�l calcular o tamanho do trabalho com o contador %s"
 
 msgid "Using the 'stupid' accounting method is unreliable."
@@ -448,10 +432,10 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr "Endere�inv�do em EXTERNAL(%s) para a impressora %s"
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
-msgstr "Foi imposs�l consultar a impressora %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Endere�inv�do em HARDWARE(%s) para a impressora %s"
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Foi imposs�l consultar a impressora %s via HARDWARE(%s)"
 
 #, python-format
@@ -496,8 +480,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
Index: /pykota/trunk/po/es/pykota.po
===================================================================
--- /pykota/trunk/po/es/pykota.po (revision 1470)
+++ /pykota/trunk/po/es/pykota.po (revision 1483)
@@ -176,22 +176,10 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
-msgstr "Contador de p�nas externo %s inv�do, para la impresora %s"
+msgid "Invalid accounter %s for printer %s"
+msgstr "Contador de p�nas %s inv�do, para la impresora %s"
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
 msgstr "La opci�ccounter en la secci�s solo soporta valores en %s"
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr "La opci�equester para la impresora %s no ha sido establecida "
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr "Requester inv�do %s para la impresora %s"
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
-msgstr "La opci�equester para la impresora %s solo soporta valores en %s"
 
 #, python-format
@@ -295,8 +283,4 @@
 
 #, python-format
-msgid "Unsupported requester backend %s"
-msgstr "Requester backend %s no soportado "
-
-#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "Backend de almacenamiento de cuota no soportada %s"
@@ -439,6 +423,6 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
-msgstr "Imposible calcular el tama�el trabajo con el contador externo %s"
+msgid "Unable to compute job size with accounter %s"
+msgstr "Imposible calcular el tama�el trabajo con el contador %s"
 
 msgid "Using the 'stupid' accounting method is unreliable."
@@ -451,10 +435,10 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr "Direcci�esconocida en EXTERNAL(%s) para la impresora %s"
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
-msgstr "Imposible consultar la impresora %s v�EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Direcci�esconocida en HARDWARE(%s) para la impresora %s"
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Imposible consultar la impresora %s v�HARDWARE(%s)"
 
 #, python-format
@@ -500,8 +484,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
Index: /pykota/trunk/po/fr/pykota.po
===================================================================
--- /pykota/trunk/po/fr/pykota.po (revision 1474)
+++ /pykota/trunk/po/fr/pykota.po (revision 1483)
@@ -181,6 +181,6 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
-msgstr "Compteur de pages externe %s invalide pour l'imprimante %s"
+msgid "Invalid accounter %s for printer %s"
+msgstr "Compteur de pages %s invalide pour l'imprimante %s"
 
 #, python-format
@@ -188,17 +188,4 @@
 msgstr ""
 "L'option accounter pour l'imprimante %s supporte seulement les valeurs %s"
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr "L'option requester pour l'imprimante %s n'a pas � d�nie"
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr "Requester %s invalide pour l'imprimante %s"
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
-msgstr ""
-"L'option requester pour l'imprimante %s supporte seulement les valeurs %s"
 
 #, python-format
@@ -298,7 +285,4 @@
 msgstr "backend reporter %s non support�
 #, python-format
-msgid "Unsupported requester backend %s"
-msgstr "Backend requester %s non support�
-#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "Backend de stockage de quota %s non support�
@@ -428,6 +412,6 @@
 msgstr "L'utilisateur %s n'a toujours pas de quota sur l'imprimante %s dans le syst� PyKota, le travail d'impression sera rejet�
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
-msgstr "Impossible de calculer la taille du job avec le compteur externe %s"
+msgid "Unable to compute job size with accounter %s"
+msgstr "Impossible de calculer la taille du job avec le compteur %s"
 
 msgid "Using the 'stupid' accounting method is unreliable."
@@ -439,10 +423,10 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr "Adresse inconnue dans EXTERNAL(%s) pour l'imprimante %s"
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
-msgstr "Impossible d'interroger l'imprimante %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Adresse inconnue dans HARDWARE(%s) pour l'imprimante %s"
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Impossible d'interroger l'imprimante %s via HARDWARE(%s)"
 
 #, python-format
@@ -487,8 +471,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr "Impossible de se connecter au serveur SMTP : %s"
Index: /pykota/trunk/po/se/pykota.po
===================================================================
--- /pykota/trunk/po/se/pykota.po (revision 1470)
+++ /pykota/trunk/po/se/pykota.po (revision 1483)
@@ -174,22 +174,10 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
-msgstr "Ogiltig extern redovisningsmetod %s f�rintern %s"
+msgid "Invalid accounter %s for printer %s"
+msgstr "Ogiltig redovisningsmetod %s f�rintern %s"
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
 msgstr "Variabeln 'accounter' i sektion '%s' st�r bara v�en i %s"
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr "Variabeln 'requester' f�rinter %s var inte satt"
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr "Ogiltigt v�e %s p�ariabeln 'requester' f�krivare %s"
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
-msgstr "Variabeln 'requester' f�krivare %s st�r bara v�en i %s"
 
 #, python-format
@@ -292,8 +280,4 @@
 
 #, python-format
-msgid "Unsupported requester backend %s"
-msgstr "Ej underst�metod %s f�ariablen 'requester'"
-
-#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "Ej underst�metod %s f�tt lagra data"
@@ -438,6 +422,6 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
-msgstr "Kunde inte ber�a utskriftsstorlek med extern metod %s"
+msgid "Unable to compute job size with accounter %s"
+msgstr "Kunde inte ber�a utskriftsstorlek med metod %s"
 
 msgid "Using the 'stupid' accounting method is unreliable."
@@ -448,10 +432,10 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr "Ok� skrivaradress i EXTERNAL(%s) f�krivare %s"
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
-msgstr "Kunde inte h�a information fr�skrivare %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Ok� skrivaradress i HARDWARE(%s) f�krivare %s"
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Kunde inte h�a information fr�skrivare %s via HARDWARE(%s)"
 
 #, python-format
@@ -492,8 +476,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
Index: /pykota/trunk/po/pykota.pot
===================================================================
--- /pykota/trunk/po/pykota.pot (revision 1470)
+++ /pykota/trunk/po/pykota.pot (revision 1483)
@@ -174,21 +174,9 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
+msgid "Invalid accounter %s for printer %s"
 msgstr ""
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
-msgstr ""
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr ""
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr ""
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
 msgstr ""
 
@@ -278,8 +266,4 @@
 #, python-format
 msgid "Unsupported reporter backend %s"
-msgstr ""
-
-#, python-format
-msgid "Unsupported requester backend %s"
 msgstr ""
 
@@ -402,5 +386,5 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
+msgid "Unable to compute job size with accounter %s"
 msgstr ""
 
@@ -412,9 +396,9 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr ""
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr ""
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
 msgstr ""
 
@@ -460,8 +444,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
Index: /pykota/trunk/po/it/pykota.po
===================================================================
--- /pykota/trunk/po/it/pykota.po (revision 1470)
+++ /pykota/trunk/po/it/pykota.po (revision 1483)
@@ -174,22 +174,10 @@
 
 #, python-format
-msgid "Invalid external accounter %s for printer %s"
-msgstr "Accounter esterno non valido %s per la stampante %s"
+msgid "Invalid accounter %s for printer %s"
+msgstr "Accounter non valido %s per la stampante %s"
 
 #, python-format
 msgid "Option accounter in section %s only supports values in %s"
 msgstr "L'opzione accounter nella sezione %s supporta solamente i seguenti valori %s"
-
-#, python-format
-msgid "Option requester for printer %s was not set"
-msgstr "Opzione richiedente per la stampante %s non impostata"
-
-#, python-format
-msgid "Invalid requester %s for printer %s"
-msgstr "Richiedente non valido %s per la stampante %s"
-
-#, python-format
-msgid "Option requester for printer %s only supports values in %s"
-msgstr "Opzione requester per la stampante %s supporta solamente i seguenti valori %s"
 
 #, python-format
@@ -293,8 +281,4 @@
 
 #, python-format
-msgid "Unsupported requester backend %s"
-msgstr "Requester backend non supportato %s"
-
-#, python-format
 msgid "Unsupported quota storage backend %s"
 msgstr "Storage delle quote non supportato %s"
@@ -439,6 +423,6 @@
 
 #, python-format
-msgid "Unable to compute job size with external accounter %s"
-msgstr "Impossibile calcolare la dimensione della stampa con il metodo external %s"
+msgid "Unable to compute job size with accounter %s"
+msgstr "Impossibile calcolare la dimensione della stampa con il metodo %s"
 
 msgid "Using the 'stupid' accounting method is unreliable."
@@ -449,10 +433,10 @@
 
 #, python-format
-msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
-msgstr "Indirizzo stampante sconosciuto per EXTERNAL(%s) per la stampante %s"
-
-#, python-format
-msgid "Unable to query printer %s via EXTERNAL(%s)"
-msgstr "Impossibile ottenere informazioni dalla stampante %s via EXTERNAL(%s)"
+msgid "Unknown printer address in HARDWARE(%s) for printer %s"
+msgstr "Indirizzo stampante sconosciuto per HARDWARE(%s) per la stampante %s"
+
+#, python-format
+msgid "Unable to query printer %s via HARDWARE(%s)"
+msgstr "Impossibile ottenere informazioni dalla stampante %s via HARDWARE(%s)"
 
 #, python-format
@@ -493,8 +477,4 @@
 
 #, python-format
-msgid "SIGTERM was sent to external requester %s (pid: %s)"
-msgstr ""
-
-#, python-format
 msgid "Impossible to connect to SMTP server : %s"
 msgstr ""
