Update print mobile (#524)

This commit is contained in:
Ross Scroggs
2017-07-01 09:30:25 -07:00
committed by Jay Lee
parent 9038587f67
commit 7628b5a08d
2 changed files with 92 additions and 27 deletions

View File

@@ -305,6 +305,48 @@ Named items
role| role|
type type
<MobileFieldName> ::=
adbstatus|
applications|
basebandversion|
bootloaderversion|
brand|
buildnumber|
defaultlanguage|
developeroptionsstatus|
devicecompromisedstatus|
deviceid|
devicepasswordstatus|
email|
encryptionstatus|
firstsync|
hardware|
hardwareid|
imei|
kernelversion|
lastsync|
managedaccountisonownerprofile|
manufacturer|
meid|
model|
name|
networkoperator|
os|
otheraccountsinfo|
privilege|
releaseversion|
resourceid|
securitypatchlevel|
serialnumber|
status|
supportsworkprofile|
type|
unknownsourcesstatus|
useragent|
wifimacaddress
<MobileFieldNameList> ::= "<MobileFieldName>(,<MobileFieldName>)*"
<MobileOrderByFieldName> ::= <MobileOrderByFieldName> ::=
deviceid|email|lastsync|model|name|os|status|type deviceid|email|lastsync|model|name|os|status|type
@@ -659,6 +701,7 @@ gam update mobile <MobileItem> action <MobileAction>
gam delete mobile <MobileItem> gam delete mobile <MobileItem>
gam info mobile <MobileItem> gam info mobile <MobileItem>
gam print mobile [todrive] [query <QueryMobile>] [basic|full] [orderby <MobileOrderByFieldName> [ascending|descending]] gam print mobile [todrive] [query <QueryMobile>] [basic|full] [orderby <MobileOrderByFieldName> [ascending|descending]]
fields <MobileFieldNameList>] [delimiter <String>] [appslimit <Number>] [listlimit <Number>]
gam create group <EmailAddress> <GroupAttributes>* gam create group <EmailAddress> <GroupAttributes>*
gam update group <GroupItem> [admincreated <Boolean>] [email <EmailAddress>] <GroupAttributes>* gam update group <GroupItem> [admincreated <Boolean>] [email <EmailAddress>] <GroupAttributes>*

View File

@@ -9660,20 +9660,28 @@ def doPrintMobileDevices():
titles = [] titles = []
csvRows = [] csvRows = []
fields = None fields = None
include_apps = True
query = projection = orderBy = sortOrder = None query = projection = orderBy = sortOrder = None
delimiter = u' '
listLimit = 1
appsLimit = -1
i = 3 i = 3
while i < len(sys.argv): while i < len(sys.argv):
myarg = sys.argv[i].lower().replace(u'_', u'') myarg = sys.argv[i].lower().replace(u'_', u'')
if myarg == u'query': if myarg == u'todrive':
query = sys.argv[i+1]
i += 2
elif myarg == u'noapps':
include_apps = False
i += 1
elif myarg == u'todrive':
todrive = True todrive = True
i += 1 i += 1
elif myarg == u'query':
query = sys.argv[i+1]
i += 2
elif myarg == u'delimiter':
delimiter = sys.argv[i+1]
i += 2
elif myarg == u'listlimit':
listLimit = int(sys.argv[i+1])
i += 2
elif myarg == u'appslimit':
appsLimit = int(sys.argv[i+1])
i += 2
elif myarg == u'fields': elif myarg == u'fields':
fields = u'nextPageToken,mobiledevices(%s)' % sys.argv[i+1] fields = u'nextPageToken,mobiledevices(%s)' % sys.argv[i+1]
i += 2 i += 2
@@ -9703,30 +9711,44 @@ def doPrintMobileDevices():
customerId=GC_Values[GC_CUSTOMER_ID], query=query, projection=projection, fields=fields, customerId=GC_Values[GC_CUSTOMER_ID], query=query, projection=projection, fields=fields,
orderBy=orderBy, sortOrder=sortOrder, maxResults=GC_Values[GC_DEVICE_MAX_RESULTS]) orderBy=orderBy, sortOrder=sortOrder, maxResults=GC_Values[GC_DEVICE_MAX_RESULTS])
for mobile in all_mobile: for mobile in all_mobile:
mobiledevice = {} row = {}
for attrib in mobile: for attrib in mobile:
if attrib in [u'kind', u'etag']: if attrib in [u'kind', u'etag']:
continue continue
if attrib not in titles: if attrib in [u'name', u'email', u'otherAccountsInfo']:
titles.append(attrib) if attrib not in titles:
if attrib in [u'name', u'email']: titles.append(attrib)
if mobile[attrib]: if listLimit:
mobiledevice[attrib] = mobile[attrib][0] row[attrib] = delimiter.join(mobile[attrib][0:listLimit])
else:
row[attrib] = delimiter.join(mobile[attrib])
elif attrib == u'applications': elif attrib == u'applications':
if not include_apps: if appsLimit >= 0:
continue if attrib not in titles:
applications = [] titles.append(attrib)
for app in mobile[u'applications']: applications = []
app_details = [] j = 0
app_details.append(app.get(u'displayName', u'<missing>')) for app in mobile[attrib]:
app_details.append(app.get(u'packageName', u'<missing>')) j += 1
app_details.append(app.get(u'versionName', u'<missing>')) if appsLimit and (j > appsLimit):
app_details.append(unicode(app.get(u'versionCode', u'<missing>'))) break
applications.append(u' - '.join(app_details)) appDetails = []
mobiledevice[u'applications'] = u'\n'.join(applications) for field in [u'displayName', u'packageName', u'versionName']:
appDetails.append(app.get(field, u'<None>'))
appDetails.append(unicode(app.get(u'versionCode', u'<None>')))
permissions = app.get(u'permission', [])
if permissions:
appDetails.append(u'/'.join(permissions))
else:
appDetails.append(u'<None>')
applications.append(u'-'.join(appDetails))
row[attrib] = delimiter.join(applications)
else: else:
mobiledevice[attrib] = mobile[attrib] if attrib not in titles:
csvRows.append(mobiledevice) titles.append(attrib)
row[attrib] = mobile[attrib]
csvRows.append(row)
sortCSVTitles([u'resourceId', u'deviceId', u'serialNumber', u'name', u'email', u'status'], titles)
writeCSVfile(csvRows, titles, u'Mobile', todrive) writeCSVfile(csvRows, titles, u'Mobile', todrive)
def doPrintCrosActivity(): def doPrintCrosActivity():