def borrowing_request_resolver(request_pid): """Return the Patron record for the given Brw Request or raise.""" request_record_cls = current_ils_ill.borrowing_request_record_cls patron_pid = get_field_value(request_record_cls, request_pid, "patron_pid") return get_patron_or_unknown_dump(patron_pid)
def loan_patron_resolver(loan_pid): """Resolve a Patron given a Loan PID.""" Loan = current_circulation.loan_record_cls try: patron_pid = get_field_value(Loan, loan_pid, "patron_pid") except KeyError: return {} return get_patron_or_unknown_dump(patron_pid)
def patron_resolver(document_request_pid): """Get the Patron record for the given DocumentRequest or raise.""" try: patron_pid = get_field_value( DocumentRequest, document_request_pid, "patron_pid" ) except KeyError: return {} return get_patron_or_unknown_dump(patron_pid)
def order_lines_resolver(order_pid): Order = current_ils_acq.order_record_cls Document = current_app_ils.document_record_cls order_lines = get_field_value(Order, order_pid, "order_lines") documents = {} for order_line in order_lines: doc_pid = order_line.get("document_pid") doc = documents.get(doc_pid) or Document.get_record_by_pid(doc_pid) documents[doc["pid"]] = doc document_resolver(order_line, doc) patron_pid = order_line.get("patron_pid") if patron_pid: patron_dump = get_patron_or_unknown_dump(patron_pid) order_line["patron"] = patron_dump return order_lines
def get_patron_activity(patron_pid): """Get activity related to the given patron pid.""" if patron_pid is None: raise ValueError("No patron pid was provided.") patron = get_patron_or_unknown_dump(patron_pid) def dump(search): return [hit.to_dict() for hit in search.scan()] DocumentRequestSearch = current_app_ils.document_request_search_cls patron_document_requests = dump( DocumentRequestSearch().search_by_patron_pid(patron_pid) ) BorrowingRequestsSearch = current_ils_ill.borrowing_request_search_cls patron_borrowing_requests = dump( BorrowingRequestsSearch().search_by_patron_pid(patron_pid) ) OrderSearch = current_ils_acq.order_search_cls patron_acquisitions = dump(OrderSearch().search_by_patron_pid(patron_pid)) patron_loans = dump(get_loans_by_patron_pid(patron_pid)) patron_profile = UserProfile.get_by_userid(patron_pid).__dict__ del patron_profile["_sa_instance_state"] patron_data = { "patron": patron, "profile": patron_profile, "document_requests": patron_document_requests, "borrowing_requests": patron_borrowing_requests, "acquisitions": patron_acquisitions, "loans": patron_loans, } return patron_data