diff --git a/invenio_circulation/signals.py b/invenio_circulation/signals.py new file mode 100644 index 0000000..0413bd6 --- /dev/null +++ b/invenio_circulation/signals.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2018 CERN. +# Copyright (C) 2018 RERO. +# +# Invenio-Circulation is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Signals for Invenio-Circulation.""" + +from blinker import Namespace + +_signals = Namespace() + +loan_state_changed = _signals.signal('loan-state-changed') +"""Loan state changed signal. + +Its is broadcasted when a loan transitions to a different state. +""" diff --git a/invenio_circulation/transitions/base.py b/invenio_circulation/transitions/base.py index 467d0b9..12fd1ea 100644 --- a/invenio_circulation/transitions/base.py +++ b/invenio_circulation/transitions/base.py @@ -15,6 +15,7 @@ from ..api import is_item_available from ..errors import InvalidState, ItemNotAvailable, \ TransitionConditionsFailed, TransitionConstraintsViolation +from ..signals import loan_state_changed from ..utils import parse_date @@ -124,4 +125,5 @@ def after(self, loan): """Commit record and index.""" loan['transaction_date'] = loan['transaction_date'].isoformat() loan.commit() + loan_state_changed.send(self, loan=loan) # TODO: save to db and index loan here???