Update offset/limits processing for print jobs

This commit is contained in:
Ross Scroggs
2016-04-26 14:51:45 -07:00
parent d850f5575b
commit 49d1845129

View File

@@ -2122,7 +2122,8 @@ def doPrintPrintJobs():
query = None
age = None
older_or_newer = None
offset = limit = None
offset = 0
jobLimit = 25
i = 3
while i < len(sys.argv):
myarg = sys.argv[i].lower().replace(u'_', u'')
@@ -2178,18 +2179,28 @@ def doPrintPrintJobs():
offset = max(0, int(sys.argv[i+1]))
i += 2
elif myarg == u'limit':
limit = max(1, int(sys.argv[i+1]))
jobLimit = max(0, int(sys.argv[i+1]))
i += 2
else:
print u'ERROR: %s is not a valid argument for "gam print printjobs"' % sys.argv[i]
sys.exit(2)
if sortorder and descending:
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
jobs = callGAPI(service=cp.jobs(), function=u'list',
jobCount = 0
while True:
limit = 25 if jobLimit == 0 else jobLimit-jobCount
if limit == 0:
break
result = callGAPI(cp.jobs(), u'list',
printerid=printerid, q=query, status=status, sortorder=sortorder,
owner=owner, offset=offset, limit=limit)
checkCloudPrintResult(jobs)
for job in jobs[u'jobs']:
checkCloudPrintResult(result)
newJobs = result[u'range'][u'jobsCount']
if newJobs == 0:
break
jobCount += newJobs
offset += newJobs
for job in result[u'jobs']:
createTime = int(job[u'createTime'])/1000
if older_or_newer:
if older_or_newer == u'older' and createTime > age:
@@ -2236,7 +2247,7 @@ def doPrintPrinters():
else:
print u'ERROR: %s is not a valid argument for "gam print printers"' % sys.argv[i]
sys.exit(2)
printers = callGAPI(service=cp.printers(), function=u'list', q=query, type=printer_type, connection_status=connection_status, extra_fields=extra_fields)
printers = callGAPI(cp.printers(), u'list', q=query, type=printer_type, connection_status=connection_status, extra_fields=extra_fields)
checkCloudPrintResult(printers)
for printer in printers[u'printers']:
createTime = int(printer[u'createTime'])/1000
@@ -2561,7 +2572,8 @@ def doPrintJobFetch():
query = None
age = None
older_or_newer = None
offset = limit = None
offset = 0
jobLimit = 25
i = 4
while i < len(sys.argv):
myarg = sys.argv[i].lower().replace(u'_', u'')
@@ -2611,24 +2623,32 @@ def doPrintJobFetch():
offset = max(0, int(sys.argv[i+1]))
i += 2
elif myarg == u'limit':
limit = max(1, int(sys.argv[i+1]))
jobLimit = max(0, int(sys.argv[i+1]))
i += 2
else:
print u'ERROR: %s is not a valid argument for "gam printjobs fetch"' % sys.argv[i]
sys.exit(2)
if sortorder and descending:
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
result = callGAPI(service=cp.jobs(), function=u'list',
valid_chars = u'-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
ssd = u'{"state": {"type": "DONE"}}'
jobCount = 0
while True:
limit = 25 if jobLimit == 0 else jobLimit-jobCount
if limit == 0:
break
result = callGAPI(cp.jobs(), u'list',
printerid=printerid, q=query, status=status, sortorder=sortorder,
owner=owner, offset=offset, limit=limit)
if u'errorCode' in result and result[u'errorCode'] == 413:
print u'No print jobs.'
sys.exit(0)
checkCloudPrintResult(result)
valid_chars = u'-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
ssd = '''{
"state": {"type": "DONE"}
}'''
newJobs = result[u'range'][u'jobsCount']
if newJobs == 0:
break
jobCount += newJobs
offset += newJobs
for job in result[u'jobs']:
createTime = int(job[u'createTime'])/1000
if older_or_newer:
@@ -2643,8 +2663,8 @@ def doPrintJobFetch():
fileName = u'%s-%s' % (fileName, jobid)
_, content = cp._http.request(uri=fileUrl, method='GET')
if writeFile(fileName, content, continueOnError=True):
# ticket = callGAPI(service=cp.jobs(), function=u'getticket', jobid=jobid, use_cjt=True)
result = callGAPI(service=cp.jobs(), function=u'update', jobid=jobid, semantic_state_diff=ssd)
# ticket = callGAPI(cp.jobs(), u'getticket', jobid=jobid, use_cjt=True)
result = callGAPI(cp.jobs(), u'update', jobid=jobid, semantic_state_diff=ssd)
checkCloudPrintResult(result)
print u'Printed job %s to %s' % (jobid, fileName)