예제 #1
0
def document_resolver(loan_pid):
    """Resolve a Document given a Loan PID."""
    Loan = current_circulation.loan_record_cls
    try:
        document_pid = get_field_value(Loan, loan_pid, "document_pid")
    except KeyError:
        return {}

    Document = current_app_ils.document_record_cls
    try:
        document = Document.get_record_by_pid(document_pid)
    except PIDDeletedError:
        obj = {}
    else:
        obj = pick(
            document,
            "authors",
            "cover_metadata",
            "document_type",
            "edition",
            "identifiers",
            "open_access",
            "pid",
            "publication_year",
            "title",
        )

    return obj
    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 borrowing_request_resolver(request_pid):
     """Return the Document record for the given Brw Request or raise."""
     request_record_cls = current_ils_ill.borrowing_request_record_cls
     document_pid = get_field_value(
         request_record_cls, request_pid, "document_pid"
     )
     return get_document(document_pid)
예제 #4
0
 def vendor_resolver(order_pid):
     """Return the Vendor for the given Order."""
     Order = current_ils_acq.order_record_cls
     Vendor = current_ils_acq.vendor_record_cls
     vendor_pid = get_field_value(Order, order_pid, "vendor_pid")
     vendor = Vendor.get_record_by_pid(vendor_pid)
     return pick(vendor, "pid", "name", "address", "email", "phone",
                 "notes")
예제 #5
0
    def location_resolver(internal_loc_pid):
        """Return the Location record for the given Internal Loc. or raise."""
        location_pid = get_field_value(InternalLocation, internal_loc_pid,
                                       "location_pid")
        location = Location.get_record_by_pid(location_pid)
        del location["$schema"]

        return location
    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")

        Patron = current_app_ils.patron_cls
        patron = Patron.get_patron(patron_pid)
        return patron.dumps_loader()
예제 #7
0
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_empty_dict(patron_pid)
예제 #8
0
    def borrowing_request_resolver(request_pid):
        """Return the Library record for the given Brw Request or raise."""
        request_record_cls = current_ils_ill.borrowing_request_record_cls
        library_pid = get_field_value(request_record_cls, request_pid,
                                      "library_pid")

        library_record_cls = current_ils_ill.library_record_cls
        library = library_record_cls.get_record_by_pid(library_pid)

        return pick(library, "pid", "name")
    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 document_resolver(document_request_pid):
     """Get the Document record for the given DocumentRequest or raise."""
     try:
         document_pid = get_field_value(DocumentRequest,
                                        document_request_pid,
                                        "document_pid")
         if not document_pid:
             return {}
         return get_document(document_pid)
     except KeyError:
         return {}
예제 #11
0
    def location_resolver(internal_loc_pid):
        """Return the Location record for the given Internal Loc. or raise."""
        location_pid = get_field_value(
            InternalLocation, internal_loc_pid, "location_pid"
        )
        location = Location.get_record_by_pid(location_pid)

        return pick(
            location,
            "name",
            "opening_exceptions",
            "opening_weekdays",
            "pid",
        )
예제 #12
0
 def provider_resolver(order_pid):
     """Return the Provider for the given Order."""
     Order = current_ils_acq.order_record_cls
     Provider = current_ils_prov.provider_record_cls
     provider_pid = get_field_value(Order, order_pid, "provider_pid")
     provider = Provider.get_record_by_pid(provider_pid)
     return pick(
         provider,
         "pid",
         "name",
         "address",
         "email",
         "phone",
         "notes",
         "type",
     )
예제 #13
0
    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 borrowing_request_resolver(request_pid):
        """Return the Provider record for the given Brw Request or raise."""
        request_record_cls = current_ils_ill.borrowing_request_record_cls
        provider_pid = get_field_value(request_record_cls, request_pid,
                                       "provider_pid")

        provider_record_cls = current_ils_prov.provider_record_cls
        provider = provider_record_cls.get_record_by_pid(provider_pid)

        return pick(
            provider,
            "pid",
            "name",
            "address",
            "email",
            "phone",
            "notes",
            "type",
        )
    def order_lines_resolver(order_pid):
        Order = current_ils_acq.order_record_cls
        Document = current_app_ils.document_record_cls
        Patron = current_app_ils.patron_cls
        order_lines = get_field_value(Order, order_pid, "order_lines")

        documents = {}
        patrons = {}
        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 not patron_pid:
                continue
            patron = patrons.get(patron_pid) or Patron.get_patron(patron_pid)
            patrons[patron_pid] = patron
            patron_resolver(order_line, patron)
        return order_lines
예제 #16
0
 def document_resolver(item_pid):
     """Return the Document record for the given Item or raise."""
     document_pid = get_field_value(Item, item_pid, "document_pid")
     return get_document(document_pid)
예제 #17
0
 def internal_location_resolver(item_pid):
     """Return the IntLoc record for the given Item or raise."""
     internal_loc_pid = get_field_value(Item, item_pid,
                                        "internal_location_pid")
     return get_internal_location(internal_loc_pid)