Source code for invenio_stats.contrib.event_builders

# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2017-2018 CERN.
#
# Invenio is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.

"""Signal receivers for certain events."""

from __future__ import absolute_import, print_function

import datetime

from flask import request

from ..utils import get_user


[docs]def file_download_event_builder(event, sender_app, obj=None, **kwargs): """Build a file-download event.""" event.update(dict( # When: timestamp=datetime.datetime.utcnow().isoformat(), # What: bucket_id=str(obj.bucket_id), file_id=str(obj.file_id), file_key=obj.key, size=obj.file.size, referrer=request.referrer, # Who: **get_user() )) return event
[docs]def build_file_unique_id(doc): """Build file unique identifier.""" doc['unique_id'] = '{0}_{1}'.format(doc['bucket_id'], doc['file_id']) return doc
[docs]def build_record_unique_id(doc): """Build record unique identifier.""" doc['unique_id'] = '{0}_{1}'.format(doc['pid_type'], doc['pid_value']) return doc
[docs]def record_view_event_builder(event, sender_app, pid=None, record=None, **kwargs): """Build a record-view event.""" event.update(dict( # When: timestamp=datetime.datetime.utcnow().isoformat(), # What: record_id=str(record.id), pid_type=pid.pid_type, pid_value=str(pid.pid_value), referrer=request.referrer, # Who: **get_user() )) return event