def task_run_core(): """ run daemon """ #write_message("Getting expired loans ...", verbose=9) expired_loans = get_expired_loan() for (borrower_id, loan_id, recid) in expired_loans: (number_of_letters, date_letters) = get_overdue_letters_info(loan_id) if number_of_letters == 0: content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL1'], loan_id) elif number_of_letters == 1 and send_second_recall(date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL2'], loan_id) elif number_of_letters == 2 and send_third_recall(date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) else: content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) title = ''.join(get_fieldvalues(recid, "245__a")) subject = "LOAN RECALL: " + title update_expired_loan(loan_id) #write_message("Updating information about expired loans") send_overdue_letter(borrower_id, subject, content) #write_message("Sending overdue letter") #write_message("Done!!") return 1
def task_run_core(): """ run daemon """ #write_message("Getting expired loans ...", verbose=9) expired_loans = get_expired_loan() for (borrower_id, loan_id, recid) in expired_loans: (number_of_letters, date_letters) = get_overdue_letters_info(loan_id) if number_of_letters == 0: content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL1'], loan_id) elif number_of_letters == 1 and send_second_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL2'], loan_id) elif number_of_letters == 2 and send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) else: content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) title = ''.join(get_fieldvalues(recid, "245__a")) subject = "LOAN RECALL: " + title update_expired_loan(loan_id) #write_message("Updating information about expired loans") send_overdue_letter(borrower_id, subject, content) #write_message("Sending overdue letter") #write_message("Done!!") return 1
def task_run_core(): """ run daemon """ if task_get_option("update-borrowers"): list_of_borrowers = db.get_all_borrowers() total_borrowers = len(list_of_borrowers) done = 0 for borrower in list_of_borrowers: user_id = borrower[0] update_user_info_from_ldap(user_id) done+=1 task_update_progress("Done %d out of %d." % (done, total_borrowers)) task_sleep_now_if_required(can_stop_too=True) if task_get_option("overdue-letters"): expired_loans = db.get_all_expired_loans() total_expired_loans = len(expired_loans) done = 0 for (borrower_id, _bor_name, recid, _barcode, _loaned_on, _due_date, _number_of_renewals, number_of_letters, date_letters, _notes, loan_id) in expired_loans: number_of_letters=int(number_of_letters) content = '' if number_of_letters == 0: content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL1'], loan_id) elif number_of_letters == 1 and must_send_second_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL2'], loan_id) elif number_of_letters == 2 and must_send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) elif number_of_letters >= 3 and must_send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) if content != '': title = book_title_from_MARC(recid) subject = "LOAN RECALL: " + title update_expired_loan(loan_id) send_overdue_letter(borrower_id, subject, content) done+=1 task_update_progress("Done %d out of %d." % (done, total_expired_loans)) task_sleep_now_if_required(can_stop_too=True) time.sleep(1) return 1
def task_run_core(): """ Run daemon """ write_message("Starting...") if task_get_option("update-borrowers"): write_message("Started update-borrowers") list_of_borrowers = db.get_all_borrowers() total_borrowers = len(list_of_borrowers) for done, borrower in enumerate(list_of_borrowers): user_id = borrower[0] update_user_info_from_ldap(user_id) if done % 10 == 0: task_update_progress("Borrower: updated %d out of %d." % (done, total_borrowers)) task_sleep_now_if_required(can_stop_too=True) task_update_progress("Borrower: updated %d out of %d." % (done + 1, total_borrowers)) write_message("Updated %d out of %d total borrowers" % (done + 1, total_borrowers)) if task_get_option("update-requests"): write_message("Started update-requests") list_of_reqs = db.get_loan_request_by_status( CFG_BIBCIRCULATION_REQUEST_STATUS_WAITING) for (_request_id, recid, bc, _name, borrower_id, _library, _call_no, _location, _date_from, _date_to, _request_date) in list_of_reqs: description = db.get_item_description(bc) list_of_barcodes = db.get_barcodes(recid, description) for barcode in list_of_barcodes: update_requests_statuses(barcode) task_sleep_now_if_required(can_stop_too=True) task_update_progress( "Requests due updated from 'waiting' to 'pending'.") write_message("Requests due updated from 'waiting' to 'pending'.") if task_get_option("overdue-letters"): write_message("Started overdue-letters") expired_loans = db.get_all_expired_loans() total_expired_loans = len(expired_loans) for done, (borrower_id, _bor_name, recid, _barcode, _loaned_on, _due_date, _number_of_renewals, number_of_letters, date_letters, _notes, loan_id) in enumerate(expired_loans): number_of_letters = int(number_of_letters) content = '' if number_of_letters == 0: content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL1'], loan_id) elif number_of_letters == 1 and must_send_second_recall( date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL2'], loan_id) elif number_of_letters == 2 and must_send_third_recall( date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) elif number_of_letters >= 3 and must_send_third_recall( date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) if content != '': title = book_title_from_MARC(recid) subject = "LOAN RECALL: " + title update_expired_loan(loan_id) send_overdue_letter(borrower_id, CFG_BIBCIRCULATION_LOANS_EMAIL, subject, content) if done % 10 == 0: task_update_progress("Loan recall: sent %d out of %d." % (done, total_expired_loans)) task_sleep_now_if_required(can_stop_too=True) task_update_progress( "Loan recall: processed %d out of %d expires loans." % (done + 1, total_expired_loans)) write_message("Processed %d out of %d expired loans." % (done + 1, total_expired_loans)) # Recalls for expired ILLs write_message("Started overdue-letters for Inter Library Loans") expired_ills = db.get_all_expired_ills() total_expired_ills = len(expired_ills) for done, (ill_id, borrower_id, item_info, number_of_letters, date_letters) in enumerate(expired_ills): number_of_letters = int(number_of_letters) content = '' if number_of_letters == 0: content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL1'], ill_id, ill=1) elif number_of_letters == 1 and must_send_second_recall( date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL2'], ill_id, ill=1) elif number_of_letters == 2 and must_send_third_recall( date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL3'], ill_id, ill=1) elif number_of_letters >= 3 and must_send_third_recall( date_letters): content = generate_email_body( CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL3'], ill_id, ill=1) if content != '' and looks_like_dictionary(item_info): item_info = eval(item_info) if item_info.has_key('title'): book_title = item_info['title'] subject = "ILL RECALL: " + str(book_title) update_expired_loan(loan_id=ill_id, ill=1) send_overdue_letter(borrower_id, CFG_BIBCIRCULATION_ILLS_EMAIL, subject, content) if done % 10 == 0: task_update_progress("ILL recall: sent %d out of %d." % (done, total_expired_ills)) task_sleep_now_if_required(can_stop_too=True) task_update_progress( "ILL recall: processed %d out of %d expired ills." % (done + 1, total_expired_ills)) write_message("Processed %d out of %d expired ills." % (done + 1, total_expired_ills)) return 1
def task_run_core(): """ Run daemon """ write_message("Starting...") if task_get_option("update-borrowers"): write_message("Started update-borrowers") list_of_borrowers = db.get_all_borrowers() total_borrowers = len(list_of_borrowers) for done, borrower in enumerate(list_of_borrowers): user_id = borrower[0] update_user_info_from_ldap(user_id) if done % 10 == 0: task_update_progress("Borrower: updated %d out of %d." % (done, total_borrowers)) task_sleep_now_if_required(can_stop_too=True) task_update_progress("Borrower: updated %d out of %d." % (done+1, total_borrowers)) write_message("Updated %d out of %d total borrowers" % (done+1, total_borrowers)) if task_get_option("update-requests"): write_message("Started update-requests") list_of_reqs = db.get_loan_request_by_status(CFG_BIBCIRCULATION_REQUEST_STATUS_WAITING) for (_request_id, recid, bc, _name, borrower_id, _library, _call_no, _location, _date_from, _date_to, _request_date) in list_of_reqs: description = db.get_item_description(bc) list_of_barcodes = db.get_barcodes(recid, description) for barcode in list_of_barcodes: update_requests_statuses(barcode) task_sleep_now_if_required(can_stop_too=True) task_update_progress("Requests due updated from 'waiting' to 'pending'.") write_message("Requests due updated from 'waiting' to 'pending'.") if task_get_option("overdue-letters"): write_message("Started overdue-letters") expired_loans = db.get_all_expired_loans() total_expired_loans = len(expired_loans) for done, (borrower_id, _bor_name, recid, _barcode, _loaned_on, _due_date, _number_of_renewals, number_of_letters, date_letters, _notes, loan_id) in enumerate(expired_loans): number_of_letters=int(number_of_letters) content = '' if number_of_letters == 0: content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL1'], loan_id) elif number_of_letters == 1 and must_send_second_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL2'], loan_id) elif number_of_letters == 2 and must_send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) elif number_of_letters >= 3 and must_send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['RECALL3'], loan_id) if content != '': title = book_title_from_MARC(recid) subject = "LOAN RECALL: " + title update_expired_loan(loan_id) send_overdue_letter(borrower_id, CFG_BIBCIRCULATION_LOANS_EMAIL, subject, content) if done % 10 == 0: task_update_progress("Loan recall: sent %d out of %d." % (done, total_expired_loans)) task_sleep_now_if_required(can_stop_too=True) task_update_progress("Loan recall: processed %d out of %d expires loans." % (done+1, total_expired_loans)) write_message("Processed %d out of %d expired loans." % (done+1, total_expired_loans)) # Recalls for expired ILLs write_message("Started overdue-letters for Inter Library Loans") expired_ills = db.get_all_expired_ills() total_expired_ills = len(expired_ills) for done, (ill_id, borrower_id, item_info, number_of_letters, date_letters) in enumerate(expired_ills): number_of_letters=int(number_of_letters) content = '' if number_of_letters == 0: content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL1'], ill_id, ill=1) elif number_of_letters == 1 and must_send_second_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL2'], ill_id, ill=1) elif number_of_letters == 2 and must_send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL3'], ill_id, ill=1) elif number_of_letters >= 3 and must_send_third_recall(date_letters): content = generate_email_body(CFG_BIBCIRCULATION_TEMPLATES['ILL_RECALL3'], ill_id, ill=1) if content != '' and looks_like_dictionary(item_info): item_info = eval(item_info) if item_info.has_key('title'): book_title = item_info['title'] subject = "ILL RECALL: " + str(book_title) update_expired_loan(loan_id=ill_id, ill=1) send_overdue_letter(borrower_id, CFG_BIBCIRCULATION_ILLS_EMAIL, subject, content) if done % 10 == 0: task_update_progress("ILL recall: sent %d out of %d." % (done, total_expired_ills)) task_sleep_now_if_required(can_stop_too=True) task_update_progress("ILL recall: processed %d out of %d expired ills." % (done+1, total_expired_ills)) write_message("Processed %d out of %d expired ills." % (done+1, total_expired_ills)) return 1