Index: /pykota/trunk/conf/pykota.conf.sample
===================================================================
--- /pykota/trunk/conf/pykota.conf.sample (revision 738)
+++ /pykota/trunk/conf/pykota.conf.sample (revision 780)
@@ -52,10 +52,11 @@
 #
 # How to query the lp printer for its page counter
-# Only SNMP is currently supported
-requester: snmp
-# SNMP Community
-snmpcmnty: public
-# SNMP oid to query : this one seems to be specific to HP LaserJet printers
-snmpoid: 43.10.2.1.4.1.1
+# Only snmp(community, oid) and external(command) are supported
+# e.g. : 
+#     external(snmpget -c public -Ov %(printer)s 43.10.2.1.4.1.1 | cut -f 2,2 -d " ")
+# and :
+#     snmp(public, 43.10.2.1.4.1.1)
+# are equivalent
+requester: snmp(public, 43.10.2.1.4.1.1)
 #
 # Default policy for inexistant users (e.g. root)
Index: /pykota/trunk/pykota/requesters/snmp.py
===================================================================
--- /pykota/trunk/pykota/requesters/snmp.py (revision 773)
+++ /pykota/trunk/pykota/requesters/snmp.py (revision 780)
@@ -15,4 +15,8 @@
 #
 # $Log$
+# 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...
@@ -36,9 +40,9 @@
 class Requester :
     """A class to send queries to printers via SNMP."""
-    def __init__(self, config, printername) :
+    def __init__(self, config, printername, arguments) :
         """Sets instance vars depending on the current printer."""
         self.printername = printername
-        self.community = config.config.get(printername, "snmpcmnty")
-        self.oid = config.config.get(printername, "snmpoid")
+        self.community = arguments[0]
+        self.oid = arguments[1]
         
     def getPrinterPageCounter(self, hostname) :
Index: /pykota/trunk/pykota/requesters/external.py
===================================================================
--- /pykota/trunk/pykota/requesters/external.py (revision 773)
+++ /pykota/trunk/pykota/requesters/external.py (revision 780)
@@ -15,4 +15,8 @@
 #
 # $Log$
+# Revision 1.3  2003/02/10 00:42:17  jalet
+# External requester should be ok (untested)
+# New syntax for configuration file wrt requesters
+#
 # Revision 1.2  2003/02/09 13:05:43  jalet
 # Internationalization continues...
@@ -29,14 +33,23 @@
 class Requester :
     """A class to send queries to printers via external commands."""
-    def __init__(self, config, printername) :
+    def __init__(self, config, printername, arguments) :
         """Sets instance vars depending on the current printer."""
         self.printername = printername
-        raise PyKotaRequesterError, _("Requester not implemented yet.")
+        self.commandline = arguments[0]
         
-    def getPrinterPageCounter(self, hostname) :
-        """Returns the page counter from the hostname printer via SNMP.
+    def getPrinterPageCounter(self, printer) :
+        """Returns the page counter from the printer via an external command.
         
