Skip to content

Commit

Permalink
notifications: support pickup location deletion
Browse files Browse the repository at this point in the history
* Uses transaction location if pickup location does not exist any more.

Co-Authored-by: Peter Weber <[email protected]>
  • Loading branch information
2 people authored and iGor milhit committed Sep 2, 2021
1 parent b10e0cf commit fab9104
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 5 deletions.
6 changes: 6 additions & 0 deletions rero_ils/modules/notifications/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,12 @@ def replace_pids_and_refs(self):
elif self.transaction_location:
data['loan']['pickup_name'] = \
data['loan']['transaction_library']['name']
data['loan']['pickup_location'] = \
data['loan']['transaction_location']
data['loan']['pickup_location_pid'] = \
data['loan']['transaction_location']['pid']
data['loan']['pickup_library'] = \
data['loan']['transaction_library']

document = self.document.replace_refs().dumps()
data['loan']['document'] = document
Expand Down
10 changes: 8 additions & 2 deletions rero_ils/modules/notifications/dispatcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,14 @@ def _process_notification(cls, notification, resend, aggregated):
request_patron.replace_refs().dumps()
pickup_location = Location.get_record_by_pid(
request_loan['pickup_location_pid'])
ctx_data['request_pickup_name'] = \
pickup_location['pickup_name']
if pickup_location:
ctx_data['request_pickup_name'] = \
pickup_location['pickup_name']
else:
transaction_location = Location.get_record_by_pid(
request_loan['transaction_location_pid'])
ctx_data['request_pickup_name'] = \
transaction_location['name']

documents_data['item'] = {
'barcode': item_data['barcode'],
Expand Down
33 changes: 32 additions & 1 deletion tests/api/notifications/test_notifications_rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -979,8 +979,39 @@ def test_booking_notifications(client, patron_martigny, patron_sion,
# pickup
loan = Loan.get_record_by_pid(request_loan_pid)
assert loan.state == LoanState.ITEM_IN_TRANSIT_FOR_PICKUP
assert mailbox[-1].recipients == [
assert mailbox[0].recipients == [
lib_fully.get('notification_settings')[4].get('email')]
# the patron information is the patron request
assert patron_martigny['patron']['barcode'][0] in mailbox[0].body
mailbox.clear()


def test_missing_pickup_location(
loan2_validated_martigny, loc_restricted_martigny, mailbox):
"""Test availability notification with missing pickup location."""
mailbox.clear()
loan = loan2_validated_martigny
assert loan.is_notified(notification_type=NotificationType.AVAILABILITY)
notification = get_notification(
loan,
notification_type=NotificationType.AVAILABILITY
)
data = notification.replace_pids_and_refs()
assert data['loan']['pickup_location']['pid'] == \
loc_restricted_martigny.pid
# after deleting the pickup location the notification should use
# the transaction location.
loc_restricted_martigny.delete(dbcommit=True, delindex=True)
notification = get_notification(
loan,
notification_type=NotificationType.AVAILABILITY
)
data = notification.replace_pids_and_refs()
assert data['loan']['pickup_location'] == \
data['loan']['transaction_location']
assert data['loan']['pickup_library'] == \
data['loan']['transaction_library']
for notification_type in NotificationType.ALL_NOTIFICATIONS:
process_notifications(notification_type)
assert len(mailbox)
mailbox.clear()
11 changes: 9 additions & 2 deletions tests/fixtures/circulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,7 @@ def loan2_validated_martigny(
document,
item3_lib_martigny,
loc_public_martigny,
loc_restricted_martigny,
item_type_standard_martigny,
librarian_martigny,
patron_martigny,
Expand All @@ -498,12 +499,17 @@ def loan2_validated_martigny(
"""
transaction_date = datetime.now(timezone.utc).isoformat()

# delete old loans
for loan in item3_lib_martigny.get_loans_by_item_pid(
item_pid=item3_lib_martigny.pid):
loan.delete(dbcommit=True, delindex=True)

item3_lib_martigny.request(
patron_pid=patron_martigny.pid,
transaction_location_pid=loc_public_martigny.pid,
transaction_user_pid=librarian_martigny.pid,
transaction_date=transaction_date,
pickup_location_pid=loc_public_martigny.pid,
pickup_location_pid=loc_restricted_martigny.pid,
document_pid=extracted_data_from_ref(
item3_lib_martigny.get('document'))
)
Expand All @@ -513,13 +519,14 @@ def loan2_validated_martigny(

loan = list(item3_lib_martigny.get_loans_by_item_pid(
item_pid=item3_lib_martigny.pid))[0]

item3_lib_martigny.validate_request(
pid=loan.pid,
patron_pid=patron_martigny.pid,
transaction_location_pid=loc_public_martigny.pid,
transaction_user_pid=librarian_martigny.pid,
transaction_date=transaction_date,
pickup_location_pid=loc_public_martigny.pid,
pickup_location_pid=loc_restricted_martigny.pid,
document_pid=extracted_data_from_ref(
item3_lib_martigny.get('document'))
)
Expand Down

0 comments on commit fab9104

Please sign in to comment.