mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-07 21:23:34 +00:00
Handle Reports API bug (#1550)
* Handle Reports API bug * Handle Reports API bug
This commit is contained in:
@ -85,15 +85,13 @@ def showUsageParameters():
|
|||||||
customerId=customerId,
|
customerId=customerId,
|
||||||
fields='warnings,usageReports(parameters(name))',
|
fields='warnings,usageReports(parameters(name))',
|
||||||
**kwargs)
|
**kwargs)
|
||||||
warnings = result.get('warnings', [])
|
|
||||||
usage = result.get('usageReports')
|
usage = result.get('usageReports')
|
||||||
has_reports = bool(usage)
|
|
||||||
fullData, tryDate = _check_full_data_available(
|
fullData, tryDate = _check_full_data_available(
|
||||||
warnings, tryDate, fullDataRequired, has_reports)
|
result, tryDate, fullDataRequired, False)
|
||||||
if fullData < 0:
|
if fullData < 0:
|
||||||
print('No usage parameters available.')
|
print('No usage parameters available.')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if has_reports:
|
if usage:
|
||||||
for parameter in usage[0]['parameters']:
|
for parameter in usage[0]['parameters']:
|
||||||
name = parameter.get('name')
|
name = parameter.get('name')
|
||||||
if name:
|
if name:
|
||||||
@ -350,10 +348,8 @@ def showReport():
|
|||||||
orgUnitID=orgUnitId,
|
orgUnitID=orgUnitId,
|
||||||
fields='warnings,usageReports',
|
fields='warnings,usageReports',
|
||||||
maxResults=1)
|
maxResults=1)
|
||||||
warnings = one_page.get('warnings', [])
|
|
||||||
has_reports = bool(one_page.get('usageReports'))
|
|
||||||
fullData, tryDate = _check_full_data_available(
|
fullData, tryDate = _check_full_data_available(
|
||||||
warnings, tryDate, fullDataRequired, has_reports)
|
one_page, tryDate, fullDataRequired, True)
|
||||||
if fullData < 0:
|
if fullData < 0:
|
||||||
print('No user report available.')
|
print('No user report available.')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@ -382,7 +378,7 @@ def showReport():
|
|||||||
for user_report in usage:
|
for user_report in usage:
|
||||||
if 'entity' not in user_report:
|
if 'entity' not in user_report:
|
||||||
continue
|
continue
|
||||||
row = {'email': user_report['entity']['userEmail'], 'date': tryDate}
|
row = {'email': user_report['entity'].get('userEmail', 'Unknown'), 'date': tryDate}
|
||||||
for item in user_report.get('parameters', []):
|
for item in user_report.get('parameters', []):
|
||||||
if 'name' not in item:
|
if 'name' not in item:
|
||||||
continue
|
continue
|
||||||
@ -407,10 +403,8 @@ def showReport():
|
|||||||
customerId=customerId,
|
customerId=customerId,
|
||||||
date=tryDate,
|
date=tryDate,
|
||||||
fields='warnings,usageReports')
|
fields='warnings,usageReports')
|
||||||
warnings = first_page.get('warnings', [])
|
|
||||||
has_reports = bool(first_page.get('usageReports'))
|
|
||||||
fullData, tryDate = _check_full_data_available(
|
fullData, tryDate = _check_full_data_available(
|
||||||
warnings, tryDate, fullDataRequired, has_reports)
|
first_page, tryDate, fullDataRequired, False)
|
||||||
if fullData < 0:
|
if fullData < 0:
|
||||||
print('No customer report available.')
|
print('No customer report available.')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@ -563,15 +557,16 @@ def _adjust_date(errMsg):
|
|||||||
return str(match_date.group(1))
|
return str(match_date.group(1))
|
||||||
|
|
||||||
|
|
||||||
def _check_full_data_available(warnings, tryDate, fullDataRequired,
|
def _check_full_data_available(result, tryDate, fullDataRequired,
|
||||||
has_reports):
|
checkUserEmail):
|
||||||
one_day = datetime.timedelta(days=1)
|
one_day = datetime.timedelta(days=1)
|
||||||
tryDateTime = datetime.datetime.strptime(tryDate, YYYYMMDD_FORMAT)
|
tryDateTime = datetime.datetime.strptime(tryDate, YYYYMMDD_FORMAT)
|
||||||
# move to day before if we don't have at least one usageReport
|
# move to day before if we don't have at least one usageReport
|
||||||
if not has_reports:
|
usage = result.get('usageReports')
|
||||||
|
if not usage:
|
||||||
tryDateTime -= one_day
|
tryDateTime -= one_day
|
||||||
return (0, tryDateTime.strftime(YYYYMMDD_FORMAT))
|
return (0, tryDateTime.strftime(YYYYMMDD_FORMAT))
|
||||||
for warning in warnings:
|
for warning in result.get('warnings', []):
|
||||||
if warning['code'] == 'PARTIAL_DATA_AVAILABLE':
|
if warning['code'] == 'PARTIAL_DATA_AVAILABLE':
|
||||||
for app in warning['data']:
|
for app in warning['data']:
|
||||||
if app['key'] == 'application' and \
|
if app['key'] == 'application' and \
|
||||||
@ -586,4 +581,8 @@ def _check_full_data_available(warnings, tryDate, fullDataRequired,
|
|||||||
app['value'] != 'docs' and \
|
app['value'] != 'docs' and \
|
||||||
(not fullDataRequired or app['value'] in fullDataRequired):
|
(not fullDataRequired or app['value'] in fullDataRequired):
|
||||||
return (-1, tryDate)
|
return (-1, tryDate)
|
||||||
|
if checkUserEmail:
|
||||||
|
if 'entity' not in usage[0] or 'userEmail' not in usage[0]['entity']:
|
||||||
|
tryDateTime -= one_day
|
||||||
|
return (0, tryDateTime.strftime(YYYYMMDD_FORMAT))
|
||||||
return (1, tryDate)
|
return (1, tryDate)
|
||||||
|
Reference in New Issue
Block a user