mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-09 14:13:35 +00:00
Handle invalid printer ID in gam print printjobs/gam printjob fetch
This commit is contained in:
17
src/gam.py
17
src/gam.py
@ -2185,6 +2185,10 @@ def doPrintPrintJobs():
|
|||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
if sortorder and descending:
|
if sortorder and descending:
|
||||||
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
|
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
|
||||||
|
if printerid:
|
||||||
|
result = callGAPI(cp.printers(), u'get',
|
||||||
|
printerid=printerid)
|
||||||
|
checkCloudPrintResult(result)
|
||||||
jobCount = offset = 0
|
jobCount = offset = 0
|
||||||
while True:
|
while True:
|
||||||
if jobLimit == 0:
|
if jobLimit == 0:
|
||||||
@ -2628,6 +2632,10 @@ def doPrintJobFetch():
|
|||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
if sortorder and descending:
|
if sortorder and descending:
|
||||||
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
|
sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder]
|
||||||
|
if printerid:
|
||||||
|
result = callGAPI(cp.printers(), u'get',
|
||||||
|
printerid=printerid)
|
||||||
|
checkCloudPrintResult(result)
|
||||||
valid_chars = u'-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
|
valid_chars = u'-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
|
||||||
ssd = u'{"state": {"type": "DONE"}}'
|
ssd = u'{"state": {"type": "DONE"}}'
|
||||||
jobCount = offset = 0
|
jobCount = offset = 0
|
||||||
@ -2641,9 +2649,6 @@ def doPrintJobFetch():
|
|||||||
result = callGAPI(cp.jobs(), u'list',
|
result = callGAPI(cp.jobs(), u'list',
|
||||||
printerid=printerid, q=query, status=status, sortorder=sortorder,
|
printerid=printerid, q=query, status=status, sortorder=sortorder,
|
||||||
owner=owner, offset=offset, limit=limit)
|
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)
|
checkCloudPrintResult(result)
|
||||||
newJobs = result[u'range'][u'jobsCount']
|
newJobs = result[u'range'][u'jobsCount']
|
||||||
if newJobs == 0:
|
if newJobs == 0:
|
||||||
@ -2659,15 +2664,15 @@ def doPrintJobFetch():
|
|||||||
continue
|
continue
|
||||||
fileUrl = job[u'fileUrl']
|
fileUrl = job[u'fileUrl']
|
||||||
jobid = job[u'id']
|
jobid = job[u'id']
|
||||||
fileName = job[u'title']
|
fileName = u'{0}-{1}'.format(u''.join(c if c in valid_chars else u'_' for c in job[u'title']), jobid)
|
||||||
fileName = u''.join(c if c in valid_chars else u'_' for c in fileName)
|
|
||||||
fileName = u'%s-%s' % (fileName, jobid)
|
|
||||||
_, content = cp._http.request(uri=fileUrl, method='GET')
|
_, content = cp._http.request(uri=fileUrl, method='GET')
|
||||||
if writeFile(fileName, content, continueOnError=True):
|
if writeFile(fileName, content, continueOnError=True):
|
||||||
# ticket = callGAPI(cp.jobs(), u'getticket', jobid=jobid, use_cjt=True)
|
# ticket = callGAPI(cp.jobs(), u'getticket', jobid=jobid, use_cjt=True)
|
||||||
result = callGAPI(cp.jobs(), u'update', jobid=jobid, semantic_state_diff=ssd)
|
result = callGAPI(cp.jobs(), u'update', jobid=jobid, semantic_state_diff=ssd)
|
||||||
checkCloudPrintResult(result)
|
checkCloudPrintResult(result)
|
||||||
print u'Printed job %s to %s' % (jobid, fileName)
|
print u'Printed job %s to %s' % (jobid, fileName)
|
||||||
|
if jobCount == 0:
|
||||||
|
print u'No print jobs.'
|
||||||
|
|
||||||
def doDelPrinter():
|
def doDelPrinter():
|
||||||
cp = buildGAPIObject(u'cloudprint')
|
cp = buildGAPIObject(u'cloudprint')
|
||||||
|
Reference in New Issue
Block a user