-           Currently uses the snmpget external command. TODO : do it internally 
+           The external command must report the life time page number of the printer on stdout.
         """
-        raise PyKotaRequesterError, _("Requester not implemented yet.")
+        commandline = self.commandline % locals()
+        if printer is None :
+            raise PyKotaRequesterError, _("Unknown printer address in EXTERNAL(%s) for printer %s") % (commandline, self.printername)
+        answer = os.popen(commandline)
+        try :
+            pagecounter = int(answer.readline().strip())
+        except IndexError :    
+            raise PyKotaRequesterError, _("Unable to query printer %s via EXTERNAL(%s)") % (printer, commandline) 
+        answer.close()
+        return pagecounter
         
Index: /pykota/trunk/pykota/requester.py
===================================================================
--- /pykota/trunk/pykota/requester.py (revision 773)
+++ /pykota/trunk/pykota/requester.py (revision 780)
@@ -15,4 +15,8 @@
 #
 # $Log$
+# 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...
@@ -41,5 +45,5 @@
 def openRequester(config, printername) :
     """Returns a connection handle to the appropriate requester."""
-    backend = config.getRequesterBackend(printername)
+    (backend, args) = config.getRequesterBackend(printername)
     try :
         if not backend.isalpha() :
@@ -50,3 +54,3 @@
         raise PyKotaRequesterError, _("Unsupported requester backend %s") % backend
     else :    
-        return getattr(requesterbackend, "Requester")(config, printername)
+        return getattr(requesterbackend, "Requester")(config, printername, args)
Index: /pykota/trunk/pykota/config.py
===================================================================
--- /pykota/trunk/pykota/config.py (revision 773)
+++ /pykota/trunk/pykota/config.py (revision 780)
@@ -15,4 +15,8 @@
 #
 # $Log$
+# Revision 1.8  2003/02/10 00:42:17  jalet
+# External requester should be ok (untested)
+# New syntax for configuration file wrt requesters
+#
 # Revision 1.7  2003/02/09 13:05:43  jalet
 # Internationalization continues...
@@ -95,12 +99,13 @@
                 raise PyKotaConfigError, _("Option policy in section %s only supports values in %s") % (printer, str(validpolicies))
             
-            validrequesters = [ "snmp" ] # TODO : add more requesters
-            requester = self.config.get(printer, "requester").lower()
-            if requester not in validrequesters :
-                raise PyKotaConfigError, _("Option requester in section %s only supports values in %s") % (printer, str(validrequesters))
-            if requester == "snmp" :
-                for poption in [ "snmpcmnty", "snmpoid" ] : 
-                    if not self.config.has_option(printer, poption) :
-                        raise PyKotaConfigError, _("Option %s not found in section %s of %s") % (option, printer, self.filename)
+            validrequesters = [ "snmp", "external" ] # TODO : add more requesters
+            fullrequester = self.config.get(printer, "requester")
+            try :
+                (requester, args) = [x.strip() for x in fullrequester.split('('))]
+            except ValueError :    
+                raise PyKotaConfigError, _("Invalid requester for printer %s") % printer
+            else :
+                if requester not in validrequesters :
+                    raise PyKotaConfigError, _("Option requester for printer %s only supports values in %s") % (printer, str(validrequesters))
                         
     def getPrinterNames(self) :    
@@ -128,6 +133,13 @@
         
     def getRequesterBackend(self, printer) :    
-        """Returns the requester backend to use for a given printer."""
-        return self.config.get(printer, "requester").lower()
+        """Returns the requester backend to use for a given printer, with its arguments."""
+        fullrequester = self.config.get(printer, "requester")
+        (requester, args) = [x.strip() for x in fullrequester.split('('))]
+        if args.endswith(')') :
+            args = args[:-1]
+        args = [x.strip() for x in args.split(',')]
+        if not args :
+            raise PyKotaConfigError, _("Invalid requester for printer %s") % printer
+        return (requester, args)
         
     def getPrinterPolicy(self, printer) :    
Index: /pykota/trunk/po/en/pykota.po
===================================================================
--- /pykota/trunk/po/en/pykota.po (revision 779)
+++ /pykota/trunk/po/en/pykota.po (revision 780)
@@ -15,6 +15,7 @@
 #
 # $Log$
-# Revision 1.3  2003/02/09 23:11:24  jalet
-# I have to learn how to use these things.
+# Revision 1.4  2003/02/10 00:42:17  jalet
+# External requester should be ok (untested)
+# New syntax for configuration file wrt requesters
 #
 # Revision 1.3  2003/02/09 14:02:31  jalet
@@ -45,135 +46,100 @@
 "Generated-By: pygettext.py 1.3\n"
 
-
-#: edpykota:209
 msgid "Undefined soft limit set to hard limit (%s) on printer %s."
 msgstr ""
 
-#: edpykota:191
 msgid "Hard limit %i is less than soft limit %i, values will be exchanged."
 msgstr ""
 
-#: warnpykota:141
 msgid "warnpykota: option --group is currently not implemented."
 msgstr ""
 
-#: edpykota:287
 msgid "edpykota: option --group is currently not implemented."
 msgstr ""
 
-#: repykota:107
 msgid "Pages grace time: %idays"
 msgstr ""
 
-#: repykota:177
 msgid "repykota: unused arguments [%s]. Aborting."
 msgstr ""
 
-#: edpykota:183
 msgid "Invalid softlimit value %s."
 msgstr ""
 
-#: edpykota:200
 msgid "Prototype %s not found in Quota Storage for printer %s."
 msgstr ""
 
-#: edpykota:285
 msgid "edpykota: options --softlimit or --hardlimit and --prototype are incompatible."
 msgstr ""
 
-#: pykota:114
 msgid "Printer %s not registered in the PyKota system"
 msgstr ""
 
-#: repykota:175
 msgid "repykota: option --group is currently not implemented."
 msgstr ""
 
-#: edpykota:237
 msgid "Quota not found for object %s on printer %s."
 msgstr ""
 
-#: repykota:173
 msgid "repykota: options --users and --groups are incompatible."
 msgstr ""
 
-#: edpykota:229
 msgid "Invalid user name %s"
 msgstr ""
 
-#: edpykota:211
 msgid "Both hard and soft limits must be set ! Aborting."
 msgstr ""
 
-#: warnpykota:139
 msgid "warnpykota: options --users and --groups are incompatible."
 msgstr ""
 
-#: edpykota:206
 msgid "Undefined hard limit set to soft limit (%s) on printer %s."
 msgstr ""
 
-#: edpykota:283
 msgid "edpykota: options --users and --groups are incompatible."
 msgstr ""
 
-#: warnpykota:143
 msgid "warnpykota: unused arguments [%s]. Aborting."
 msgstr ""
 
-#: edpykota:188
 msgid "Invalid hardlimit value %s."
 msgstr ""
 
-#: repykota:116
 msgid "Group            used     soft     hard   grace        total"
 msgstr ""
 
-#: edpykota:177 warnpykota:102 repykota:104
 msgid "There's no printer matching %s"
 msgstr ""
 
-#: repykota:106
 msgid "*** Report for %s quota on printer %s"
 msgstr ""
 
-#: pykota:137
 msgid "Error in page count value %i for user %s on printer %s"
 msgstr ""
 
-#: edpykota:235
 msgid "Invalid group name %s"
 msgstr ""
 
-#: repykota:110
 msgid "User             used     soft     hard   grace        total"
 msgstr ""
 
-#: edpykota:175
 msgid "Invalid printer name %s"
 msgstr ""
 
-
-#: config.py:97
-msgid "Option requester in section %s only supports values in %s"
-msgstr ""
-
-#: tool.py:263 tool.py:268
+msgid "Option requester for printer %s only supports values in %s"
+msgstr ""
+
 msgid "Print Quota Exceeded"
 msgstr ""
 
-#: tool.py:269
 msgid "Print Quota"
 msgstr ""
 
-#: requesters/external.py:31 requesters/external.py:38
 msgid "Requester not implemented yet."
 msgstr ""
 
-#: config.py:88 config.py:101
 msgid "Option %s not found in section %s of %s"
 msgstr ""
 
-#: tool.py:268
 msgid ""
 "You will soon be forbidden to print anymore because\n"
@@ -181,5 +147,4 @@
 msgstr ""
 
-#: tool.py:202
 msgid ""
 "\n"
@@ -190,57 +155,43 @@
 msgstr ""
 
-#: config.py:152
 msgid "Invalid grace delay %s"
 msgstr ""
 
-#: config.py:78
 msgid "Option logger only supports values in %s"
 msgstr ""
 
-#: config.py:73
 msgid "Option %s not found in section global of %s"
 msgstr ""
 
-#: config.py:82
 msgid "Option method only supports values in %s"
 msgstr ""
 
-#: tool.py:219
 msgid "Unable to match user %s on printer %s, applying default policy (%s)"
 msgstr ""
 
-#: tool.py:252
 msgid "Group quotas are currently not implemented."
 msgstr ""
 
-#: requesters/snmp.py:47
 msgid "Unknown printer address in SNMP(%s, %s) for printer %s"
 msgstr ""
 
-#: tool.py:266
 msgid "Print Quota soft limit exceeded for user %s on printer %s"
 msgstr ""
 
-#: logger.py:49
 msgid "Unsupported logging subsystem %s"
 msgstr ""
 
-#: requesters/snmp.py:52
 msgid "Unable to query printer %s via SNMP(%s, %s)"
 msgstr ""
 
-#: requester.py:47
 msgid "Unsupported requester backend %s"
 msgstr ""
 
-#: config.py:92
 msgid "Option policy in section %s only supports values in %s"
 msgstr ""
 
-#: storage.py:111
 msgid "Unsupported quota storage backend %s"
 msgstr ""
 
-#: tool.py:263
 msgid ""
 "You are not allowed to print anymore because\n"
@@ -248,7 +199,13 @@
 msgstr ""
 
-#: tool.py:261
 msgid "Print Quota exceeded for user %s on printer %s"
 msgstr ""
 
-
+msgid "Invalid requester for printer %s"
+msgstr ""
+
+msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
+msgstr ""
+
+msgid "Unable to query printer %s via EXTERNAL(%s)"
+msgstr ""
Index: /pykota/trunk/po/fr/pykota.po
===================================================================
--- /pykota/trunk/po/fr/pykota.po (revision 776)
+++ /pykota/trunk/po/fr/pykota.po (revision 780)
@@ -15,4 +15,8 @@
 #
 # $Log$
+# Revision 1.2  2003/02/10 00:42:17  jalet
+# External requester should be ok (untested)
+# New syntax for configuration file wrt requesters
+#
 # Revision 1.1  2003/02/09 14:02:31  jalet
 # French translation was added
@@ -43,134 +47,100 @@
 
 
-#: edpykota:209
 msgid "Undefined soft limit set to hard limit (%s) on printer %s."
 msgstr "Limite souple ind�nie, positionn��a limite dure (%s) sur l'imprimante %s."
 
-#: edpykota:191
 msgid "Hard limit %i is less than soft limit %i, values will be exchanged."
 msgstr "Limite dure %i est inf�eure �a limite souple %i, les valeurs seront �ang�. "
 
-#: warnpykota:141
 msgid "warnpykota: option --groups is currently not implemented."
 msgstr "warnpykota: l'option --groups n'est pas encore impl�nt�"
 
-#: edpykota:287
 msgid "edpykota: option --groups is currently not implemented."
 msgstr "edpykota: l'option --groups n'est pas encore impl�nt�"
 
-#: repykota:107
 msgid "Pages grace time: %idays"
 msgstr "D�i de gr�: %ijours"
 
-#: repykota:177
 msgid "repykota: unused arguments [%s]. Aborting."
 msgstr "repykota: arguments [%s] inutilis� Abandon."
 
-#: edpykota:183
 msgid "Invalid softlimit value %s."
 msgstr "Valeur %s invalide pour la limite souple."
 
-#: edpykota:200
 msgid "Prototype %s not found in Quota Storage for printer %s."
 msgstr "Prototype %s non trouv�ans le Quota Storage pour l'imprimante %s."
 
-#: edpykota:285
 msgid "edpykota: options --softlimit or --hardlimit and --prototype are incompatible."
 msgstr "edpykota: les options --softlimit ou --hardlimit et --prototype sont incompatibles."
 
-#: pykota:114
 msgid "Printer %s not registered in the PyKota system"
 msgstr "Imprimante %s non enregistr�dans le syst� PyKota"
 
-#: repykota:175
 msgid "repykota: option --groups is currently not implemented."
 msgstr "repykota: l'option --groups n'est pas encore impl�nt�"
 
-#: edpykota:237
 msgid "Quota not found for object %s on printer %s."
 msgstr "Quota non trouv�our l'objet %s sur l'imprimante %s."
 
-#: repykota:173
 msgid "repykota: options --users and --groups are incompatible."
 msgstr "repykota: les options --users et --groups sont incompatibles."
 
-#: edpykota:229
 msgid "Invalid user name %s"
 msgstr "Nom d'utilisateur %s invalide"
 
-#: edpykota:211
 msgid "Both hard and soft limits must be set ! Aborting."
 msgstr "Les limites dures et souples doivent �e positionn� ! Abandon."
 
-#: warnpykota:139
 msgid "warnpykota: options --users and --groups are incompatible."
 msgstr "warnpykota: les options --users et --groups sont incompatibles."
 
-#: edpykota:206
 msgid "Undefined hard limit set to soft limit (%s) on printer %s."
 msgstr "Limite dure ind�nie, positionn��a limite souple (%s) sur l'imprimante %s."
 
-#: edpykota:283
 msgid "edpykota: options --users and --groups are incompatible."
 msgstr "edykota: les options --users et --groups sont incompatibles."
 
-#: warnpykota:143
 msgid "warnpykota: unused arguments [%s]. Aborting."
 msgstr "warnkota: arguments [%s] inutilis� Abandon."
 
-#: edpykota:188
 msgid "Invalid hardlimit value %s."
 msgstr "Valeur %s invalide pour la limite dure."
 
-#: repykota:116
 msgid "Group            used     soft     hard   grace        total"
 msgstr "Groupe           used     soft     hard   grace        total"
 
-#: edpykota:177 warnpykota:102 repykota:104
 msgid "There's no printer matching %s"
 msgstr "Aucune imprimante ne correspond �s"
 
-#: repykota:106
 msgid "*** Report for %s quota on printer %s"
 msgstr "*** Rapport pour le quota %s sur l'imprimante %s"
 
-#: pykota:137
 msgid "Error in page count value %i for user %s on printer %s"
 msgstr "Erreur dans la valeur %i du nombre de page pour l'utilisateur %s sur l'imprimante %s"
 
-#: edpykota:235
 msgid "Invalid group name %s"
 msgstr "Nom de groupe %s invalide"
 
-#: repykota:110
 msgid "User             used     soft     hard   grace        total"
 msgstr "Utilisateur      used     soft     hard   grace        total"
 
-#: edpykota:175
 msgid "Invalid printer name %s"
 msgstr "Nom d'imprimante %s invalide"
 
-
-#: config.py:97
-msgid "Option requester in section %s only supports values in %s"
-msgstr "L'option requester dans la section %s supporte seulement les valeurs %s"
-
-#: tool.py:263 tool.py:268
+msgid "Option requester for printer %s only supports values in %s"
+msgstr "L'option requester pour l'imprimante %s supporte seulement les valeurs %s"
+
 msgid "Print Quota Exceeded"
 msgstr "D�ssement de Quota d'Impression"
 
-#: tool.py:269
 msgid "Print Quota"
 msgstr "Quota d'Impression"
 
-#: requesters/external.py:31 requesters/external.py:38
 msgid "Requester not implemented yet."
 msgstr "Requester non encore impl�nt�
 
-#: config.py:88 config.py:101
 msgid "Option %s not found in section %s of %s"
 msgstr "Option %s non trouv�dans la section %s de %s"
 
-#: tool.py:268
 msgid ""
 "You will soon be forbidden to print anymore because\n"
@@ -180,5 +150,4 @@
 "votre Quota d'Impression sur l'imprimante %s est presque atteint."
 
-#: tool.py:202
 msgid ""
 "\n"
@@ -194,55 +163,41 @@
 "\t%s - <%s>\n"
 
-#: config.py:152
 msgid "Invalid grace delay %s"
 msgstr "D�i de gr� %s invalide"
 
-#: config.py:78
 msgid "Option logger only supports values in %s"
 msgstr "L'option logger supporte seulement les valeurs %s"
 
-#: config.py:73
 msgid "Option %s not found in section global of %s"
 msgstr "Option %s non trouv�dans la section global de %s"
 
-#: config.py:82
 msgid "Option method only supports values in %s"
 msgstr "L'option method supporte seulement les valeurs %s"
 
-#: tool.py:219
 msgid "Unable to match user %s on printer %s, applying default policy (%s)"
 msgstr "Impossible de trouver l'utilisateur %s sur l'imprimante %s, action par d�ut (%s) appliqu�
 
-#: tool.py:252
 msgid "Group quotas are currently not implemented."
 msgstr "Les quota de groupes ne sont pas encore impl�nt�"
 
-#: requesters/snmp.py:47
 msgid "Unknown printer address in SNMP(%s, %s) for printer %s"
 msgstr "Adresse d'imprimante inconnue dans SNMP(%s, %s) pour l'imprimante %s"
 
-#: tool.py:266
 msgid "Print Quota soft limit exceeded for user %s on printer %s"
 msgstr "Limite souple de Quota d'Impression d�ss�pour l'utilisateur %s sur l'imprimante %s"
 
-#: logger.py:49
 msgid "Unsupported logging subsystem %s"
 msgstr "Syst� de log %s non support�
-#: requesters/snmp.py:52
 msgid "Unable to query printer %s via SNMP(%s, %s)"
 msgstr "Impossible d'interroger l'imprimante %s par SNMP(%s, %s)"
 
-#: requester.py:47
 msgid "Unsupported requester backend %s"
 msgstr "Backend requester %s non support�
 
-#: config.py:92
 msgid "Option policy in section %s only supports values in %s"
 msgstr "L'option policy dans la section %s supporte seulement les valeurs %s"
 
-#: storage.py:111
 msgid "Unsupported quota storage backend %s"
 msgstr "Backend de stockage de quota %s non support�
-#: tool.py:263
 msgid ""
 "You are not allowed to print anymore because\n"
@@ -252,7 +207,13 @@
 "votre Quota d'Impression est d�ss�ur l'imprimante %s."
 
-#: tool.py:261
 msgid "Print Quota exceeded for user %s on printer %s"
 msgstr "D�ssement de Quota d'Impression pour l'utilisateur %s sur l'imprimante %s"
 
-
+msgid "Invalid requester for printer %s"
+msgstr "Requester invalide pour l'imprimante %s"
+
+msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
+msgstr "Adresse inconnue dans EXTERNAL(%s) pour l'imprimante %s"
+
+msgid "Unable to query printer %s via EXTERNAL(%s)"
+msgstr "Impossible d'interroger l'imprimante %s via EXTERNAL(%s)"
Index: /pykota/trunk/po/pykota.pot
===================================================================
--- /pykota/trunk/po/pykota.pot (revision 776)
+++ /pykota/trunk/po/pykota.pot (revision 780)
@@ -15,4 +15,8 @@
 #
 # $Log$
+# Revision 1.4  2003/02/10 00:42:17  jalet
+# External requester should be ok (untested)
+# New syntax for configuration file wrt requesters
+#
 # Revision 1.3  2003/02/09 14:02:31  jalet
 # French translation was added
@@ -42,135 +46,100 @@
 "Generated-By: pygettext.py 1.3\n"
 
-
-#: edpykota:209
 msgid "Undefined soft limit set to hard limit (%s) on printer %s."
 msgstr ""
 
-#: edpykota:191
 msgid "Hard limit %i is less than soft limit %i, values will be exchanged."
 msgstr ""
 
-#: warnpykota:141
 msgid "warnpykota: option --group is currently not implemented."
 msgstr ""
 
-#: edpykota:287
 msgid "edpykota: option --group is currently not implemented."
 msgstr ""
 
-#: repykota:107
 msgid "Pages grace time: %idays"
 msgstr ""
 
-#: repykota:177
 msgid "repykota: unused arguments [%s]. Aborting."
 msgstr ""
 
-#: edpykota:183
 msgid "Invalid softlimit value %s."
 msgstr ""
 
-#: edpykota:200
 msgid "Prototype %s not found in Quota Storage for printer %s."
 msgstr ""
 
-#: edpykota:285
 msgid "edpykota: options --softlimit or --hardlimit and --prototype are incompatible."
 msgstr ""
 
-#: pykota:114
 msgid "Printer %s not registered in the PyKota system"
 msgstr ""
 
-#: repykota:175
 msgid "repykota: option --group is currently not implemented."
 msgstr ""
 
-#: edpykota:237
 msgid "Quota not found for object %s on printer %s."
 msgstr ""
 
-#: repykota:173
 msgid "repykota: options --users and --groups are incompatible."
 msgstr ""
 
-#: edpykota:229
 msgid "Invalid user name %s"
 msgstr ""
 
-#: edpykota:211
 msgid "Both hard and soft limits must be set ! Aborting."
 msgstr ""
 
-#: warnpykota:139
 msgid "warnpykota: options --users and --groups are incompatible."
 msgstr ""
 
-#: edpykota:206
 msgid "Undefined hard limit set to soft limit (%s) on printer %s."
 msgstr ""
 
-#: edpykota:283
 msgid "edpykota: options --users and --groups are incompatible."
 msgstr ""
 
-#: warnpykota:143
 msgid "warnpykota: unused arguments [%s]. Aborting."
 msgstr ""
 
-#: edpykota:188
 msgid "Invalid hardlimit value %s."
 msgstr ""
 
-#: repykota:116
 msgid "Group            used     soft     hard   grace        total"
 msgstr ""
 
-#: edpykota:177 warnpykota:102 repykota:104
 msgid "There's no printer matching %s"
 msgstr ""
 
-#: repykota:106
 msgid "*** Report for %s quota on printer %s"
 msgstr ""
 
-#: pykota:137
 msgid "Error in page count value %i for user %s on printer %s"
 msgstr ""
 
-#: edpykota:235
 msgid "Invalid group name %s"
 msgstr ""
 
-#: repykota:110
 msgid "User             used     soft     hard   grace        total"
 msgstr ""
 
-#: edpykota:175
 msgid "Invalid printer name %s"
 msgstr ""
 
-
-#: config.py:97
-msgid "Option requester in section %s only supports values in %s"
-msgstr ""
-
-#: tool.py:263 tool.py:268
+msgid "Option requester for printer %s only supports values in %s"
+msgstr ""
+
 msgid "Print Quota Exceeded"
 msgstr ""
 
-#: tool.py:269
 msgid "Print Quota"
 msgstr ""
 
-#: requesters/external.py:31 requesters/external.py:38
 msgid "Requester not implemented yet."
 msgstr ""
 
-#: config.py:88 config.py:101
 msgid "Option %s not found in section %s of %s"
 msgstr ""
 
-#: tool.py:268
 msgid ""
 "You will soon be forbidden to print anymore because\n"
@@ -178,5 +147,4 @@
 msgstr ""
 
-#: tool.py:202
 msgid ""
 "\n"
@@ -187,57 +155,43 @@
 msgstr ""
 
-#: config.py:152
 msgid "Invalid grace delay %s"
 msgstr ""
 
-#: config.py:78
 msgid "Option logger only supports values in %s"
 msgstr ""
 
-#: config.py:73
 msgid "Option %s not found in section global of %s"
 msgstr ""
 
-#: config.py:82
 msgid "Option method only supports values in %s"
 msgstr ""
 
-#: tool.py:219
 msgid "Unable to match user %s on printer %s, applying default policy (%s)"
 msgstr ""
 
-#: tool.py:252
 msgid "Group quotas are currently not implemented."
 msgstr ""
 
-#: requesters/snmp.py:47
 msgid "Unknown printer address in SNMP(%s, %s) for printer %s"
 msgstr ""
 
-#: tool.py:266
 msgid "Print Quota soft limit exceeded for user %s on printer %s"
 msgstr ""
 
-#: logger.py:49
 msgid "Unsupported logging subsystem %s"
 msgstr ""
 
-#: requesters/snmp.py:52
 msgid "Unable to query printer %s via SNMP(%s, %s)"
 msgstr ""
 
-#: requester.py:47
 msgid "Unsupported requester backend %s"
 msgstr ""
 
-#: config.py:92
 msgid "Option policy in section %s only supports values in %s"
 msgstr ""
 
-#: storage.py:111
 msgid "Unsupported quota storage backend %s"
 msgstr ""
 
-#: tool.py:263
 msgid ""
 "You are not allowed to print anymore because\n"
@@ -245,7 +199,13 @@
 msgstr ""
 
-#: tool.py:261
 msgid "Print Quota exceeded for user %s on printer %s"
 msgstr ""
 
-
+msgid "Invalid requester for printer %s"
+msgstr ""
+
+msgid "Unknown printer address in EXTERNAL(%s) for printer %s"
+msgstr ""
+
+msgid "Unable to query printer %s via EXTERNAL(%s)"
+msgstr ""
