Ignore:
Timestamp:
Jan 21, 2012, 6:24:36 PM (12 years ago)
Author:
Daniel Cooper <danny@…>
Branches:
no-cups
Children:
6c60b2e
Parents:
279640c (diff), bd5bffc (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Daniel Cooper <danny@…> (01/21/12 18:24:36)
git-committer:
Daniel Cooper <danny@…> (01/21/12 18:24:36)
Message:

Merge branch 'no-cups' of github.com:jhamrick/gutenbach into no-cups

Location:
server/lib/gutenbach/server
Files:
3 edited

Legend:

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

    r57bc2dc rbd5bffc  
    5656    def __del__(self):
    5757        if self.player:
    58             self.player.mplayer_stop()
     58            if self.player.is_playing:
     59                self.player.mplayer_stop()
     60            if self.player.fh:
     61                if self.player.fh.closed:
     62                    self.player.fh.close()
    5963            self.player = None
    60         if self.document and not self.document.closed:
    61             self.document.close()
    62             self.document = None
    63 
     64
     65        self.document = None
    6466        self.id = None
    6567        self.creator = None
  • server/lib/gutenbach/server/player.py

    rcf0d7e8 rbd5bffc  
    2828    def is_playing(self):
    2929        if self._dryrun:
    30             return self.isAlive() and not self.is_done
     30            return self.ident is not None and \
     31                   self.isAlive() and \
     32                   not self.is_done
    3133        else:
    32             return self.isAlive() and \
    33                       not self.is_done and \
    34                       self.player is not None and \
    35                       self.player.poll() is None
    36 
     34            return self.ident is not None and \
     35                   self.isAlive() and \
     36                   not self.is_done and \
     37                   self.player is not None and \
     38                   self.player.poll() is None
     39       
    3740    @property
    3841    @sync
     
    121124                logger.warning("trying to pause non-playing job")
    122125        time.sleep(self._lag)
    123                
     126
    124127    def mplayer_stop(self):
    125         # Note: Inner Lock due to join.
     128        # Note: Inner lock due to join.
    126129        with self.lock:
    127130            if self.is_playing:
     
    134137                logger.warning("trying to stop non-playing job")
    135138        self.join()
     139
  • server/lib/gutenbach/server/requests.py

    rc1dc25f rf70792f  
    169169
    170170        """
     171        operation = request.attribute_groups[0]
     172        # requested printer uri
     173        if 'printer-uri' not in operation:
     174            raise ipp.errors.ClientErrorBadRequest("Missing 'printer-uri' attribute")
     175        printer_uri = verify_attribute(operation['printer-uri'], ipp.PrinterUri)[0]
     176        if printer_uri not in self.printer.uris:
     177            raise ipp.errors.ClientErrorAttributes(
     178                str(operation['printer-uri']), operation['printer-uri'])
     179
     180        if 'requesting-user-name' in operation:
     181            user_name = verify_attribute(
     182                operation['requesting-user-name'], ipp.RequestingUserName)[0]
     183
     184        if 'job-name' in operation:
     185            job_name = verify_attribute(
     186                operation['job-name'], ipp.JobName)[0]
     187
     188        if 'job-k-octets' in operation:
     189            job_k_octets = verify_attribute(
     190                operation['job-k-octets'], ipp.JobKOctets)[0]
     191
     192        if 'ipp-attribute-fidelity' in operation:
     193            pass # don't care
     194        if 'job-impressions' in operation:
     195            pass # don't care
     196        if 'job-media-sheets' in operation:
     197            pass # don't care
     198
     199        # get attributes from the printer and add to response
     200        job_id = self.printer.create_job(
     201            requesting_user_name=requesting_user_name,
     202            job_name=job_name,
     203            job_k_octets=job_k_octets)
     204        attrs = self.printer.get_job_attributes(job_id)
     205        response.attribute_groups.append(ipp.AttributeGroup(
     206            ipp.AttributeTags.JOB, attrs))
     207            #raise ipp.errors.ServerErrorOperationNotSupported
     208        # Get nescessary information for calling send_document
     209        # Any field being set to None here just means that we either aren't using or haven't implemented parsing it
     210        document = request.attribute_groups[2]
     211        #XXX
     212        document_format = None
     213        document_natural_language = None
     214        compression = None
     215        last_document = None
     216
     217
    171218       
    172         raise ipp.errors.ServerErrorOperationNotSupported
    173 
     219        # Actually put the document in the job
     220        self.printer.send_document(job_id,document,
     221                document_name = document_name,
     222                document_format = document_format,
     223                document_natural_language = document_natural_language,
     224                requesting_user_name = requesting_user_name,
     225                compression = compression,
     226                last_document = last_document)
     227        #fix this once jess pushes
     228        self.print_job()
    174229    @handler_for(ipp.OperationCodes.VALIDATE_JOB)
    175230    def validate_job(self, request, response):
Note: See TracChangeset for help on using the changeset viewer.