Changeset 3288 for pykota/trunk/pykota

Show
Ignore:
Timestamp:
01/11/08 19:08:24 (16 years ago)
Author:
jerome
Message:

Moved all exceptions definitions to a dedicated module.

Location:
pykota/trunk/pykota
Files:
15 modified
1 copied

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/accounter.py

    r3275 r3288  
    2727import imp 
    2828 
    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      
     29from pykota.errors import PyKotaAccounterError 
     30 
    3831class AccounterBase :     
    3932    """A class to account print usage by querying printers.""" 
  • pykota/trunk/pykota/accounters/hardware.py

    r3275 r3288  
    2525import popen2 
    2626 
    27 from pykota.accounter import AccounterBase, PyKotaAccounterError 
     27from pykota.errors import PyKotaAccounterError 
     28from pykota.accounter import AccounterBase 
    2829from pykota.accounters import snmp, pjl 
    2930 
  • pykota/trunk/pykota/accounters/ink.py

    r3275 r3288  
    2121# 
    2222 
     23"""This module handles ink accounting in PyKota.""" 
     24 
    2325import os 
    24 from pykota.accounter import AccounterBase, PyKotaAccounterError 
    2526 
     27from pykota.errors import PyKotaAccounterError 
     28from pykota.accounter import AccounterBase 
    2629 
    2730class Accounter(AccounterBase) : 
     
    5053        colorspace = colorspace.lower() 
    5154        if colorspace not in ("cmyk", "bw", "cmy", "rgb", "gc") : 
    52             raise PyKotaAccounterError, "Invalid parameters for ink accounter : [%s]" % self.arguments 
     55            raise PyKotaAccounterError, _("Invalid parameters for ink accounter : [%s]") % self.arguments 
    5356             
    5457        try :     
  • pykota/trunk/pykota/accounters/software.py

    r3285 r3288  
    2121# 
    2222 
     23"""This module handles software page counting for PyKota.""" 
     24 
    2325import os 
    2426import popen2 
    25 from pykota.accounter import AccounterBase, PyKotaAccounterError 
     27 
     28from pykota.errors import PyKotaAccounterError 
     29from pykota.accounter import AccounterBase 
    2630 
    2731class Accounter(AccounterBase) : 
  • pykota/trunk/pykota/config.py

    r3284 r3288  
    2727import ConfigParser 
    2828 
    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      
     29from pykota.errors import PyKotaConfigError     
     30 
    3831class PyKotaConfig : 
    3932    """A class to deal with PyKota's configuration.""" 
  • pykota/trunk/pykota/cups.py

    r3275 r3288  
    2222"""This module implements some CUPS specific classes.""" 
    2323 
    24 from pykota.tool import PyKotaToolError 
     24from pykota.errors import PyKotaToolError 
    2525try : 
    2626    from pkipplib import pkipplib 
  • pykota/trunk/pykota/dumper.py

    r3275 r3288  
    3535    sys.stderr.write("The jaxml Python module is not installed. XML output is disabled.\n") 
    3636    sys.stderr.write("Download jaxml from http://www.librelogiciel.com/software/ or from your Debian archive of choice\n") 
    37     hasJAXML = 0 
     37    hasJAXML = False 
    3838else :     
    39     hasJAXML = 1 
     39    hasJAXML = True 
    4040 
    4141from pykota import version 
    42 from pykota.tool import PyKotaTool, PyKotaToolError, PyKotaCommandLineError, N_ 
     42from pykota.tool import PyKotaTool, N_ 
     43from pykota.errors import PyKotaToolError, PyKotaCommandLineError 
    4344 
    4445class DumPyKota(PyKotaTool) :         
  • pykota/trunk/pykota/errors.py

    r3275 r3288  
    2020# 
    2121 
    22 """This module implements some CUPS specific classes.""" 
     22"""This module defines ALL PyKota specific exceptions.""" 
    2323 
    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() 
     24class 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 
    5229         
    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 
    5536         
    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[:] 
     37class PyKotaToolError(PyKotaError) : 
     38    """PyKota Exception for all executables.""" 
     39    pass 
    9640     
    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)))) 
     41class PyKotaToolError(PyKotaError) : 
     42    """PyKota Exception for all executables.""" 
     43    pass 
     44     
     45class PyKotaCommandLineError(PyKotaToolError) : 
     46    """PyKota Exception for errors on executables' command line.""" 
     47    pass 
     48     
     49class PyKotaStorageError(PyKotaError) : 
     50    """PyKota Exception for database backend related errors.""" 
     51    pass 
     52     
     53class PyKotaConfigError(PyKotaError) : 
     54    """PyKota Exception for errors in PyKota's configuration.""" 
     55    pass 
     56     
     57class PyKotaAccounterError(PyKotaError) : 
     58    """PyKota Exception for errors in PyKota accounters.""" 
     59    pass 
     60     
     61class PyKotaReporterError(PyKotaError) : 
     62    """PyKota Exception for errors in PyKota report generators.""" 
     63    pass 
     64     
     65class PyKotaLoggingError(PyKotaError) : 
     66    """PyKota Exception for errors in PyKota logging.""" 
     67    pass 
  • pykota/trunk/pykota/logger.py

    r3275 r3288  
    2626import imp 
    2727 
    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__ 
     28from pykota.errors import PyKotaLoggingError 
    3629 
    3730def openLogger(backend) : 
  • pykota/trunk/pykota/reporter.py

    r3275 r3288  
    2727from mx import DateTime 
    2828 
    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__ 
     29from pykota.errors import PyKotaReporterError 
    3730     
    3831class BaseReporter :     
  • pykota/trunk/pykota/storage.py

    r3276 r3288  
    2727from mx import DateTime 
    2828 
    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          
     29from pykota.errors import PyKotaStorageError 
     30 
    3931class StorageObject : 
    4032    """Object present in the database.""" 
  • pykota/trunk/pykota/storages/ldapstorage.py

    r3275 r3288  
    3737from mx import DateTime 
    3838 
    39 from pykota.storage import PyKotaStorageError, BaseStorage, \ 
     39from pykota.errors import PyKotaStorageError 
     40from pykota.storage import BaseStorage, \ 
    4041                           StorageUser, StorageGroup, StoragePrinter, \ 
    4142                           StorageJob, StorageLastJob, StorageUserPQuota, \ 
  • pykota/trunk/pykota/storages/mysqlstorage.py

    r3275 r3288  
    2525import time 
    2626 
    27 from pykota.storage import PyKotaStorageError, BaseStorage 
     27from pykota.errors import PyKotaStorageError 
     28from pykota.storage import BaseStorage 
    2829from pykota.storages.sql import SQLStorage 
    2930 
  • pykota/trunk/pykota/storages/pgstorage.py

    r3275 r3288  
    2626from types import StringType 
    2727 
    28 from pykota.storage import PyKotaStorageError, BaseStorage 
     28from pykota.errors import PyKotaStorageError 
     29from pykota.storage import BaseStorage 
    2930from pykota.storages.sql import SQLStorage 
    3031 
  • pykota/trunk/pykota/storages/sqlitestorage.py

    r3275 r3288  
    2525import time 
    2626 
    27 from pykota.storage import PyKotaStorageError, BaseStorage 
     27from pykota.errors import PyKotaStorageError 
     28from pykota.storage import BaseStorage 
    2829from pykota.storages.sql import SQLStorage 
    2930 
  • pykota/trunk/pykota/tool.py

    r3287 r3288  
    3939from mx import DateTime 
    4040 
     41from pykota.errors import PyKotaCommandLineError 
    4142from pykota import config, storage, logger 
    4243from pykota.version import __version__, __author__, __years__, __gplblurb__ 
     
    4647    return message 
    4748 
    48 class PyKotaToolError(Exception): 
    49     """An exception for PyKota related stuff.""" 
    50     def __init__(self, message = ""): 
    51         self.message = message 
    52         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     pass 
    60      
    6149def crashed(message="Bug in PyKota") :     
    6250    """Minimal crash method."""