def add_donation(): donor_input = "" confirm_input = "" donation_amount = "" donation_positive = False thank_you_prompt = "For main menu enter 'q' at any time.\n" + \ "Enter a donor's Full Name or enter 'list' to see " + \ "the donors list :" dontation_prompt = "Please enter donation amount: " while (donor_input != "q"): donor_input = input(thank_you_prompt) # Donors list and exiting options while donor_input == "list": print(Charity.GetDonorList()) donor_input = input(thank_you_prompt) if donor_input == "q": break while confirm_input.lower() not in ("y", "n", "q"): confirm_input = input( f"Is {donor_input} the donor's name? (y/n): ") if confirm_input.lower() == "q": break elif confirm_input.lower() == "n": donor_input = "" continue while (type(donation_amount) != float): donation_amount = input(dontation_prompt) if donation_amount == "q": break try: donation_amount = float(donation_amount) except ValueError: print('Please enter a number') if donation_amount < 0: donation_amount = "" print('Please enter a positive number') if donation_amount == "q": break # Assigning donor values if donor_input not in Charity.DonorList: Charity.AddDonor(donor_input, [donation_amount]) else: Charity.DonorList[donor_input].AddDonation(donation_amount) print(Charity.DonorList[donor_input].LatestDonation()) donor_input = "q"
def test_Charity_1(): c = Charity("Red Cross") c.AddDonor("Bill Gates", [10000, 5000.00, 42000.00]) c.AddDonor("Jeff Bezos", [1500.00]) c.AddDonor("Paul Allen", [50000]) assert c.CharityName == "Red Cross" assert "Bill Gates" in c.DonorList c.DonorList["Paul Allen"].AddDonation(4500.00) assert c.DonorList["Paul Allen"].Donations == [50000, 4500.00] DonorInfo = list() for donor in c.DonorList.items(): DonorInfo.append( f"{donor[1].DonorName}: {donor[1].TotalDonation():.2f}") assert ",".join(DonorInfo) == "Bill Gates: 57000.00," + \ "Jeff Bezos: 1500.00," + \ "Paul Allen: 54500.00"
def main(): input = "".join(open("mailroominput.txt", "r").readlines()) sys.stdin = io.StringIO(input) local_charity = Charity('Local Charity') local_charity.AddDonor('William Gates, III') local_charity.Donors['William Gates, III'].AddDonation(60000.00) local_charity.Donors['William Gates, III'].AddDonation(50000.00) local_charity.AddDonor('Mark Zuckerberg') local_charity.Donors['Mark Zuckerberg'].AddDonation(10000.00) local_charity.Donors['Mark Zuckerberg'].AddDonation(60000.00) local_charity.Donors['Mark Zuckerberg'].AddDonation(396.10) local_charity.AddDonor('Jeff Bezos') local_charity.Donors['Jeff Bezos'].AddDonation(877.33) user_input(local_charity)
def main(): # test Charity creation test_charity = Charity('local charity') assert (test_charity.CharityName == 'local charity') assert (test_charity.Donors == {}) # test AddDonor from Charity test_name = 'Kyle Clark' test_charity.AddDonor(test_name) assert (test_charity.Donors[test_name].Donations == []) # test functions of Donor amount = 1000.56 test_send_thank_you(test_charity, test_name, amount) # test send all thank yous of Charity test_send_all_thank_yous(test_charity)
def test_Charity_2(): c = Charity("Red Cross") c.AddDonor("Bill Gates", [10000, 5000.00, 42000.00]) c.AddDonor("Jeff Bezos", [1500.00]) c.AddDonor("Paul Allen", [50000, 4500.00]) DonorList = c.GetDonorList() assert DonorList == "------------------------------\n" + \ "Bill Gates\nJeff Bezos\nPaul Allen\n" + \ "------------------------------\n"
def send_thank_you(): donor_name = "" print(Charity.GetDonorList()) while (donor_name not in Charity.DonorList): donor_name = input("Enter a donor name from the list: ") if donor_name == "q": break if donor_name not in Charity.DonorList: print(f"{donor_name} is not in the list") if donor_name != "q": folder_name = input("Enter the folder to save the letter: ") folder = create_folder(folder_name) Charity.DonorList[donor_name].TextFile(folder[0], folder[1])
def test_Charity_3(): c = Charity("Red Cross") c.AddDonor("Bill Gates", [10000, 5000.00, 42000.00]) c.AddDonor("Jeff Bezos", [1500.00]) c.AddDonor("Paul Allen", [50000, 4500.00]) Report = "-----------------------------------------------------------\n" + \ "Red Cross\n" + \ "-----------------------------------------------------------\n" + \ "Donor Name | Total Given | Num Gifts | Average Gift\n" + \ "-----------------------------------------------------------\n" + \ "Bill Gates $ 57000.00 3 $ 19000.00\n" + \ "Paul Allen $ 54500.00 2 $ 27250.00\n" + \ "Jeff Bezos $ 1500.00 1 $ 1500.00\n" assert c.GetReport() == Report
def create_report(): print(Charity.GetReport())
folder = create_folder(folder_name) for name in Charity.DonorList: Charity.DonorList[name].TextFile(folder[0], folder[1]) def quit(): print("Thank you for using Mailroom.\nExiting Program\n") main_prompt = ("\nYou are in the main menu, Choose an action to perform:\n" + "1: Add a Donation.\n" + "2: Create a Report.\n" + "3: Send Thank You letter to a single donor.\n" "4: Send Thank You letters to all donors.\n" + "q: Quit\n") main_dispatch = { "1": add_donation, "2": create_report, "3": send_thank_you, "4": send_thank_you_all, "q": quit } if __name__ == '__main__': Charity = Charity("Red Cross") Charity.AddDonor("Paul Allen", [250.00, 433.49, 413.45]) Charity.AddDonor("Mark Zuckerberg", [3422.12, 5877.13, 4323.65]) Charity.AddDonor("Jeff Bezos", [877.33]) Charity.AddDonor("William Gates, III", [45523.16, 212333.12]) main_menu(main_dispatch)
brent_golden = Donor("Brent Golden", [{'12_13_2019': 750.00}, {'12_12_2019': 250.00}, {'12_11_2019': 250.00}]) regan_kirk = Donor("Regan Kirk", [{'12_10_2019': 300.00}, {'12_09_2019': 300.00}]) shiloh_gardner = Donor("Shiloh Gardner", [{'12_08_2019': 100.00}, {'12_07_2019': 100.00}, {'12_06_2019': 100.00}, {'12_05_2019': 100.00}]) alanna_newton = Donor("Alanna Newton", [{'12_04_2019': 200.00}, {'12_03_2019': 50.00}, {'12_02_2019': 100.00}, {'12_01_2019': 75.00}]) marcel_torres = Donor("Marcel Torres", [{'11_30_2019': 25.00}, {'11_29_2019': 25.00}, {'11_28_2019': 25.00}, {'11_27_2019': 25.00}, {'11_26_2019': 25.00}, {'11_25_2019': 25.00}]) help_for_students = Charity("Help for Students") help_for_students.add_donor(brent_golden) help_for_students.add_donor(regan_kirk) help_for_students.add_donor(shiloh_gardner) help_for_students.add_donor(alanna_newton) help_for_students.add_donor(marcel_torres) # ---------- Main menu with Charity object passed in ----------- # menu_selection(MAIN_PROMPT, main_switch, help_for_students)