コード例 #1
0
    def test_donor_collection(self):
        donors = mailroom_db.DonorCollection()
        # Test adding donors
        d1 = mailroom_db.Donor("Hello", "World")
        d1.add_donation(50)
        d1.add_donation(25)
        d2 = mailroom_db.Donor("World", "Hello")
        d2.add_donation(150)
        d2.add_donation(125)
        donors.add_donor(d1)
        donors.add_donor(d2)
        d_names = [d.get_name() for d in donors.get_donors()]
        # Verify donors got added, and donor info is correct
        self.assertIn(d1.get_name(), d_names)
        self.assertIn(d2.get_name(), d_names)
        for d in donors.get_donors():
            if d.get_name() == d1.get_name():
                self.assertEqual(d1.get_donations(), d.get_donations())
            elif d.get_name() == d2.get_name():
                self.assertEqual(d2.get_donations(), d.get_donations())
            else:
                self.fail("Could not find donor: {name}".format(d.get_name()))

        # Verify adding a donor
        donors.add_donation("Hello", "World", 10)
        for d in donors.get_donors():
            if d.get_name() == d1.get_name():
                self.assertEqual([50, 25, 10], d.get_donations())
コード例 #2
0
 def create_default_db(self):
     db = mailroom_db.DonorCollection()
     # Some default data
     d1 = mailroom_db.Donor("Jimmy", "Stewart")
     d1.add_donation(50)
     d2 = mailroom_db.Donor("Cary", "Grant")
     d2.add_donation(30)
     d2.add_donation(40)
     d3 = mailroom_db.Donor("Audrey", "Hepburn")
     d3.add_donation(80)
     d3.add_donation(90)
     d3.add_donation(100)
     db.add_donor(d1)
     db.add_donor(d2)
     db.add_donor(d3)
     return db
コード例 #3
0
def challenge_project(db, above=0, below=0, multiplier=1):
    # Iterate through the old db, adding every donation in there
    new_db = mailroom_db.DonorCollection()

    for donor in db.get_donors():
        if above > 0:
            donations_list = filter(lambda d: d > above, donor.get_donations())
        elif below > 0:
            donations_list = filter(lambda d: d < below, donor.get_donations())
        else:
            donations_list = donor.get_donations()

        for donation in map(lambda d: d * multiplier, donations_list):
            name = donor.get_key()
            new_db.add_donation(name[0], name[1], donation)

    return_list = list()
    return_list.append("Previous DB:")
    return_list.append(create_report(db))
    return_list.append("\n\nNew DB:")
    return_list.append(create_report(new_db))
    return_list.append('\n\n')

    return '\n'.join(return_list)
コード例 #4
0
    '7': change_donation
}


def draw_main_menu():
    print("\n".join(main_menu_list))


def get_main_menu_input():
    user_input = input(":")
    user_input = user_input.lower().strip()
    return user_input


if __name__ == "__main__":
    db = mailroom_db.DonorCollection()
    # Some default data
    db.add_donation("Jimmy", "Stewart", 50)
    db.add_donation("Cary", "Grant", 30)
    db.add_donation("Cary", "Grant", 40)
    db.add_donation("Audrey", "Hepburn", 80)
    db.add_donation("Audrey", "Hepburn", 90)
    db.add_donation("Audrey", "Hepburn", 100)

    # Now on to the meat and potatos of the mailroom
    running = True
    while running:
        draw_main_menu()
        user_input = get_main_menu_input()
        if user_input in main_menu_actions.keys():
            print(main_menu_actions[user_input](db), "\n\n")