Index: server/lib/gutenbach/server/requests.py
===================================================================
--- server/lib/gutenbach/server/requests.py	(revision 7c8a2f82df069878680146d8ac18339ec96bd487)
+++ server/lib/gutenbach/server/requests.py	(revision 8de3c81340ac67ee05ea17dd901e9469a38113b8)
@@ -268,4 +268,38 @@
     @handler_for(ipp.OperationCodes.PRINT_URI)
     def print_uri(self, request, response):
+        """3.2.2 Print-URI Operation
+
+        This OPTIONAL operation is identical to the Print-Job operation
+        (section 3.2.1) except that a client supplies a URI reference to the
+        document data using the 'document-uri' (uri) operation attribute (in
+        Group 1) rather than including the document data itself.  Before
+        returning the response, the Printer MUST validate that the Printer
+        supports the retrieval method (e.g., http, ftp, etc.) implied by the
+        URI, and MUST check for valid URI syntax.  If the client-supplied URI
+        scheme is not supported, i.e. the value is not in the Printer
+        object's 'referenced-uri-scheme-supported' attribute, the Printer
+        object MUST reject the request and return the 'client-error-uri-
+        scheme-not-supported' status code.
+
+        The IPP Printer MAY validate the accessibility of the document as
+        part of the operation or subsequently.  If the Printer determines an
+        accessibility problem before returning an operation response, it
+        rejects the request and returns the 'client-error-document-access-
+        error' status code.  The Printer MAY also return a specific document
+        access error code using the 'document-access-error' operation
+        attribute (see section 3.1.6.4).
+
+        If the Printer determines this document accessibility problem after
+        accepting the request and returning an operation response with one of
+        the successful status codes, the Printer adds the 'document-access-
+        error' value to the job's 'job-state-reasons' attribute and MAY                                                 populate the job's 'job-document-access-errors' Job Description
+        attribute (see section 4.3.11).  See The Implementer's Guide [IPP-
+        IIG] for suggested additional checks.
+                                                                              
+        If the Printer object supports this operation, it MUST support the
+        'reference-uri-schemes-supported' Printer attribute (see section 4.4.27).
+
+        It is up to the IPP object to interpret the URI and subsequently
+        'pull' the document from the source referenced by the URI string."""
         raise ipp.errors.ServerErrorOperationNotSupported
 
@@ -364,8 +398,170 @@
     @handler_for(ipp.OperationCodes.PAUSE_PRINTER)
     def pause_printer(self, request, response):
+        """
+            3.2.7 Pause-Printer Operation
+
+            This OPTIONAL operation allows a client to stop the Printer object
+            from scheduling jobs on all its devices.  Depending on
+            implementation, the Pause-Printer operation MAY also stop the Printer
+            from processing the current job or jobs.  Any job that is currently
+            being printed is either stopped as soon as the implementation permits
+            or is completed, depending on implementation.  The Printer object
+            MUST still accept create operations to create new jobs, but MUST
+            prevent any jobs from entering the 'processing' state.
+
+            If the Pause-Printer operation is supported, then the Resume-Printer
+            operation MUST be supported, and vice-versa.
+
+            The IPP Printer stops the current job(s) on its device(s) that were
+            in the 'processing' or 'processing-stopped' states as soon as the
+            implementation permits.  If the implementation will take appreciable
+            time to stop, the IPP Printer adds the 'moving-to-paused' value to
+            the Printer object's 'printer-state-reasons' attribute (see section
+            4.4.12).  When the device(s) have all stopped, the IPP Printer
+            transitions the Printer object to the 'stopped' state, removes the
+            'moving-to-paused' value, if present, and adds the 'paused' value to
+            the Printer object's 'printer-state-reasons' attribute.
+
+            When the current job(s) complete that were in the 'processing' state,
+            the IPP Printer transitions them to the 'completed' state.  When the
+            current job(s) stop in mid processing that were in the 'processing'
+            state, the IPP Printer transitions them to the 'processing-stopped'
+            state and adds the 'printer-stopped' value to the job's 'job-state-
+            reasons' attribute.
+
+            For any jobs that are 'pending' or 'pending-held', the 'printer-
+            stopped' value of the jobs' 'job-state-reasons' attribute also
+            applies.  However, the IPP Printer NEED NOT update those jobs' 'job-
+            state-reasons' attributes and only need return the 'printer-stopped'
+            value when those jobs are queried (so-called 'lazy evaluation').
+
+            Whether the Pause-Printer operation affects jobs that were submitted
+            to the device from other sources than the IPP Printer object in the
+            same way that the Pause-Printer operation affects jobs that were
+            submitted to the IPP Printer object using IPP, depends on
+            implementation, i.e., on whether the IPP protocol is being used as a
+            universal management protocol or just to manage IPP jobs,
+            respectively.
+
+            The IPP Printer MUST accept the request in any state and transition
+            the Printer to the indicated new 'printer-state' before returning as
+            follows:
+
+            Current        New      'printer   IPP Printer's response status
+            'printer-    'printer-   -state-          code and action:
+            state'       state'    reasons'
+
+            'idle'       'stopped'    'paused'  'successful-ok'
+            'processing' 'processing' 'moving-  OPTION 1: 'successful-ok';
+                                                      to-       Later, when all output has
+                                                      paused'   stopped, the 'printer-state'
+                                                                            becomes 'stopped', and the
+                                                                            'paused' value replaces the
+                                                                            'moving-to-paused' value in the
+                                                                            'printer-state-reasons'
+                                                                            attribute
+            'processing' 'stopped'    'paused'  OPTION 2: 'successful-ok';
+                                                                            all device output stopped
+                                                                            immediately
+            'stopped'    'stopped'    'paused'  'successful-ok'
+
+            Access Rights: The authenticated user (see section 8.3) performing
+            this operation must be an operator or administrator of the Printer
+            object (see Sections 1 and 8.5).   Otherwise, the IPP Printer MUST
+            reject the operation and return:  'client-error-forbidden', 'client-
+            error-not-authenticated', or 'client-error-not-authorized' as
+            appropriate.
+
+            3.2.7.1 Pause-Printer Request
+
+            The following groups of attributes are part of the Pause-Printer
+            Request:
+
+            Group 1: Operation Attributes
+
+            Natural Language and Character Set:
+            The 'attributes-charset' and 'attributes-natural-language'
+            attributes as described in section 3.1.4.1.
+
+            Target:
+            The 'printer-uri' (uri) operation attribute which is the target
+            for this operation as described in section 3.1.5.
+
+            Requesting User Name:
+            The 'requesting-user-name' (name(MAX)) attribute SHOULD be
+            supplied by the client as described in section 8.3.
+
+            3.2.7.2 Pause-Printer Response
+
+            The following groups of attributes are part of the Pause-Printer
+            Response:
+
+            Group 1: Operation Attributes
+
+            Status Message:
+            In addition to the REQUIRED status code returned in every
+            response, the response OPTIONALLY includes a 'status-message'
+            (text(255)) and/or a 'detailed-status-message' (text(MAX))
+            operation attribute as described in sections 13 and  3.1.6.
+
+            Natural Language and Character Set:
+            The 'attributes-charset' and 'attributes-natural-language'
+            attributes as described in section 3.1.4.2.
+
+            Group 2: Unsupported Attributes
+
+            See section 3.1.7 for details on returning Unsupported Attributes.
+
+   
+    """
         raise ipp.errors.ServerErrorOperationNotSupported
 
     @handler_for(ipp.OperationCodes.RESUME_PRINTER)
     def resume_printer(self, request, response):
