Ignore:
Timestamp:
Dec 27, 2011, 7:03:46 PM (12 years ago)
Author:
Jessica B. Hamrick <jhamrick@…>
Branches:
no-cups
Children:
7c143c9
Parents:
1037115
git-author:
Jessica B. Hamrick <jhamrick@…> (12/27/11 19:03:46)
git-committer:
Jessica B. Hamrick <jhamrick@…> (12/27/11 19:03:46)
Message:

Fix error with HTTP server recreating printer objects

File:
1 edited

Legend:

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

    r793432f ree8e6d0  
    22import os
    33import gutenbach.ipp as ipp
     4import logging
    45
    56# initialize logger
     
    1819    ]
    1920
    20     def __init__(self, document=None):
     21    def __init__(self, jid, printer, creator="", name="", size=0):
    2122        """Initialize a Gutenbach job.
    2223
     
    2425        document to print to the value of document.
    2526        """
    26          
    27         self.jid = None
    28         self.name = document
    29         self.status = None
    30         self.document = document
    31         self.printer = None
     27
     28        self.jid      = jid
     29        self.printer  = printer
     30
     31        self.creator  = creator
     32        self.name     = name
     33        self.size     = size
     34
     35        self.status   = ipp.JobStates.PENDING
    3236
    3337    def __getattr__(self, attr):
    3438        try:
    35             return super(Job, self).__getattr__(attr)
     39            return self.__getattribute__(attr)
    3640        except AttributeError:
    3741            pass
    38 
    39         return super(Job, self).__getattr__(
    40             attr.replace("-", "_"))
     42        return self.__getattribute__(attr.replace("-", "_"))
    4143
    4244    def __hasattr__(self, attr):
    43         has = super(Job, self).__hasattr__(attr)
    44         if not has:
    45             has = super(Job, self).__hasattr__(
    46                 attr.replace("-", "_"))
    47         return has
     45        try:
     46            getattr(self, attr)
     47            return True
     48        except AttributeError:
     49            return False
    4850
    4951    #### Job attributes
     
    6062    @property
    6163    def job_originating_user_name(self):
    62         return ipp.JobOriginatingUserName("jhamrick")
     64        return ipp.JobOriginatingUserName(self.creator)
    6365
    6466    # XXX: we need to actually calculate this!
    6567    @property
    6668    def job_k_octets(self):
    67         return ipp.JobKOctets(1)
     69        return ipp.JobKOctets(self.size)
    6870
    6971    @property
     
    7577        return ipp.JobPrinterUri(self.printer.uri)
    7678
    77     def get_job_attributes(self, request):
    78         attributes = [getattr(self, attr) for attr in self.attributes]
     79    def get_job_attributes(self, request=None):
     80        if request and 'requested-attributes' in request:
     81            requested = []
     82            for value in request['requested-attributes'].values:
     83                if value.value in self.attributes:
     84                    requested.append(value.value)
     85        else:
     86            requested = self.attributes
     87           
     88        attributes = [getattr(self, attr) for attr in requested]
    7989        return attributes
    8090   
    8191    #######
    82 
    83     def enqueue(self, printer, job_id):
    84         if self.status != None:
    85             raise InvalidJobException(
    86                 "Cannot enqueue a job that has " + \
    87                 "already been initialized!")
    88         self.printer = printer
    89         self.jid = job_id
    90         self.status = const.JobStates.PENDING
    9192
    9293    def play(self):
     
    107108
    108109    def __str__(self):
    109         return "<Job %d '%s'>" % \
    110                (self.jid if self.jid is not None else -1, \
    111                 self.document)
     110        return "<Job %d '%s'>" % (self.jid if self.jid is not None else -1, self.name)
Note: See TracChangeset for help on using the changeset viewer.