def print_actual_due_date(loan_id=None, barcode=None, borrower_id=None): if not loan_id and barcode: loan_id = db.get_current_loan_id(barcode) elif not barcode and loan_id: loan_infos = db.get_loan_infos(loan_id) if loan_infos: barcode = loan_infos[1] if loan_id and barcode: due_date = db.get_due_date(loan_id) if not (borrower_id): borrower_id = db.get_borrower_id_from_loan(loan_id) loan_period = db.get_loan_period_from_loan_rule(barcode, user_id=borrower_id, patrontype_id=None) if loan_period and loan_period['type'] == 'hours': return due_date else: return due_date.split(" ")[0] return None
def print_actual_due_date(loan_id=None, barcode=None, borrower_id=None): if not loan_id and barcode: loan_id = db.get_current_loan_id(barcode) elif not barcode and loan_id: loan_infos = db.get_loan_infos(loan_id) if loan_infos: barcode = loan_infos[1] if loan_id and barcode: due_date = db.get_due_date(loan_id) if not (borrower_id): borrower_id = db.get_borrower_id_from_loan(loan_id) loan_period = db.get_loan_period_from_loan_rule(barcode, user_id=borrower_id, patrontype_id=None) if loan_period and loan_period['type'] == 'hours': return due_date else: return due_date.split(" ")[0] return None
def perform_borrower_loans(uid, barcode, borrower_id, request_id, action, ln=CFG_SITE_LANG): """ Display all the loans and the requests of a given borrower. @param barcode: identify the item. Primary key of crcITEM. @type barcode: string @param borrower_id: identify the borrower. Primary key of crcBORROWER. @type borrower_id: int @param request_id: identify the request: Primary key of crcLOANREQUEST @type request_id: int @return body(html) """ _ = gettext_set_language(ln) infos = [] borrower_id = db.get_borrower_id_by_email(db.get_invenio_user_email(uid)) new_due_date = generate_new_due_date(30) #renew loan if action == 'renew': recid = db.get_id_bibrec(barcode) item_description = db.get_item_description(barcode) queue = db.get_queue_request(recid, item_description) if len(queue) != 0 and queue[0][0] != borrower_id: message = "It is not possible to renew your loan for %(x_strong_tag_open)s%(x_title)s%(x_strong_tag_close)s" % {'x_title': book_title_from_MARC(recid), 'x_strong_tag_open': '<strong>', 'x_strong_tag_close': '</strong>'} message += ' ' + _("Another user is waiting for this book.") infos.append(message) else: loan_id = db.get_current_loan_id(barcode) db.renew_loan(loan_id, new_due_date) #update_status_if_expired(loan_id) tag_all_requests_as_done(barcode, borrower_id) infos.append(_("Your loan has been renewed with success.")) #cancel request elif action == 'cancel': db.cancel_request(request_id) barcode_requested = db.get_requested_barcode(request_id) update_requests_statuses(barcode_requested) #renew all loans elif action == 'renew_all': list_of_barcodes = db.get_borrower_loans_barcodes(borrower_id) for bc in list_of_barcodes: bc_recid = db.get_id_bibrec(bc) item_description = db.get_item_description(bc) queue = db.get_queue_request(bc_recid, item_description) #check if there are requests if len(queue) != 0 and queue[0][0] != borrower_id: message = "It is not possible to renew your loan for %(x_strong_tag_open)s%(x_title)s%(x_strong_tag_close)s" % {'x_title': book_title_from_MARC(bc_recid), 'x_strong_tag_open': '<strong>', 'x_strong_tag_close': '</strong>'} message += ' ' + _("Another user is waiting for this book.") infos.append(message) else: loan_id = db.get_current_loan_id(bc) db.renew_loan(loan_id, new_due_date) #update_status_if_expired(loan_id) tag_all_requests_as_done(barcode, borrower_id) if infos == []: infos.append(_("All loans have been renewed with success.")) loans = db.get_borrower_loans(borrower_id) requests = db.get_borrower_requests(borrower_id) proposals = db.get_borrower_proposals(borrower_id) body = bc_templates.tmpl_yourloans(loans=loans, requests=requests, proposals=proposals, borrower_id=borrower_id, infos=infos, ln=ln) return body