+        """
+        3.2.8 Resume-Printer Operation
+
+        This operation allows a client to resume the Printer object
+        scheduling jobs on all its devices.  The Printer object MUST remove
+        the 'paused' and 'moving-to-paused' values from the Printer object's
+        'printer-state-reasons' attribute, if present.  If there are no other
+        reasons to keep a device paused (such as media-jam), the IPP Printer
+        is free to transition itself to the 'processing' or 'idle' states,
+        depending on whether there are jobs to be processed or not,
+        respectively, and the device(s) resume processing jobs.
+
+        If the Pause-Printer operation is supported, then the Resume-Printer
+        operation MUST be supported, and vice-versa.
+
+        The IPP Printer removes the 'printer-stopped' value from any job's
+        'job-state-reasons' attributes contained in that Printer.
+
+        The IPP Printer MUST accept the request in any state, transition the
+        Printer object to the indicated new state as follows:
+
+
+        Current    New 'printer-  IPP Printer's response status code and
+        'printer-      state'                     action:
+        state'
+
+        'idle'       'idle'         'successful-ok'
+        'processing' 'processing'   'successful-ok'
+
+        'stopped'    'processing'   'successful-ok';
+                                                   when there are jobs to be processed
+        'stopped'    'idle'         'successful-ok';
+                                                   when there are no jobs to be processed.
+
+        Access Rights: The authenticated user (see section 8.3) performing
+        this operation must be an operator or administrator of the Printer
+        object (see Sections 1 and 8.5).  Otherwise, the IPP Printer MUST
+        reject the operation and return:  'client-error-forbidden', 'client-
+        error-not-authenticated', or 'client-error-not-authorized' as
+        appropriate.
+
+        The Resume-Printer Request and Resume-Printer Response have the same
+        attribute groups and attributes as the Pause-Printer operation (see
+        sections 3.2.7.1 and 3.2.7.2).                 
+        """
         raise ipp.errors.ServerErrorOperationNotSupported
 
@@ -442,4 +638,5 @@
     @handler_for(ipp.OperationCodes.SET_PRINTER_ATTRIBUTES)
     def set_printer_attributes(self, request, response):
+
         raise ipp.errors.ServerErrorOperationNotSupported
 
@@ -699,4 +896,7 @@
     @handler_for(ipp.OperationCodes.SEND_URI)
     def send_uri(self, request, response):
+<<<<<<< HEAD
+       raise ipp.errors.ServerErrorOperationNotSupported
+=======
         """3.2.2 Send URI
 
@@ -828,4 +1028,5 @@
         response.attribute_groups.append(ipp.AttributeGroup(
             ipp.AttributeTags.JOB, attrs))
+>>>>>>> 7c8a2f82df069878680146d8ac18339ec96bd487
 
     @handler_for(ipp.OperationCodes.GET_JOB_ATTRIBUTES)
@@ -935,4 +1136,5 @@
     @handler_for(ipp.OperationCodes.SET_JOB_ATTRIBUTES)
     def set_job_attributes(self, request, response):
+        
         raise ipp.errors.ServerErrorOperationNotSupported
 
