def produce_audit()

in modular_api/helpers/decorators.py [0:0]


def produce_audit(secured_params=None):
    """
    Creates audit event and publishes after successful execution.
    :param secured_params: names of secured parameters - they won't be
        included to audit event.
    :return:
    """

    def real_wrapper(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            group, command = get_command_info(func=func)
            parameters = deepcopy(kwargs)
            for param, value in kwargs.items():
                if secured_params and param in secured_params:
                    parameters[param] = '*****'
            try:
                func_result = func(*args, **kwargs)
            except ModularApiBaseException as e:
                raise e

            SERVICE_PROVIDER.audit_service.save_audit(
                group=group,
                command=command,
                timestamp=utc_time_now().isoformat(),
                parameters=json.dumps(parameters),
                result=func_result.message if func_result.message else str(func_result.items),
                warnings=func_result.warnings
            )

            return func_result
        return wrapper
    return real_wrapper