gam7 7.27.5__py3-none-any.whl → 7.28.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gam7 might be problematic. Click here for more details.
- gam/__init__.py +45 -6
- {gam7-7.27.5.dist-info → gam7-7.28.0.dist-info}/METADATA +1 -1
- {gam7-7.27.5.dist-info → gam7-7.28.0.dist-info}/RECORD +6 -6
- {gam7-7.27.5.dist-info → gam7-7.28.0.dist-info}/WHEEL +0 -0
- {gam7-7.27.5.dist-info → gam7-7.28.0.dist-info}/entry_points.txt +0 -0
- {gam7-7.27.5.dist-info → gam7-7.28.0.dist-info}/licenses/LICENSE +0 -0
gam/__init__.py
CHANGED
|
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
|
28
|
-
__version__ = '7.
|
|
28
|
+
__version__ = '7.28.00'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -13411,12 +13411,14 @@ REPORTS_PARAMETERS_SIMPLE_TYPES = ['intValue', 'boolValue', 'datetimeValue', 'st
|
|
|
13411
13411
|
# [skipdates <Date>[:<Date>](,<Date>[:<Date>])*] [skipdaysofweek <DayOfWeek>(,<DayOfWeek>)*]
|
|
13412
13412
|
# [fields|parameters <String>)]
|
|
13413
13413
|
# [convertmbtogb]
|
|
13414
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13414
13415
|
# gam report usage customer [todrive <ToDriveAttribute>*]
|
|
13415
13416
|
# [([start|startdate <Date>] [end|enddate <Date>])|(range <Date> <Date>)|
|
|
13416
13417
|
# thismonth|(previousmonths <Integer>)]
|
|
13417
13418
|
# [skipdates <Date>[:<Date>](,<Date>[:<Date>])*] [skipdaysofweek <DayOfWeek>(,<DayOfWeek>)*]
|
|
13418
13419
|
# [fields|parameters <String>)]
|
|
13419
13420
|
# [convertmbtogb]
|
|
13421
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13420
13422
|
def doReportUsage():
|
|
13421
13423
|
def usageEntitySelectors():
|
|
13422
13424
|
selectorChoices = Cmd.USER_ENTITY_SELECTORS+Cmd.USER_CSVDATA_ENTITY_SELECTORS
|
|
@@ -13468,6 +13470,7 @@ def doReportUsage():
|
|
|
13468
13470
|
startEndTime = StartEndTime('startdate', 'enddate', 'date')
|
|
13469
13471
|
skipDayNumbers = []
|
|
13470
13472
|
skipDates = set()
|
|
13473
|
+
addCSVData = {}
|
|
13471
13474
|
while Cmd.ArgumentsRemaining():
|
|
13472
13475
|
myarg = getArgument()
|
|
13473
13476
|
if csvPF and myarg == 'todrive':
|
|
@@ -13522,6 +13525,9 @@ def doReportUsage():
|
|
|
13522
13525
|
select = True
|
|
13523
13526
|
elif myarg == 'convertmbtogb':
|
|
13524
13527
|
convertMbToGb = True
|
|
13528
|
+
elif myarg == 'addcsvdata':
|
|
13529
|
+
k = getString(Cmd.OB_STRING)
|
|
13530
|
+
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
|
13525
13531
|
else:
|
|
13526
13532
|
unknownArgumentExit()
|
|
13527
13533
|
if startEndTime.endDateTime is None:
|
|
@@ -13555,6 +13561,8 @@ def doReportUsage():
|
|
|
13555
13561
|
titles.append('orgUnitPath')
|
|
13556
13562
|
else:
|
|
13557
13563
|
pageMessage = None
|
|
13564
|
+
if addCSVData:
|
|
13565
|
+
titles.extend(sorted(addCSVData.keys()))
|
|
13558
13566
|
csvPF.SetTitles(titles)
|
|
13559
13567
|
csvPF.SetSortAllTitles()
|
|
13560
13568
|
parameters = ','.join(parameters) if parameters else None
|
|
@@ -13589,6 +13597,8 @@ def doReportUsage():
|
|
|
13589
13597
|
row['orgUnitPath'] = userOrgUnits.get(row['user'], UNKNOWN)
|
|
13590
13598
|
else:
|
|
13591
13599
|
row['user'] = UNKNOWN
|
|
13600
|
+
if addCSVData:
|
|
13601
|
+
row.update(addCSVData)
|
|
13592
13602
|
for item in entity.get('parameters', []):
|
|
13593
13603
|
if 'name' not in item:
|
|
13594
13604
|
continue
|
|
@@ -13720,12 +13730,14 @@ REPORT_ACTIVITIES_TIME_OBJECTS = {'time'}
|
|
|
13720
13730
|
# [aggregatebydate|aggregatebyuser [Boolean]]
|
|
13721
13731
|
# [maxresults <Number>]
|
|
13722
13732
|
# [convertmbtogb]
|
|
13733
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13723
13734
|
# gam report customers|customer|domain [todrive <ToDriveAttribute>*]
|
|
13724
13735
|
# [(date <Date>)|(range <Date> <Date>)|
|
|
13725
13736
|
# yesterday|today|thismonth|(previousmonths <Integer>)]
|
|
13726
13737
|
# [nodatechange | (fulldatarequired all|<CustomerServiceNameList>)]
|
|
13727
13738
|
# [(fields|parameters <String>)|(services <CustomerServiceNameList>)] [noauthorizedapps]
|
|
13728
13739
|
# [convertmbtogb]
|
|
13740
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13729
13741
|
def doReport():
|
|
13730
13742
|
def processUserUsage(usage, lastDate):
|
|
13731
13743
|
if not usage:
|
|
@@ -13743,6 +13755,8 @@ def doReport():
|
|
|
13743
13755
|
row['orgUnitPath'] = userOrgUnits.get(row['email'], UNKNOWN)
|
|
13744
13756
|
else:
|
|
13745
13757
|
row['email'] = UNKNOWN
|
|
13758
|
+
if addCSVData:
|
|
13759
|
+
row.update(addCSVData)
|
|
13746
13760
|
for item in user_report.get('parameters', []):
|
|
13747
13761
|
if 'name' not in item:
|
|
13748
13762
|
continue
|
|
@@ -13834,6 +13848,8 @@ def doReport():
|
|
|
13834
13848
|
return (False, lastDate)
|
|
13835
13849
|
lastDate = usage[0]['date']
|
|
13836
13850
|
row = {'date': lastDate}
|
|
13851
|
+
if addCSVData:
|
|
13852
|
+
row.update(addCSVData)
|
|
13837
13853
|
for item in usage[0].get('parameters', []):
|
|
13838
13854
|
if 'name' not in item:
|
|
13839
13855
|
continue
|
|
@@ -13908,12 +13924,16 @@ def doReport():
|
|
|
13908
13924
|
continue
|
|
13909
13925
|
for ptype in REPORTS_PARAMETERS_SIMPLE_TYPES:
|
|
13910
13926
|
if ptype in item:
|
|
13927
|
+
row = {'date': lastDate}
|
|
13928
|
+
if addCSVData:
|
|
13929
|
+
row.update(addCSVData)
|
|
13911
13930
|
if ptype != 'datetimeValue':
|
|
13912
13931
|
if convertMbToGb and name.endswith('_in_mb'):
|
|
13913
13932
|
name = convertReportMBtoGB(name, item)
|
|
13914
|
-
|
|
13933
|
+
row.update({'name': name, 'value': item[ptype]})
|
|
13915
13934
|
else:
|
|
13916
|
-
|
|
13935
|
+
row.update({'name': name, 'value': formatLocalTime(item[ptype])})
|
|
13936
|
+
csvPF.WriteRow(row)
|
|
13917
13937
|
break
|
|
13918
13938
|
else:
|
|
13919
13939
|
if 'msgValue' in item:
|
|
@@ -13922,6 +13942,8 @@ def doReport():
|
|
|
13922
13942
|
continue
|
|
13923
13943
|
for subitem in item['msgValue']:
|
|
13924
13944
|
app = {'date': lastDate}
|
|
13945
|
+
if addCSVData:
|
|
13946
|
+
app.update(addCSVData)
|
|
13925
13947
|
for an_item in subitem:
|
|
13926
13948
|
if an_item == 'client_name':
|
|
13927
13949
|
app['name'] = f'App: {escapeCRsNLs(subitem[an_item])}'
|
|
@@ -13934,7 +13956,11 @@ def doReport():
|
|
|
13934
13956
|
values = []
|
|
13935
13957
|
for subitem in item['msgValue']:
|
|
13936
13958
|
values.append(f'{subitem["version_number"]}:{subitem["num_devices"]}')
|
|
13937
|
-
|
|
13959
|
+
row = {'date': lastDate}
|
|
13960
|
+
if addCSVData:
|
|
13961
|
+
row.update(addCSVData)
|
|
13962
|
+
row.update({'name': name, 'value': ' '.join(sorted(values, reverse=True))})
|
|
13963
|
+
csvPF.WriteRow(row)
|
|
13938
13964
|
else:
|
|
13939
13965
|
values = []
|
|
13940
13966
|
for subitem in item['msgValue']:
|
|
@@ -13949,7 +13975,11 @@ def doReport():
|
|
|
13949
13975
|
values.append(f'{myvalue}:{mycount}')
|
|
13950
13976
|
else:
|
|
13951
13977
|
continue
|
|
13952
|
-
|
|
13978
|
+
row = {'date': lastDate}
|
|
13979
|
+
if addCSVData:
|
|
13980
|
+
row.update(addCSVData)
|
|
13981
|
+
row.update({'name': name, 'value': ' '.join(sorted(values, reverse=True))})
|
|
13982
|
+
csvPF.WriteRow(row)
|
|
13953
13983
|
csvPF.SortRowsTwoTitles('date', 'name', False)
|
|
13954
13984
|
if authorizedApps:
|
|
13955
13985
|
csvPF.AddTitle('client_id')
|
|
@@ -14099,7 +14129,7 @@ def doReport():
|
|
|
14099
14129
|
eventRowFilter = True
|
|
14100
14130
|
elif activityReports and myarg == 'groupidfilter':
|
|
14101
14131
|
groupIdFilter = getString(Cmd.OB_STRING)
|
|
14102
|
-
elif
|
|
14132
|
+
elif myarg == 'addcsvdata':
|
|
14103
14133
|
k = getString(Cmd.OB_STRING)
|
|
14104
14134
|
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
|
14105
14135
|
elif activityReports and myarg == 'shownoactivities':
|
|
@@ -14164,6 +14194,8 @@ def doReport():
|
|
|
14164
14194
|
titles = ['email'] if not showOrgUnit else ['email', 'orgUnitPath']
|
|
14165
14195
|
else:
|
|
14166
14196
|
titles = ['email', 'date'] if not showOrgUnit else ['email', 'orgUnitPath', 'date']
|
|
14197
|
+
if addCSVData:
|
|
14198
|
+
titles.extend(sorted(addCSVData.keys()))
|
|
14167
14199
|
csvPF.SetTitles(titles)
|
|
14168
14200
|
csvPF.SetSortAllTitles()
|
|
14169
14201
|
i = 0
|
|
@@ -14250,6 +14282,8 @@ def doReport():
|
|
|
14250
14282
|
if aggregateByDate:
|
|
14251
14283
|
for usageDate, events in eventCounts.items():
|
|
14252
14284
|
row = {'date': usageDate}
|
|
14285
|
+
if addCSVData:
|
|
14286
|
+
row.update(addCSVData)
|
|
14253
14287
|
for event, count in events.items():
|
|
14254
14288
|
if convertMbToGb and event.endswith('_in_gb'):
|
|
14255
14289
|
count = f'{count/1024:.2f}'
|
|
@@ -14262,6 +14296,8 @@ def doReport():
|
|
|
14262
14296
|
row = {'email': email}
|
|
14263
14297
|
if showOrgUnit:
|
|
14264
14298
|
row['orgUnitPath'] = userOrgUnits.get(email, UNKNOWN)
|
|
14299
|
+
if addCSVData:
|
|
14300
|
+
row.update(addCSVData)
|
|
14265
14301
|
for event, count in events.items():
|
|
14266
14302
|
if convertMbToGb and event.endswith('_in_gb'):
|
|
14267
14303
|
count = f'{count/1024:.2f}'
|
|
@@ -14276,6 +14312,8 @@ def doReport():
|
|
|
14276
14312
|
if startEndTime.startDateTime is None:
|
|
14277
14313
|
startEndTime.startDateTime = startEndTime.endDateTime = todaysDate()
|
|
14278
14314
|
csvPF.SetTitles('date')
|
|
14315
|
+
if addCSVData:
|
|
14316
|
+
csvPF.AddTitles(sorted(addCSVData.keys()))
|
|
14279
14317
|
if not userCustomerRange or (startEndTime.startDateTime == startEndTime.endDateTime):
|
|
14280
14318
|
csvPF.AddTitles(['name', 'value'])
|
|
14281
14319
|
authorizedApps = []
|
|
@@ -24227,6 +24265,7 @@ CROS_LIST_FIELDS_CHOICE_MAP = {
|
|
|
24227
24265
|
|
|
24228
24266
|
CROS_TIME_OBJECTS = {
|
|
24229
24267
|
'createTime',
|
|
24268
|
+
'extendedSupportStart',
|
|
24230
24269
|
'firstEnrollmentTime',
|
|
24231
24270
|
'lastDeprovisionTimestamp',
|
|
24232
24271
|
'lastEnrollmentTime',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=Pvf8RhfAqdaC0TBrQ2wCZfBCcJdcCgMPHcMNyULxFPE,3630867
|
|
2
2
|
gam/__main__.py,sha256=VwEYS7a9vYQPbT6iLduMOoVUJ6p4R-HZgerZQmM1NpE,1307
|
|
3
3
|
gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
|
|
4
4
|
gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
|
|
@@ -47,8 +47,8 @@ gam/gdata/apps/audit/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrK
|
|
|
47
47
|
gam/gdata/apps/audit/service.py,sha256=Z1eueThcNeVUMWP1DRWc_DGHrJCiJI8W_xj6L-cqu-Q,9658
|
|
48
48
|
gam/gdata/apps/contacts/__init__.py,sha256=Um6zgIkiahZns7yAEuC3pxHSMD8iciZ_EoynSLoYPfU,30463
|
|
49
49
|
gam/gdata/apps/contacts/service.py,sha256=5lNb-Ii1Gyek6ePFji3kyoYtCBc8CuJTwagx2BL2o14,15684
|
|
50
|
-
gam7-7.
|
|
51
|
-
gam7-7.
|
|
52
|
-
gam7-7.
|
|
53
|
-
gam7-7.
|
|
54
|
-
gam7-7.
|
|
50
|
+
gam7-7.28.0.dist-info/METADATA,sha256=6__1Zip1BIpmCYvLD2z3bY6ZEm8geD8qeTv_f_32StM,3093
|
|
51
|
+
gam7-7.28.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
gam7-7.28.0.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
53
|
+
gam7-7.28.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
54
|
+
gam7-7.28.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|