Example #1
0
def _post_save(sender, **kwargs):
    try:
        from audit_tools.audit.models import ACTIONS
        from audit_tools.audit.tasks import save_model_action

        i = kwargs['instance']

        # Model
        model = _extract_model_data(i)

        # Old and new content
        old_data = {}
        if id(i) in _CACHE:
            old_data = _CACHE[id(i)]
            del _CACHE[id(i)]
        new_data = serialize_model_instance(i)

        content = _extract_content_data(old_data, new_data)

        # Action
        if not old_data and new_data:
            action = ACTIONS.CREATE
        else:
            action = ACTIONS.UPDATE

        # Instance
        instance = _extract_instance_data(i)

        # Timestamp
        timestamp = datetime.datetime.now()

        model_action = {
            'model': model,
            'action': action,
            'content': content,
            'instance': instance,
            'timestamp': timestamp,
        }

        # Process
        process = extract_process_data()

        try:
            # Get process
            process = cache.get_process(process)
            access = cache.get_last_access()

            if not settings.RUN_ASYNC:
                save_model_action(model_action, access, process)
            else:
                save_model_action.apply_async((model_action, access, process))
            logger.info("<%s> Model:%s ID:%s", action.capitalize(),
                        model['full_name'], instance['id'])
        except Exception:
            logger.exception("<%s> Model:%s ID:%s", action.capitalize(),
                             model['full_name'], instance['id'])
    except Exception:
        logger.exception("<Post Save>")
Example #2
0
def _post_save(sender, **kwargs):
    try:
        from audit_tools.audit.models import ACTIONS
        from audit_tools.audit.tasks import save_model_action

        i = kwargs["instance"]

        # Model
        model = _extract_model_data(i)

        # Old and new content
        old_data = {}
        if id(i) in _CACHE:
            old_data = _CACHE[id(i)]
            del _CACHE[id(i)]
        new_data = serialize_model_instance(i)

        content = _extract_content_data(old_data, new_data)

        # Action
        if not old_data and new_data:
            action = ACTIONS.CREATE
        else:
            action = ACTIONS.UPDATE

        # Instance
        instance = _extract_instance_data(i)

        # Timestamp
        timestamp = datetime.datetime.now()

        model_action = {
            "model": model,
            "action": action,
            "content": content,
            "instance": instance,
            "timestamp": timestamp,
        }

        # Process
        process = extract_process_data()

        try:
            # Get process
            process = cache.get_process(process)
            access = cache.get_last_access()

            if not settings.RUN_ASYNC:
                save_model_action(model_action, access, process)
            else:
                save_model_action.apply_async((model_action, access, process))
            logger.info("<%s> Model:%s ID:%s", action.capitalize(), model["full_name"], instance["id"])
        except Exception:
            logger.exception("<%s> Model:%s ID:%s", action.capitalize(), model["full_name"], instance["id"])
    except Exception:
        logger.exception("<Post Save>")
def create_access(access, process):
    """
    Create an instance of :class:`audit_tools.Access` given a dict of his field values and a process.

    :param access: Access field values.
    :type access: dict
    :param process: Process field values.
    :type process: dict
    :return: Access created.
    :rtype: :class:`audit_tools.Access`
    """
    p = cache.get_process(process)

    access['process'] = p
    a = _access_factory(**access)

    return a
def create_access(access, process):
    """
    Create an instance of :class:`audit_tools.Access` given a dict of his field values and a process.

    :param access: Access field values.
    :type access: dict
    :param process: Process field values.
    :type process: dict
    :return: Access created.
    :rtype: :class:`audit_tools.Access`
    """
    p = cache.get_process(process)

    access['process'] = p
    a = _access_factory(**access)

    return a