def main(): """Main menu for mailroom program""" Donation.open_db("donations.db") switch_menu_dict = { "1": send_thank_you, "2": create_a_report, "3": send_all_letters, "4": run_projection, "5": update_donor_info, "6": delete_donor_info, "q": quit_program, "quit": quit_program } while True: print("\nMAIN MENU") print(" 1 = Send a Thank You") print(" 2 = Create a Report") print(" 3 = Send Letters to Everyone") print(" 4 = Run A Projection") print(" 5 = Update Donor Name/Donation") print(" 6 = Delete Donor Name/Donation") print(" q = Quit") choice = input(" ? ") switch_menu_dict.get(choice, main_menu_error)()
def delete_donor_info(): while True: name = input("\nDonor name ('q' to quit): ") if name in ('q', 'quit'): return info = input( " Delete name or donation amount ('name', 'amount', or 'q' to quit): " ) if info in ('q', 'quit'): return if info == 'name': if not Donation.delete_donor(name): print(" Delete failed, invalid inputs") continue if info == 'amount': amount = input(" Amount: ") if not Donation.delete_donation(name, amount): print(" Delete failed, invalid inputs")
def update_donor_info(): while True: name = input("\nDonor name ('q' to quit): ") if name in ('q', 'quit'): return info = input( " Update name or donation amount ('name', 'amount', or 'q' to quit: " ) if info in ('q', 'quit'): return if info == 'name': new_name = input(" New name: ") if not Donation.update_donor(name, new_name): print(" Update failed, invalid inputs") continue if info == 'amount': old_amount = input(" Amount: ") new_amount = input(" New amount: ") if not Donation.update_donation(name, old_amount, new_amount): print(" Update failed, invalid inputs")
def send_thank_you(): """Add a donor/donation and print out a thank you letter""" # loop for user input: donor name, or list, or quit while True: name = input( "\nDonor Full Name (type 'list' for donor list or 'q' to quit): ") if name in ('q', 'quit'): return if name == 'list': print(Donation.list_donors()) continue while True: amount = input("Donation amount (type 'q' to quit): ") if amount in ('q', 'quit'): return try: Donation.add_donation(name, amount) except ValueError: print('Invalid input, try again') else: break print('\n' + Donation.thank_you_letter(name))
def run_projection(): """Run projection showing total contribution of challenge scenario""" while True: factor = input("\nChallenge factor ('q' to quit): ") if factor in ('q', 'quit'): return min_filter = input( "Minimum donation to challenge (<return> for none, 'q' to quit): ") if min_filter in ('q', 'quit'): return max_filter = input( "Maximum donation to challenge (<return> for none, 'q' to quit): ") if max_filter in ('q', 'quit'): return try: scenario = Donation.challenge( float(factor), float(min_filter) if min_filter else None, float(max_filter) if max_filter else None) print("\n" + scenario) except ValueError: print('Invalid inputs, try again') else: break
def send_all_letters(): """Write thank you letters to all donors to text files, filename = <donor_name>.txt""" dir_name = input("Output directory ('.' for current dir): ") Donation.send_all_letters(dir_name)
def create_a_report(): """Print a summary of donors and amounts donated to screen""" print("\n" + Donation.summary_report())
def quit_program(): """close database, then exit program""" Donation.close_db() exit()