Add offset, limit arguments to print printjobs and printjob fetch

gam print printjobs ... offset <Integer> limit <Integer>
 gam printjob <PrinterId> fetch ... offset <Integer> limit <Integer>
This commit is contained in:
Ross Scroggs
2016-04-26 10:27:34 -07:00
parent 1f2ffcf97a
commit d850f5575b

View File

@ -2120,15 +2120,17 @@ def doPrintPrintJobs():
sortorder = None sortorder = None
descending = False descending = False
query = None query = None
i = 3
age = None age = None
older_or_newer = None older_or_newer = None
offset = limit = None
i = 3
while i < len(sys.argv): while i < len(sys.argv):
if sys.argv[i].lower() == u'todrive': myarg = sys.argv[i].lower().replace(u'_', u'')
if myarg == u'todrive':
todrive = True todrive = True
i += 1 i += 1
elif sys.argv[i].lower().replace(u'_', u'') in [u'olderthan', u'newerthan']: elif myarg in [u'olderthan', u'newerthan']:
if sys.argv[i].lower().replace(u'_', u'') == u'olderthan': if myarg == u'olderthan':
older_or_newer = u'older' older_or_newer = u'older'
else: else:
older_or_newer = u'newer' older_or_newer = u'newer'
@ -2147,37 +2149,45 @@ def doPrintPrintJobs():
print u'ERROR: expected m (minutes), h (hours) or d (days), got %s' % age_unit print u'ERROR: expected m (minutes), h (hours) or d (days), got %s' % age_unit
sys.exit(2) sys.exit(2)
i += 2 i += 2
elif sys.argv[i].lower() == u'query': elif myarg == u'query':
query = sys.argv[i+1] query = sys.argv[i+1]
i += 2 i += 2
elif sys.argv[i].lower() == u'status': elif myarg == u'status':
status = sys.argv[i+1] status = sys.argv[i+1]
i += 2 i += 2
elif sys.argv[i].lower() == u'ascending': elif myarg == u'ascending':
descending = False descending = False
i += 1 i += 1
elif sys.argv[i].lower() == u'descending': elif myarg == u'descending':
descending = True descending = True
i += 1 i += 1
elif sys.argv[i].lower() == u'orderby': elif myarg == u'orderby':
sortorder = sys.argv[i+1].lower().replace(u'_', u'') sortorder = sys.argv[i+1].lower().replace(u'_', u'')
if sortorder not in PRINTJOB_ASCENDINGORDER_MAP: if sortorder not in PRINTJOB_ASCENDINGORDER_MAP:
print u'ERROR: orderby must be one of %s. Got %s' % (','.join(PRINTJOB_ASCENDINGORDER_MAP), sortorder) print u'ERROR: orderby must be one of %s. Got %s' % (u','.join(PRINTJOB_ASCENDINGORDER_MAP), sortorder)
sys.exit(2) sys.exit(2)
sortorder = PRINTJOB_ASCENDINGORDER_MAP[sortorder] sortorder = PRINTJOB_ASCENDINGORDER_MAP[sortorder]
i += 2 i += 2
elif sys.argv[i].lower() in [u'printer', u'printerid']: elif myarg in [u'printer', u'printerid']:
printerid = sys.argv[i+1] printerid = sys.argv[i+1]
i += 2 i += 2
elif sys.argv[i].lower() in [u'owner', u'user']: elif myarg in [u'owner', u'user']:
owner = sys.argv[i+1] owner = sys.argv[i+1]
i += 2 i += 2
elif myarg == u'offset':
offset = max(0, int(sys.argv[i+1]))
i += 2
elif myarg == u'limit':
limit = max(1, int(sys.argv[i+1]))
i += 2
else: else:
print u'ERROR: %s is not a valid argument for "gam print printjobs"' % sys.argv[i] print u'ERROR: %s is not a valid argument for "gam print printjobs"' % sys.argv[i]
sys.exit(2) sys.exit(2)
if sortorder and descending: if sortorder and descending:
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder] sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
jobs = callGAPI(service=cp.jobs(), function=u'list', q=query, status=status, sortorder=sortorder, printerid=printerid, owner=owner) jobs = callGAPI(service=cp.jobs(), function=u'list',
printerid=printerid, q=query, status=status, sortorder=sortorder,
owner=owner, offset=offset, limit=limit)
checkCloudPrintResult(jobs) checkCloudPrintResult(jobs)
for job in jobs[u'jobs']: for job in jobs[u'jobs']:
createTime = int(job[u'createTime'])/1000 createTime = int(job[u'createTime'])/1000
@ -2551,10 +2561,12 @@ def doPrintJobFetch():
query = None query = None
age = None age = None
older_or_newer = None older_or_newer = None
offset = limit = None
i = 4 i = 4
while i < len(sys.argv): while i < len(sys.argv):
if sys.argv[i].lower().replace(u'_', u'') in [u'olderthan', u'newerthan']: myarg = sys.argv[i].lower().replace(u'_', u'')
if sys.argv[i].lower().replace(u'_', u'') == u'olderthan': if myarg in [u'olderthan', u'newerthan']:
if myarg == u'olderthan':
older_or_newer = u'older' older_or_newer = u'older'
else: else:
older_or_newer = u'newer' older_or_newer = u'newer'
@ -2573,34 +2585,42 @@ def doPrintJobFetch():
print u'ERROR: expected m (minutes), h (hours) or d (days), got %s' % age_unit print u'ERROR: expected m (minutes), h (hours) or d (days), got %s' % age_unit
sys.exit(2) sys.exit(2)
i += 2 i += 2
elif sys.argv[i].lower() == u'query': elif myarg == u'query':
query = sys.argv[i+1] query = sys.argv[i+1]
i += 2 i += 2
elif sys.argv[i].lower() == u'status': elif myarg == u'status':
status = sys.argv[i+1] status = sys.argv[i+1]
i += 2 i += 2
elif sys.argv[i].lower() == u'ascending': elif myarg == u'ascending':
descending = False descending = False
i += 1 i += 1
elif sys.argv[i].lower() == u'descending': elif myarg == u'descending':
descending = True descending = True
i += 1 i += 1
elif sys.argv[i].lower() == u'orderby': elif myarg == u'orderby':
sortorder = sys.argv[i+1].lower().replace(u'_', u'') sortorder = sys.argv[i+1].lower().replace(u'_', u'')
if sortorder not in PRINTJOB_ASCENDINGORDER_MAP: if sortorder not in PRINTJOB_ASCENDINGORDER_MAP:
print 'ERROR: orderby must be one of %s. Got %s' % (','.join(PRINTJOB_ASCENDINGORDER_MAP), sortorder) print u'ERROR: orderby must be one of %s. Got %s' % (u','.join(PRINTJOB_ASCENDINGORDER_MAP), sortorder)
sys.exit(2) sys.exit(2)
sortorder = PRINTJOB_ASCENDINGORDER_MAP[sortorder] sortorder = PRINTJOB_ASCENDINGORDER_MAP[sortorder]
i += 2 i += 2
elif sys.argv[i].lower() in [u'owner', u'user']: elif myarg in [u'owner', u'user']:
owner = sys.argv[i+1] owner = sys.argv[i+1]
i += 2 i += 2
elif myarg == u'offset':
offset = max(0, int(sys.argv[i+1]))
i += 2
elif myarg == u'limit':
limit = max(1, int(sys.argv[i+1]))
i += 2
else: else:
print u'ERROR: %s is not a valid argument for "gam printjobs fetch"' % sys.argv[i] print u'ERROR: %s is not a valid argument for "gam printjobs fetch"' % sys.argv[i]
sys.exit(2) sys.exit(2)
if sortorder and descending: if sortorder and descending:
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder] sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
result = callGAPI(service=cp.jobs(), function=u'list', q=query, status=status, sortorder=sortorder, printerid=printerid, owner=owner) result = callGAPI(service=cp.jobs(), function=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: if u'errorCode' in result and result[u'errorCode'] == 413:
print u'No print jobs.' print u'No print jobs.'
sys.exit(0) sys.exit(0)