Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions pyipptool/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ def create_job(self,
@pyipptool_coroutine
def print_job(self,
printer_uri=None,
requesting_user_name=colander.null,
job_name=colander.null,
ipp_attribute_fidelity=colander.null,
document_name=colander.null,
Expand All @@ -322,17 +323,20 @@ def print_job(self,
orientation_requested=colander.null,
printer_resolution=colander.null,
print_quality=colander.null,
ezeep_job_uuid=colander.null,
notify_recipient_uri=colander.null,
notify_events=colander.null,
notify_time_interval=colander.null,
auth_info=colander.null,
job_billing=colander.null,
job_sheets=colander.null,
media=colander.null,
document_content=None):
document_content=None,
):
filename, delete = _get_filename_for_content(document_content)
kw = {'operation_attributes_tag':
{'printer_uri': printer_uri,
'requesting_user_name': requesting_user_name,
'job_name': job_name,
'ipp_attribute_fidelity': ipp_attribute_fidelity,
'document_name': document_name,
Expand All @@ -357,7 +361,9 @@ def print_job(self,
'orientation_requested': orientation_requested,
'media': media,
'printer_resolution': printer_resolution,
'print_quality': print_quality},
'print_quality': print_quality,
'ezeep_job_uuid': ezeep_job_uuid,
},
'subscription_attributes_tag':
{'notify_recipient_uri': notify_recipient_uri,
'notify_events': notify_events,
Expand Down
11 changes: 9 additions & 2 deletions pyipptool/schemas.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import re

import colander
from .widgets import (IPPAttributeWidget, IPPBodyWidget, IPPFileWidget,
IPPGroupWidget, IPPNameWidget)
from .widgets import (IPPAttributeWidget,
IPPBodyWidget,
IPPFileWidget,
IPPGroupWidget,
IPPNameWidget)


class IntegerOrTuple(colander.List):
Expand Down Expand Up @@ -243,6 +246,10 @@ class JobAttributesGroup(colander.Schema):
widget=IPPAttributeWidget())
print_quality = colander.SchemaNode(Enum(), widget=IPPAttributeWidget())

# Arbitrary Job Attributes
ezeep_job_uuid = colander.SchemaNode(Text(),
widget=IPPAttributeWidget())


class SubscriptionGroup(colander.Schema):
notify_recipient_uri = colander.SchemaNode(Uri(),
Expand Down
6 changes: 5 additions & 1 deletion tests/test_highlevel.py
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,7 @@ def test_print_job(_call_ipptool):
with open(filename, 'rb') as tmp:
print_job(printer_uri='ipp://cups:631/classes/p',
job_name='foo',
requesting_user_name='john-rambo',
ipp_attribute_fidelity=False,
document_name='foo.txt',
compression='gzip',
Expand All @@ -666,7 +667,8 @@ def test_print_job(_call_ipptool):
media='iso-a4-white',
printer_resolution='600dpi',
print_quality='5',
document_content=tmp.read())
document_content=tmp.read(),
ezeep_job_uuid='bla')
request = _call_ipptool._mock_mock_calls[0][1][-1]
expected_request = textwrap.dedent("""
{
Expand All @@ -676,6 +678,7 @@ def test_print_job(_call_ipptool):
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
ATTR uri printer-uri ipp://cups:631/classes/p
ATTR name requesting-user-name john-rambo
ATTR name job-name foo
ATTR boolean ipp-attribute-fidelity 0
ATTR integer job-k-octets 1024
Expand All @@ -701,6 +704,7 @@ def test_print_job(_call_ipptool):
ATTR keyword media iso-a4-white
ATTR resolution printer-resolution 600dpi
ATTR enum print-quality 5
ATTR text ezeep-job-uuid "bla"
GROUP subscription-attributes-tag
GROUP document-attributes-tag
FILE /tmp/
Expand Down