Ignore:
Timestamp:
Dec 20, 2011, 11:17:58 AM (12 years ago)
Author:
Jessica B. Hamrick <jhamrick@…>
Branches:
no-cups
Children:
08a764a
Parents:
6ed9d7a
git-author:
Jessica B. Hamrick <jhamrick@…> (12/20/11 11:17:58)
git-committer:
Jessica B. Hamrick <jhamrick@…> (12/20/11 11:17:58)
Message:

Remove ipp-specific objects from server/job and server/printers (but keep ipp-specific attribute names)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • server/lib/gutenbach/server/job.py

    rb2e077a r1a63bf7  
    77class Job(object):
    88
     9    # for IPP
    910    attributes = [
    1011        "job-id",
     
    1415        "job-state",
    1516        "job-printer-uri"
    16         ]
     17    ]
    1718
    1819    def __init__(self, document=None):
     
    2324        """
    2425         
    25         self._id = None
    26         self._name = document
    27         self._status = None
    28         self._document = document
    29         self._printer = None
     26        self.jid = None
     27        self.name = document
     28        self.status = None
     29        self.document = document
     30        self.printer = None
     31
     32    def __getattr__(self, attr):
     33        try:
     34            return super(Job, self).__getattr__(attr)
     35        except AttributeError:
     36            pass
     37
     38        return super(Job, self).__getattr__(
     39            attr.replace("-", "_"))
     40
     41    def __hasattr__(self, attr):
     42        has = super(Job, self).__hasattr__(attr)
     43        if not has:
     44            has = super(Job, self).__hasattr__(
     45                attr.replace("-", "_"))
     46        return has
     47
     48    #### Job attributes
    3049
    3150    @property
    3251    def job_id(self):
    33         return ipp.Attribute(
    34             'job-id',
    35             [ipp.Value(ipp.Tags.INTEGER, self._id)])
     52        return self.jid
    3653
    3754    @property
    3855    def job_name(self):
    39         return ipp.Attribute(
    40             'job-name',
    41             [ipp.Value(ipp.Tags.NAME_WITHOUT_LANGUAGE, self._name)])
     56        return self.name
    4257
    4358    # XXX: we need to actually calculate this!
    4459    @property
    4560    def job_originating_user_name(self):
    46         return ipp.Attribute(
    47             'job-originating-user-name',
    48             [ipp.Value(ipp.Tags.NAME_WITHOUT_LANGUAGE, "jhamrick")])
     61        return "jhamrick"
    4962
    5063    # XXX: we need to actually calculate this!
    5164    @property
    5265    def job_k_octets(self):
    53         return ipp.Attribute(
    54             'job-k-octets',
    55             [ipp.Value(ipp.Tags.INTEGER, 1)])
     66        return "job-k-octets"
    5667
    5768    @property
    5869    def job_state(self):
    59         return ipp.Attribute(
    60             'job-state',
    61             [ipp.Value(ipp.Tags.ENUM, self._status)])
     70        return self.status
    6271
    6372    @property
    6473    def job_printer_uri(self):
    65         return ipp.Attribute(
    66             'job-printer-uri',
    67             [ipp.Value(ipp.Tags.URI, self._printer._uri)])
     74        return self.printer.uri
    6875
    6976    def get_job_attributes(self, request):
    70         attributes = [getattr(self, attr.replace("-", "_")) for attr in self.attributes]
     77        attributes = [(attr, getattr(self, attr)) for attr in self.attributes]
    7178        return attributes
    72 
    7379   
    7480    #######
    75     @property
    76     def document(self):
    77         return self._document
    78 
    79     @document.setter
    80     def document(self, path):
    81         if not os.path.exists(path):
    82             raise IOError("Document '%s' does not exist!" % path)
    83         self._document = path
    84 
    85     @property
    86     def status(self):
    87         return self._status
    88 
    89     @property
    90     def printer(self):
    91         return self._printer
    9281
    9382    def enqueue(self, printer, job_id):
    94         if self._status != None:
     83        if self.status != None:
    9584            raise InvalidJobException(
    9685                "Cannot enqueue a job that has " + \
    9786                "already been initialized!")
    98         self._printer = printer
    99         self._job_id = job_id
    100         self._status = const.JobStates.PENDING
     87        self.printer = printer
     88        self.jid = job_id
     89        self.status = const.JobStates.PENDING
    10190
    10291    def play(self):
     
    10594                "Cannot play an inactive job!")
    10695       
    107         self._status = const.JobStates.PROCESSING
     96        self.status = const.JobStates.PROCESSING
    10897        # TODO: add external call to music player
    10998        print "Playing job %s" % str(self)
    110         self._printer.complete_job(self._id)
     99        self.printer.complete_job(self.jid)
    111100
    112101    def finish(self):
    113         self._status = const.JobStates.COMPLETE
     102        self.status = const.JobStates.COMPLETE
    114103
    115104    def __repr__(self):
     
    118107    def __str__(self):
    119108        return "<Job %d '%s'>" % \
    120                (self._id if self._id is not None else -1, \
    121                 self._document)
     109               (self.jid if self.jid is not None else -1, \
     110                self.document)
Note: See TracChangeset for help on using the changeset viewer.