Changeset 3288
- Timestamp:
- 01/11/08 19:08:24 (17 years ago)
- Location:
- pykota/trunk
- Files:
-
- 32 modified
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/bin/autopykota
r3275 r3288 26 26 import os 27 27 28 from pykota.tool import PyKotaTool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 28 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 29 from pykota.tool import PyKotaTool, crashed, N_ 29 30 30 31 __doc__ = N_("""autopykota v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/cupspykota
r3276 r3288 44 44 from mx import DateTime 45 45 46 from pykota.tool import PyKotaTool, PyKotaToolError, crashed 46 from pykota.errors import PyKotaToolError 47 from pykota.tool import PyKotaTool, crashed 47 48 from pykota.accounter import openAccounter 48 49 from pykota import cups -
pykota/trunk/bin/dumpykota
r3275 r3288 24 24 import sys 25 25 26 from pykota.tool import PyKotaCommandLineError, crashed, N_ 26 from pykota.errors import PyKotaCommandLineError 27 from pykota.tool import crashed, N_ 27 28 from pykota.dumper import DumPyKota 28 29 -
pykota/trunk/bin/edpykota
r3275 r3288 24 24 import sys 25 25 26 from pykota.tool import Percent, PyKotaTool, PyKotaCommandLineError, crashed, N_ 26 from pykota.errors import PyKotaCommandLineError 27 from pykota.tool import Percent, PyKotaTool, crashed, N_ 27 28 from pykota.storage import StorageUserPQuota, StorageGroupPQuota 28 29 -
pykota/trunk/bin/pkbanner
r3275 r3288 33 33 from reportlab.lib.units import cm 34 34 except ImportError : 35 hasRL = 035 hasRL = False 36 36 else : 37 hasRL = 137 hasRL = True 38 38 39 39 try : 40 40 import PIL.Image 41 41 except ImportError : 42 hasPIL = 042 hasPIL = False 43 43 else : 44 hasPIL = 144 hasPIL = True 45 45 46 from pykota.tool import Tool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 46 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 47 from pykota.tool import Tool, crashed, N_ 47 48 48 49 __doc__ = N_("""pkbanner v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pkbcodes
r3275 r3288 26 26 import pwd 27 27 28 from pykota.tool import Percent, PyKotaTool, PyKotaCommandLineError, crashed, N_ 28 from pykota.errors import PyKotaCommandLineError 29 from pykota.tool import Percent, PyKotaTool, crashed, N_ 29 30 from pykota.storage import StorageBillingCode 30 31 -
pykota/trunk/bin/pkinvoice
r3276 r3288 33 33 from reportlab.lib.units import cm 34 34 except ImportError : 35 hasRL = 035 hasRL = False 36 36 else : 37 hasRL = 137 hasRL = True 38 38 39 39 try : 40 40 import PIL.Image 41 41 except ImportError : 42 hasPIL = 042 hasPIL = False 43 43 else : 44 hasPIL = 1 45 46 from pykota.tool import Percent, PyKotaTool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 44 hasPIL = True 45 46 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 47 from pykota.tool import Percent, PyKotaTool, crashed, N_ 47 48 48 49 __doc__ = N_("""pkinvoice v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pkmail
r3275 r3288 31 31 import email.Utils 32 32 33 from pykota.tool import PyKotaTool, PyKotaCommandLineError, crashed, N_ 33 from pykota.errors import PyKotaCommandLineError 34 from pykota.tool import PyKotaTool, crashed, N_ 34 35 35 36 __doc__ = N_("""pkmail v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pknotify
r3276 r3288 31 31 import PAM 32 32 except ImportError : 33 hasPAM = 033 hasPAM = False 34 34 else : 35 hasPAM = 1 36 37 from pykota.tool import Tool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 35 hasPAM = True 36 37 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 38 from pykota.tool import Tool, crashed, N_ 38 39 39 40 __doc__ = N_("""pknotify v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pkprinters
r3276 r3288 26 26 import pwd 27 27 28 from pykota.tool import Percent, PyKotaTool, PyKotaCommandLineError, crashed, N_ 28 from pykota.errors import PyKotaCommandLineError 29 from pykota.tool import Percent, PyKotaTool, crashed, N_ 29 30 from pykota.storage import StoragePrinter 30 31 -
pykota/trunk/bin/pkrefund
r3276 r3288 33 33 from reportlab.lib.units import cm 34 34 except ImportError : 35 hasRL = 035 hasRL = False 36 36 else : 37 hasRL = 137 hasRL = True 38 38 39 39 try : 40 40 import PIL.Image 41 41 except ImportError : 42 hasPIL = 042 hasPIL = False 43 43 else : 44 hasPIL = 1 45 46 from pykota.tool import Percent, PyKotaTool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 44 hasPIL = True 45 46 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 47 from pykota.tool import Percent, PyKotaTool, crashed, N_ 47 48 48 49 __doc__ = N_("""pkrefund v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pkturnkey
r3275 r3288 29 29 import signal 30 30 31 from pykota.tool import Tool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 31 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 32 from pykota.tool import Tool, crashed, N_ 32 33 33 34 __doc__ = N_("""pkturnkey v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pkusers
r3275 r3288 26 26 import grp 27 27 28 from pykota.tool import Percent, PyKotaTool, PyKotaCommandLineError, crashed, N_ 28 from pykota.errors import PyKotaCommandLineError 29 from pykota.tool import Percent, PyKotaTool, crashed, N_ 29 30 from pykota.storage import StorageUser, StorageGroup 30 31 -
pykota/trunk/bin/pykosd
r3275 r3288 33 33 sys.exit(-1) 34 34 35 from pykota.tool import PyKotaTool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 35 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 36 from pykota.tool import PyKotaTool, crashed, N_ 36 37 37 38 __doc__ = N_("""pykosd v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/bin/pykotme
r3275 r3288 26 26 import pwd 27 27 28 from pykota.tool import PyKotaTool, PyKotaCommandLineError, crashed, N_ 28 from pykota.errors import PyKotaCommandLineError 29 from pykota.tool import PyKotaTool, crashed, N_ 29 30 from pykota.accounter import openAccounter 30 31 -
pykota/trunk/bin/repykota
r3275 r3288 28 28 from mx import DateTime 29 29 30 from pykota.tool import PyKotaTool, PyKotaToolError, PyKotaCommandLineError, crashed, N_ 30 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 31 from pykota.tool import PyKotaTool, crashed, N_ 31 32 from pykota import reporter 32 33 -
pykota/trunk/bin/warnpykota
r3275 r3288 26 26 import pwd 27 27 28 from pykota.tool import PyKotaTool, PyKotaCommandLineError, crashed, N_ 28 from pykota.errors import PyKotaCommandLineError 29 from pykota.tool import PyKotaTool, crashed, N_ 29 30 30 31 __doc__ = N_("""warnpykota v%(__version__)s (c) %(__years__)s %(__author__)s -
pykota/trunk/pykota/accounter.py
r3275 r3288 27 27 import imp 28 28 29 class PyKotaAccounterError(Exception): 30 """An exception for Accounter related stuff.""" 31 def __init__(self, message = ""): 32 self.message = message 33 Exception.__init__(self, message) 34 def __repr__(self): 35 return self.message 36 __str__ = __repr__ 37 29 from pykota.errors import PyKotaAccounterError 30 38 31 class AccounterBase : 39 32 """A class to account print usage by querying printers.""" -
pykota/trunk/pykota/accounters/hardware.py
r3275 r3288 25 25 import popen2 26 26 27 from pykota.accounter import AccounterBase, PyKotaAccounterError 27 from pykota.errors import PyKotaAccounterError 28 from pykota.accounter import AccounterBase 28 29 from pykota.accounters import snmp, pjl 29 30 -
pykota/trunk/pykota/accounters/ink.py
r3275 r3288 21 21 # 22 22 23 """This module handles ink accounting in PyKota.""" 24 23 25 import os 24 from pykota.accounter import AccounterBase, PyKotaAccounterError25 26 27 from pykota.errors import PyKotaAccounterError 28 from pykota.accounter import AccounterBase 26 29 27 30 class Accounter(AccounterBase) : … … 50 53 colorspace = colorspace.lower() 51 54 if colorspace not in ("cmyk", "bw", "cmy", "rgb", "gc") : 52 raise PyKotaAccounterError, "Invalid parameters for ink accounter : [%s]"% self.arguments55 raise PyKotaAccounterError, _("Invalid parameters for ink accounter : [%s]") % self.arguments 53 56 54 57 try : -
pykota/trunk/pykota/accounters/software.py
r3285 r3288 21 21 # 22 22 23 """This module handles software page counting for PyKota.""" 24 23 25 import os 24 26 import popen2 25 from pykota.accounter import AccounterBase, PyKotaAccounterError 27 28 from pykota.errors import PyKotaAccounterError 29 from pykota.accounter import AccounterBase 26 30 27 31 class Accounter(AccounterBase) : -
pykota/trunk/pykota/config.py
r3284 r3288 27 27 import ConfigParser 28 28 29 class PyKotaConfigError(Exception): 30 """An exception for PyKota config related stuff.""" 31 def __init__(self, message = ""): 32 self.message = message 33 Exception.__init__(self, message) 34 def __repr__(self): 35 return self.message 36 __str__ = __repr__ 37 29 from pykota.errors import PyKotaConfigError 30 38 31 class PyKotaConfig : 39 32 """A class to deal with PyKota's configuration.""" -
pykota/trunk/pykota/cups.py
r3275 r3288 22 22 """This module implements some CUPS specific classes.""" 23 23 24 from pykota. toolimport PyKotaToolError24 from pykota.errors import PyKotaToolError 25 25 try : 26 26 from pkipplib import pkipplib -
pykota/trunk/pykota/dumper.py
r3275 r3288 35 35 sys.stderr.write("The jaxml Python module is not installed. XML output is disabled.\n") 36 36 sys.stderr.write("Download jaxml from http://www.librelogiciel.com/software/ or from your Debian archive of choice\n") 37 hasJAXML = 037 hasJAXML = False 38 38 else : 39 hasJAXML = 139 hasJAXML = True 40 40 41 41 from pykota import version 42 from pykota.tool import PyKotaTool, PyKotaToolError, PyKotaCommandLineError, N_ 42 from pykota.tool import PyKotaTool, N_ 43 from pykota.errors import PyKotaToolError, PyKotaCommandLineError 43 44 44 45 class DumPyKota(PyKotaTool) : -
pykota/trunk/pykota/errors.py
r3275 r3288 20 20 # 21 21 22 """This module implements some CUPS specific classes."""22 """This module defines ALL PyKota specific exceptions.""" 23 23 24 from pykota.tool import PyKotaToolError 25 try : 26 from pkipplib import pkipplib 27 except ImportError : 28 raise RuntimeError, "The python-pkipplib module is now mandatory. You can download pkipplib from http://www.pykota.com/" 29 30 class JobTicket : 31 """A class to hold CUPS print job informations.""" 32 def __init__(self, jobid=None, printername=None, copies=1, filename=None, \ 33 options=None) : 34 """Initializes a print job's information.""" 35 self.JobId = jobid 36 self.PrinterName = printername 37 self.Copies = copies 38 self.FileName = filename 39 self.Options = options 40 self.Charset = None 41 self.OriginatingUserName = None 42 self.OriginalUserName = None 43 self.Title = None 44 self.BillingCode = None 45 self.OriginatingHostName = None 46 self.TimeAtCreation = None 47 self.TimeAtProcessing = None 48 self.MimeType = None 49 self.UUID = None 50 if self.JobId is not None : 51 self.retrieveAttributesFromCUPS() 24 class PyKotaError(Exception) : 25 """Mother class of all PyKota exceptions.""" 26 def __init__(self, value) : 27 """Saves the value passed as a parameter.""" 28 self.value = value 52 29 53 def getAttributeTypeAndValue(self, ippanswer, attribute, category="job") : 54 """Retrieves a particular attribute's type and value from an IPP answer. 30 def __str__(self) : 31 """Returns an unicode string representation.""" 32 try : 33 return unicode(self.value, errors="replace") 34 except TypeError : 35 return unicode(self.value) # None and strings which are already unicode 55 36 56 Returns a tuple of the form (type, value). 57 """ 58 try : 59 return getattr(ippanswer, category)[attribute][0] 60 except KeyError : 61 return (None, None) 62 63 def retrieveAttributesFromCUPS(self) : 64 """Retrieve attribute's values from CUPS.""" 65 server = pkipplib.CUPS() # TODO : username and password and/or encryption 66 answer = server.getJobAttributes(self.JobId) 67 if answer is None : 68 raise PyKotaToolError, "Network error while querying the CUPS server : %s" \ 69 % server.lastErrorMessage 70 (dummy, self.Charset) = self.getAttributeTypeAndValue(answer, "attributes-charset", "operation") 71 (dummy, self.OriginatingUserName) = self.getAttributeTypeAndValue(answer, "job-originating-user-name") 72 (dummy, self.Title) = self.getAttributeTypeAndValue(answer, "job-name") 73 (dummy, self.BillingCode) = self.getAttributeTypeAndValue(answer, "job-billing") 74 (dummy, self.OriginatingHostName) = self.getAttributeTypeAndValue(answer, "job-originating-host-name") 75 (dummy, self.UUID) = self.getAttributeTypeAndValue(answer, "job-uuid") 76 (dummy, self.TimeAtCreation) = self.getAttributeTypeAndValue(answer, "time-at-creation") 77 (dummy, self.TimeAtProcessing) = self.getAttributeTypeAndValue(answer, "time-at-processing") 78 (dummy, self.MimeType) = self.getAttributeTypeAndValue(answer, "document-format") 79 80 for attrib in ("OriginatingUserName", 81 "OriginatingHostName", 82 "Title", 83 "BillingCode", 84 "PrinterName", 85 "Options", 86 "Charset", 87 "UUID", 88 "MimeType") : 89 try : 90 setattr(self, attrib, 91 getattr(self, attrib).decode("UTF-8", "replace")) 92 except AttributeError : 93 pass 94 95 self.OriginalUserName = self.OriginatingUserName[:] 37 class PyKotaToolError(PyKotaError) : 38 """PyKota Exception for all executables.""" 39 pass 96 40 97 if __name__ == "__main__" : 98 import sys 99 if len(sys.argv) != 2 : 100 sys.stderr.write("usage : python cups.py jobid\n") 101 else : 102 job = JobTicket(int(sys.argv[1]), "FakePrinter") 103 for attribute in ("PrinterName", "Charset", "JobId", "Copies", 104 "FileName", "OriginatingUserName", 105 "Title", "BillingCode", "OriginatingHostName", 106 "TimeAtCreation", "TimeAtProcessing", "UUID", 107 "MimeType") : 108 sys.stdout.write("%s : %s\n" % (attribute, repr(getattr(job, attribute)))) 41 class PyKotaToolError(PyKotaError) : 42 """PyKota Exception for all executables.""" 43 pass 44 45 class PyKotaCommandLineError(PyKotaToolError) : 46 """PyKota Exception for errors on executables' command line.""" 47 pass 48 49 class PyKotaStorageError(PyKotaError) : 50 """PyKota Exception for database backend related errors.""" 51 pass 52 53 class PyKotaConfigError(PyKotaError) : 54 """PyKota Exception for errors in PyKota's configuration.""" 55 pass 56 57 class PyKotaAccounterError(PyKotaError) : 58 """PyKota Exception for errors in PyKota accounters.""" 59 pass 60 61 class PyKotaReporterError(PyKotaError) : 62 """PyKota Exception for errors in PyKota report generators.""" 63 pass 64 65 class PyKotaLoggingError(PyKotaError) : 66 """PyKota Exception for errors in PyKota logging.""" 67 pass -
pykota/trunk/pykota/logger.py
r3275 r3288 26 26 import imp 27 27 28 class PyKotaLoggingError(Exception): 29 """An exception for logging related stuff.""" 30 def __init__(self, message = ""): 31 self.message = message 32 Exception.__init__(self, message) 33 def __repr__(self): 34 return self.message 35 __str__ = __repr__ 28 from pykota.errors import PyKotaLoggingError 36 29 37 30 def openLogger(backend) : -
pykota/trunk/pykota/reporter.py
r3275 r3288 27 27 from mx import DateTime 28 28 29 class PyKotaReporterError(Exception): 30 """An exception for Reporter related stuff.""" 31 def __init__(self, message = ""): 32 self.message = message 33 Exception.__init__(self, message) 34 def __repr__(self): 35 return self.message 36 __str__ = __repr__ 29 from pykota.errors import PyKotaReporterError 37 30 38 31 class BaseReporter : -
pykota/trunk/pykota/storage.py
r3276 r3288 27 27 from mx import DateTime 28 28 29 class PyKotaStorageError(Exception): 30 """An exception for database related stuff.""" 31 def __init__(self, message = ""): 32 self.message = message 33 Exception.__init__(self, message) 34 def __repr__(self): 35 return self.message 36 __str__ = __repr__ 37 38 29 from pykota.errors import PyKotaStorageError 30 39 31 class StorageObject : 40 32 """Object present in the database.""" -
pykota/trunk/pykota/storages/ldapstorage.py
r3275 r3288 37 37 from mx import DateTime 38 38 39 from pykota.storage import PyKotaStorageError, BaseStorage, \ 39 from pykota.errors import PyKotaStorageError 40 from pykota.storage import BaseStorage, \ 40 41 StorageUser, StorageGroup, StoragePrinter, \ 41 42 StorageJob, StorageLastJob, StorageUserPQuota, \ -
pykota/trunk/pykota/storages/mysqlstorage.py
r3275 r3288 25 25 import time 26 26 27 from pykota.storage import PyKotaStorageError, BaseStorage 27 from pykota.errors import PyKotaStorageError 28 from pykota.storage import BaseStorage 28 29 from pykota.storages.sql import SQLStorage 29 30 -
pykota/trunk/pykota/storages/pgstorage.py
r3275 r3288 26 26 from types import StringType 27 27 28 from pykota.storage import PyKotaStorageError, BaseStorage 28 from pykota.errors import PyKotaStorageError 29 from pykota.storage import BaseStorage 29 30 from pykota.storages.sql import SQLStorage 30 31 -
pykota/trunk/pykota/storages/sqlitestorage.py
r3275 r3288 25 25 import time 26 26 27 from pykota.storage import PyKotaStorageError, BaseStorage 27 from pykota.errors import PyKotaStorageError 28 from pykota.storage import BaseStorage 28 29 from pykota.storages.sql import SQLStorage 29 30 -
pykota/trunk/pykota/tool.py
r3287 r3288 39 39 from mx import DateTime 40 40 41 from pykota.errors import PyKotaCommandLineError 41 42 from pykota import config, storage, logger 42 43 from pykota.version import __version__, __author__, __years__, __gplblurb__ … … 46 47 return message 47 48 48 class PyKotaToolError(Exception):49 """An exception for PyKota related stuff."""50 def __init__(self, message = ""):51 self.message = message52 Exception.__init__(self, message)53 def __repr__(self):54 return self.message.encode(sys.stdout.encoding or "UTF-8", "replace")55 __str__ = __repr__56 57 class PyKotaCommandLineError(PyKotaToolError) :58 """An exception for Pykota command line tools."""59 pass60 61 49 def crashed(message="Bug in PyKota") : 62 50 """Minimal crash method."""