in modular_api/services/usage_service.py [0:0]
def save_stats(self, request: LocalRequest, payload: dict) -> None:
module_mount_point = self.__resolve_module_mount_point(request)
parts = request.path.strip('/').split('/')
if len(parts) >= 3:
*_, group_name, command_name = parts
elif len(parts) == 2:
group_name, command_name = None, parts[1]
else:
group_name, command_name = None, None
exec_status = payload.get(STATUS)
meta = payload.get(META)
event_type = payload.get(EVENT_TYPE)
product = payload.get(PRODUCT)
job_id = payload.get(JOB_ID)
status = 'FAILED'
if exec_status:
status = 'SUCCESS' if exec_status.lower() == 'success' or \
exec_status.lower() == 'succeeded' else 'FAILED'
if not product:
event_type = EVENT_TYPE_API
product = self.modules_info.get(module_mount_point)
stats_doc, current_event_ts, current_event_date, prev_item_id = (
self.__make_stats_item(module_mount_point, group_name,
command_name, meta, status, event_type,
product, job_id))
if prev_item_id:
_LOG.info(f'Updating previous item. Item ID: {prev_item_id}')
last = self._get_last()
last.delete()
last.id = prev_item_id
last.save()
_LOG.info(f'Saving usage event. Last timestamp: {self.last_rec_ts},'
f'current timestamp: {current_event_ts}')
Stats(**stats_doc).save()
_LOG.info(f'Usage event saved')