def ill_register_request(uid, title, authors, place, publisher, year, edition, isbn, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition, request_type, barcode='', ln=CFG_SITE_LANG): """ Register new ILL request. Create new record (collection: ILL Books) @param uid: user id @type: int @param authors: book's authors @type authors: string @param place: place of publication @type place: string @param publisher: book's publisher @type publisher: string @param year: year of publication @type year: string @param edition: book's edition @type edition: string @param isbn: book's isbn @type isbn: string @param period_of_interest_from: period of interest - from(date) @type period_of_interest_from: string @param period_of_interest_to: period of interest - to(date) @type period_of_interest_to: string @param additional_comments: comments given by the user @type additional_comments: string @param conditions: ILL conditions @type conditions: boolean @param only_edition: borrower wants only the given edition @type only_edition: boolean """ _ = gettext_set_language(ln) item_info = (title, authors, place, publisher, year, edition, isbn) create_ill_record(item_info) book_info = {'title': title, 'authors': authors, 'place': place, 'publisher': publisher, 'year': year, 'edition': edition, 'isbn': isbn} user = collect_user_info(uid) borrower_id = db.get_borrower_id_by_email(user['email']) #Check if borrower is on DB. if borrower_id != 0: address = db.get_borrower_address(user['email']) #Check if borrower has an address. if address != 0: #Check if borrower has accepted ILL conditions. if conditions: #Register ILL request on crcILLREQUEST. db.ill_register_request(book_info, borrower_id, period_of_interest_from, period_of_interest_to, CFG_BIBCIRCULATION_ILL_STATUS_NEW, additional_comments, only_edition or 'False', request_type, budget_code='', barcode=barcode) #Display confirmation message. message = _("Your ILL request has been registered and the " \ "document will be sent to you via internal mail.") #Notify librarian about new ILL request. send_email(fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_BIBCIRCULATION_LOANS_EMAIL, subject=_('ILL request for books confirmation'), content="", attempt_times=1, attempt_sleeptime=10 ) #Borrower did not accept ILL conditions. else: infos = [] infos.append(_("You didn't accept the ILL conditions.")) body = bc_templates.tmpl_display_ill_form(infos=infos, ln=ln) #Borrower doesn't have an address. else: #If BibCirculation at CERN, use LDAP. if CFG_CERN_SITE == 1: email = user['email'] result = get_user_info_from_ldap(email) try: ldap_address = result['physicalDeliveryOfficeName'][0] except KeyError: ldap_address = None # verify address if ldap_address is not None: db.add_borrower_address(ldap_address, email) db.ill_register_request(book_info, borrower_id, period_of_interest_from, period_of_interest_to, CFG_BIBCIRCULATION_ILL_STATUS_NEW, additional_comments, only_edition or 'False', request_type, budget_code='', barcode=barcode) message = _("Your ILL request has been registered and" \ " the document will be sent to you via" \ " internal mail.") send_email(fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_BIBCIRCULATION_LOANS_EMAIL, subject=_('ILL request for books confirmation'), content="", attempt_times=1, attempt_sleeptime=10 ) else: message = _("It is not possible to validate your request.") message += ' ' + _("Your office address is not available.") message += ' ' + _("Please contact %(contact_email)s") % \ {'contact_email': CFG_BIBCIRCULATION_LIBRARIAN_EMAIL} else: # Get information from CERN LDAP if CFG_CERN_SITE == 1: result = get_user_info_from_ldap(email=user['email']) try: name = result['cn'][0] except KeyError: name = None try: email = result['mail'][0] except KeyError: email = None try: phone = result['telephoneNumber'][0] except KeyError: phone = None try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None try: mailbox = result['postOfficeBox'][0] except KeyError: mailbox = None try: ccid = result['employeeID'][0] except KeyError: ccid = '' # verify address if address is not None: db.new_borrower(ccid, name, email, phone, address, mailbox, '') borrower_id = db.get_borrower_id_by_email(email) db.ill_register_request(book_info, borrower_id, period_of_interest_from, period_of_interest_to, CFG_BIBCIRCULATION_ILL_STATUS_NEW, additional_comments, only_edition or 'False', request_type, budget_code='', barcode=barcode) message = _("Your ILL request has been registered and" \ " the document will be sent to you via" \ " internal mail.") send_email(fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_BIBCIRCULATION_LOANS_EMAIL, subject='ILL request for books confirmation', content="", attempt_times=1, attempt_sleeptime=10 ) else: message = _("It is not possible to validate your request.") message += ' ' + _("Your office address is not available.") message += ' ' + _("Please contact %(contact_email)s") % \ {'contact_email': CFG_BIBCIRCULATION_LIBRARIAN_EMAIL} body = bc_templates.tmpl__with_recid(message=message, ln=ln) return body
def ill_register_request_with_recid(recid, uid, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition, barcode='', ln=CFG_SITE_LANG): """ Register a new ILL request. @param recid: identify the record. Primary key of bibrec. @type recid: int @param uid: user id @type: int @param period_of_interest_from: period of interest - from(date) @type period_of_interest_from: string @param period_of_interest_to: period of interest - to(date) @type period_of_interest_to: string """ _ = gettext_set_language(ln) # Create a dictionary. book_info = "{'recid': " + str(recid) + "}" user = collect_user_info(uid) borrower_id = db.get_borrower_id_by_email(user['email']) if borrower_id is None: if CFG_CERN_SITE == 1: result = get_user_info_from_ldap(email=user['email']) try: name = result['cn'][0] except KeyError: name = None try: email = result['mail'][0] except KeyError: email = None try: phone = result['telephoneNumber'][0] except KeyError: phone = None try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None try: mailbox = result['postOfficeBox'][0] except KeyError: mailbox = None try: ccid = result['employeeID'][0] except KeyError: ccid = '' if address is not None: db.new_borrower(ccid, name, email, phone, address, mailbox, '') else: message = bc_templates.tmpl_message_request_send_fail_cern("Office address not available.") else: message = bc_templates.tmpl_message_request_send_fail_other("Office address not available.") return bc_templates.tmpl_ill_register_request_with_recid( message=message, ln=ln) address = db.get_borrower_address(user['email']) if not address: if CFG_CERN_SITE == 1: email = user['email'] result = get_user_info_from_ldap(email) try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None if address is not None: db.add_borrower_address(address, email) else: message = bc_templates.tmpl_message_request_send_fail_cern("Office address not available.") else: message = bc_templates.tmpl_message_request_send_fail_other("Office address not available.") return bc_templates.tmpl_ill_register_request_with_recid( message=message, ln=ln) if not conditions: infos = [] infos.append(_("You didn't accept the ILL conditions.")) return bc_templates.tmpl_ill_request_with_recid(recid, infos=infos, ln=ln) elif conditions == 'register_acquisition_suggestion': # This ILL request entry is a book proposal. db.ill_register_request(book_info, borrower_id, period_of_interest_from, period_of_interest_to, CFG_BIBCIRCULATION_PROPOSAL_STATUS_NEW, additional_comments, only_edition or 'False','proposal-book', barcode=barcode) else: db.ill_register_request(book_info, borrower_id, period_of_interest_from, period_of_interest_to, CFG_BIBCIRCULATION_ILL_STATUS_NEW, additional_comments, only_edition or 'False','book', barcode=barcode) if CFG_CERN_SITE == 1: message = bc_templates.tmpl_message_request_send_ok_cern() else: message = bc_templates.tmpl_message_request_send_ok_other() #Notify librarian about new ILL request. send_email(fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_BIBCIRCULATION_LOANS_EMAIL, subject='ILL request for books confirmation', content='', #hold_request_mail(recid=recid, borrower_id=borrower_id), attempt_times=1, attempt_sleeptime=10) return bc_templates.tmpl_ill_register_request_with_recid( message=message, ln=ln)
def ill_register_request_with_recid(recid, uid, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition, ln=CFG_SITE_LANG): """ Register a new ILL request. @param recid: identify the record. Primary key of bibrec. @type recid: int @param uid: user id @type: int @param period_of_interest_from: period of interest - from(date) @type period_of_interest_from: string @param period_of_interest_to: period of interest - to(date) @type period_of_interest_to: string """ # create a dictionnary book_info = {'recid': recid} user = collect_user_info(uid) is_borrower = db.is_borrower(user['email']) if is_borrower == 0: if CFG_CERN_SITE == 1: result = get_user_info_from_ldap(email=user['email']) try: name = result['cn'][0] except KeyError: name = None try: email = result['mail'][0] except KeyError: email = None try: phone = result['telephoneNumber'][0] except KeyError: phone = None try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None try: mailbox = result['postOfficeBox'][0] except KeyError: mailbox = None if address is not None: db.new_borrower(name, email, phone, address, mailbox, '') else: message = bibcirculation_templates.tmpl_message_request_send_fail_cern( ) else: message = bibcirculation_templates.tmpl_message_request_send_fail_other( ) return bibcirculation_templates.tmpl_ill_register_request_with_recid( message=message, ln=ln) address = db.get_borrower_address(user['email']) if address == 0: if CFG_CERN_SITE == 1: email = user['email'] result = get_user_info_from_ldap(email) try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None if address is not None: db.add_borrower_address(address, email) else: message = bibcirculation_templates.tmpl_message_request_send_fail_cern( ) else: message = bibcirculation_templates.tmpl_message_request_send_fail_other( ) return bibcirculation_templates.tmpl_ill_register_request_with_recid( message=message, ln=ln) if not conditions: infos = [] infos.append("You didn't accept the ILL conditions.") return bibcirculation_templates.tmpl_ill_request_with_recid( recid, infos=infos, ln=ln) else: db.ill_register_request(book_info, is_borrower, period_of_interest_from, period_of_interest_to, 'new', additional_comments, only_edition or 'False', 'book') if CFG_CERN_SITE == 1: message = bibcirculation_templates.tmpl_message_request_send_ok_cern( ) else: message = bibcirculation_templates.tmpl_message_request_send_ok_other( ) #Notify librarian about new ILL request. send_email(fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr="*****@*****.**", subject='ILL request for books confirmation', content=hold_request_mail(recid, is_borrower), attempt_times=1, attempt_sleeptime=10) return bibcirculation_templates.tmpl_ill_register_request_with_recid( message=message, ln=ln)
def ill_register_request_with_recid(recid, uid, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition, ln=CFG_SITE_LANG): """ Register a new ILL request. @param recid: identify the record. Primary key of bibrec. @type recid: int @param uid: user id @type: int @param period_of_interest_from: period of interest - from(date) @type period_of_interest_from: string @param period_of_interest_to: period of interest - to(date) @type period_of_interest_to: string """ # create a dictionnary book_info = {'recid': recid} user = collect_user_info(uid) is_borrower = db.is_borrower(user['email']) if is_borrower == 0: if CFG_CERN_SITE == 1: result = get_user_info_from_ldap(email=user['email']) try: name = result['cn'][0] except KeyError: name = None try: email = result['mail'][0] except KeyError: email = None try: phone = result['telephoneNumber'][0] except KeyError: phone = None try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None try: mailbox = result['postOfficeBox'][0] except KeyError: mailbox = None if address is not None: db.new_borrower(name, email, phone, address, mailbox, '') else: message = bibcirculation_templates.tmpl_message_request_send_fail_cern() else: message = bibcirculation_templates.tmpl_message_request_send_fail_other() return bibcirculation_templates.tmpl_ill_register_request_with_recid(message=message, ln=ln) address = db.get_borrower_address(user['email']) if address == 0: if CFG_CERN_SITE == 1: email=user['email'] result = get_user_info_from_ldap(email) try: address = result['physicalDeliveryOfficeName'][0] except KeyError: address = None if address is not None: db.add_borrower_address(address, email) else: message = bibcirculation_templates.tmpl_message_request_send_fail_cern() else: message = bibcirculation_templates.tmpl_message_request_send_fail_other() return bibcirculation_templates.tmpl_ill_register_request_with_recid(message=message, ln=ln) if not conditions: infos = [] infos.append("You didn't accept the ILL conditions.") return bibcirculation_templates.tmpl_ill_request_with_recid(recid, infos=infos, ln=ln) else: db.ill_register_request(book_info, is_borrower, period_of_interest_from, period_of_interest_to, 'new', additional_comments, only_edition or 'False','book') if CFG_CERN_SITE == 1: message = bibcirculation_templates.tmpl_message_request_send_ok_cern() else: message = bibcirculation_templates.tmpl_message_request_send_ok_other() #Notify librarian about new ILL request. send_email(fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr="*****@*****.**", subject='ILL request for books confirmation', content=hold_request_mail(recid, is_borrower), attempt_times=1, attempt_sleeptime=10) return bibcirculation_templates.tmpl_ill_register_request_with_recid(message=message, ln=ln)
def ill_register_request( uid, title, authors, place, publisher, year, edition, isbn, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition, ln=CFG_SITE_LANG, ): """ Register new ILL request. Create new record (collection: ILL Books) @param uid: user id @type: int @param authors: book's authors @type authors: string @param place: place of publication @type place: string @param publisher: book's publisher @type publisher: string @param year: year of publication @type year: string @param edition: book's edition @type edition: string @param isbn: book's isbn @type isbn: string @param period_of_interest_from: period of interest - from(date) @type period_of_interest_from: string @param period_of_interest_to: period of interest - to(date) @type period_of_interest_to: string @param additional_comments: comments given by the user @type additional_comments: string @param conditions: ILL conditions @type conditions: boolean @param only_edition: borrower wants only the given edition @type only_edition: boolean """ item_info = (title, authors, place, publisher, year, edition, isbn) create_ill_record(item_info) book_info = { "title": title, "authors": authors, "place": place, "publisher": publisher, "year": year, "edition": edition, "isbn": isbn, } user = collect_user_info(uid) is_borrower = db.is_borrower(user["email"]) # Check if borrower is on DB. if is_borrower != 0: address = db.get_borrower_address(user["email"]) # Check if borrower has an address. if address != 0: # Check if borrower has accepted ILL conditions. if conditions: # Register ILL request on crcILLREQUEST. db.ill_register_request( book_info, is_borrower, period_of_interest_from, period_of_interest_to, "pending", additional_comments, only_edition or "False", ) # Display confirmation message. message = ( "Your ILL request has been registered and the " "document will be sent to you via internal mail." ) # Notify librarian about new ILL request. send_email( fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_SITE_SUPPORT_EMAIL, subject="ILL request for books confirmation", content="", attempt_times=1, attempt_sleeptime=10, ) # Borrower did not accept ILL conditions. else: infos = [] infos.append("You didn't accept the ILL conditions.") body = bibcirculation_templates.tmpl_display_ill_form(infos=infos, ln=ln) # Borrower doesn't have an address. else: # If BibCirculation at CERN, use LDAP. if CFG_CERN_SITE == 1: email = user["email"] result = get_user_info_from_ldap(email) try: ldap_address = result["physicalDeliveryOfficeName"][0] except KeyError: ldap_address = None # verify address if ldap_address is not None: db.add_borrower_address(ldap_address, email) db.ill_register_request( book_info, is_borrower, period_of_interest_from, period_of_interest_to, "pending", additional_comments, only_edition or "False", ) message = ( "Your ILL request has been registered and the document" " will be sent to you via internal mail." ) send_email( fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_SITE_SUPPORT_EMAIL, subject="ILL request for books confirmation", content="", attempt_times=1, attempt_sleeptime=10, ) else: message = ( "It is not possible to validate your request. " "Your office address is not available. " "Please contact ... " ) else: # Get information from CERN LDAP if CFG_CERN_SITE == 1: result = get_user_info_from_ldap(email=user["email"]) try: name = result["cn"][0] except KeyError: name = None try: email = result["mail"][0] except KeyError: email = None try: phone = result["telephoneNumber"][0] except KeyError: phone = None try: address = result["physicalDeliveryOfficeName"][0] except KeyError: address = None try: mailbox = result["postOfficeBox"][0] except KeyError: mailbox = None # verify address if address is not None: db.new_borrower(name, email, phone, address, mailbox, "") is_borrower = db.is_borrower(email) db.ill_register_request( book_info, is_borrower, period_of_interest_from, period_of_interest_to, "pending", additional_comments, only_edition or "False", ) message = ( "Your ILL request has been registered and the document" " will be sent to you via internal mail." ) send_email( fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_SITE_SUPPORT_EMAIL, subject="ILL request for books confirmation", content="", attempt_times=1, attempt_sleeptime=10, ) else: message = ( "It is not possible to validate your request. " "Your office address is not available." " Please contact ... " ) body = bibcirculation_templates.tmpl_ill_register_request_with_recid(message=message, ln=ln) return body
def ill_register_request_with_recid( recid, uid, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition, ln=CFG_SITE_LANG, ): """ Register a new ILL request. @param recid: identify the record. Primary key of bibrec. @type recid: int @param uid: user id @type: int @param period_of_interest_from: period of interest - from(date) @type period_of_interest_from: string @param period_of_interest_to: period of interest - to(date) @type period_of_interest_to: string """ # create a dictionnary book_info = {"recid": recid} user = collect_user_info(uid) is_borrower = db.is_borrower(user["email"]) # Check if borrower is on DB. if is_borrower != 0: address = db.get_borrower_address(user["email"]) # Check if borrower has an address. if address != 0: # Check if borrower has accepted ILL conditions. if conditions: # Register ILL request on crcILLREQUEST. db.ill_register_request( book_info, is_borrower, period_of_interest_from, period_of_interest_to, "pending", additional_comments, only_edition or "False", ) # Display confirmation message. message = ( "Your ILL request has been registered and the " "document will be sent to you via internal mail." ) # Notify librarian about new ILL request. send_email( fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_SITE_SUPPORT_EMAIL, subject="ILL request for books confirmation", content=hold_request_mail(recid, is_borrower), attempt_times=1, attempt_sleeptime=10, ) # Borrower did not accept ILL conditions. else: infos = [] infos.append("You didn't accept the ILL conditions.") body = bibcirculation_templates.tmpl_ill_request_with_recid(recid, infos=infos, ln=ln) # Borrower doesn't have an address. else: # If BibCirculation at CERN, use LDAP. if CFG_CERN_SITE == 1: email = user["email"] result = get_user_info_from_ldap(email) try: ldap_address = result["physicalDeliveryOfficeName"][0] except KeyError: ldap_address = None # verify address if ldap_address is not None: db.add_borrower_address(ldap_address, email) db.ill_register_request( book_info, is_borrower, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition or "False", ) message = ( "Your ILL request has been registered and the document" " will be sent to you via internal mail." ) send_email( fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_SITE_SUPPORT_EMAIL, subject="ILL request for books confirmation", content=hold_request_mail(recid, is_borrower), attempt_times=1, attempt_sleeptime=10, ) else: message = ( "It is not possible to validate your request. " "Your office address is not available. " "Please contact ... " ) else: # Get information from CERN LDAP if CFG_CERN_SITE == 1: result = get_user_info_from_ldap(email=user["email"]) try: name = result["cn"][0] except KeyError: name = None try: email = result["mail"][0] except KeyError: email = None try: phone = result["telephoneNumber"][0] except KeyError: phone = None try: address = result["physicalDeliveryOfficeName"][0] except KeyError: address = None try: mailbox = result["postOfficeBox"][0] except KeyError: mailbox = None # verify address if address is not None: db.new_borrower(name, email, phone, address, mailbox, "") is_borrower = db.is_borrower(email) db.ill_register_request( book_info, is_borrower, period_of_interest_from, period_of_interest_to, additional_comments, conditions, only_edition or "False", ) message = ( "Your ILL request has been registered and the document" " will be sent to you via internal mail." ) send_email( fromaddr=CFG_BIBCIRCULATION_LIBRARIAN_EMAIL, toaddr=CFG_SITE_SUPPORT_EMAIL, subject="ILL request for books confirmation", content=hold_request_mail(recid, is_borrower), attempt_times=1, attempt_sleeptime=10, ) else: message = ( "It is not possible to validate your request. " "Your office address is not available." " Please contact ... " ) body = bibcirculation_templates.tmpl_ill_register_request_with_recid(message=message, ln=ln) return body