def init_donors_db(): global mongodb_client # initiliaze donors_db here # ... db_present = False mongodb_client = login_mongodb_cloud() # First, check whether the database exists db = mongodb_client[DATABASE_NAME] for collection in db.list_collections(): if collection['name'] == COLLECTION_NAME: db_present = True if db_present: collection = db[COLLECTION_NAME] cursor = collection.find({}) raw_donors = {} for doc in cursor: name = doc['name'] first = doc['first'] last = doc['last'] donation = doc['donation'] if name not in raw_donors: raw_donors[name] = { 'first': first, 'last': last, 'donations': [] } raw_donors[name]['donations'].append(donation) print(raw_donors) donors = [] for _, donor in raw_donors.items(): d = mailroom5.Donor(donor['first'], donor['last'], recorded_donation_list=donor['donations']) donors.append(d) donors_db = mailroom5.Donor_DB(donors) else: d1 = mailroom5.Donor("__Kate", "Spade", [100]) d2 = mailroom5.Donor("__Michael", "Kors", [100, 100]) d3 = mailroom5.Donor("__Tory", "Burch", [100, 100, 100]) d4 = mailroom5.Donor("__Stuart", "Weitzman", [100, 100, 100, 100]) d5 = mailroom5.Donor("__Kate", "Summerville", [100, 100, 100, 100, 100]) donors_db = mailroom5.Donor_DB([d1, d2, d3, d4, d5]) return donors_db
def test_donor_db_json_text(self): d1 = mr.Donor("Apple", "First", [10, 10]) d2 = mr.Donor("Mango", "Second", [5, 5]) db = mr.Donor_DB([d1, d2]) db2 = js.from_json(db.to_json()) # Check that the donors are the same. self.assertEqual(db, db2)
def init_donors_db(): global redis_client # initiliaze donors_db here # ... db_present = False # First, check whether the database exists try: redis_client = login_redis_cloud() if redis_client.dbsize(): db_present = True except Exception as e: print(f'Redis error: {e}') if db_present: donors = [] keys = redis_client.keys('*') for name in keys: sub_names = name.split(',') last = sub_names[0] first = None if len(sub_names) > 1: first = sub_names[1] donations = [ int(donation) for donation in redis_client.lrange(name, 0, -1) ] d = mailroom5.Donor(first, last, recorded_donation_list=donations) donors.append(d) donors_db = mailroom5.Donor_DB(donors) else: d1 = mailroom5.Donor("__Kate", "Spade", [100]) d2 = mailroom5.Donor("__Michael", "Kors", [100, 100]) d3 = mailroom5.Donor("__Tory", "Burch", [100, 100, 100]) d4 = mailroom5.Donor("__Stuart", "Weitzman", [100, 100, 100, 100]) d5 = mailroom5.Donor("__Kate", "Summerville", [100, 100, 100, 100, 100]) donors_db = mailroom5.Donor_DB([d1, d2, d3, d4, d5]) return donors_db
def test_donor_db_json_file(self): d1 = mr.Donor("Apple", "First", [10, 10]) d2 = mr.Donor("Mango", "Second", [5, 5]) db = mr.Donor_DB([d1, d2]) with open('donor_db.json', 'w') as f: f.write(db.to_json()) with open('donor_db.json') as f: db2 = js.from_json(f.read()) # Check that the donors are the same. self.assertEqual(db, db2)
def init_donors_db(): global driver driver = login_neo4j_cloud() # initiliaze donors_db here # ... db_present = False # First, check whether the database exists with driver.session() as session: #session.run("MATCH (n) DETACH DELETE n") #raise NotImplemented('Implement me!') cyph = """MATCH (p:Person) RETURN p.name as name """ result = session.run(cyph) for record in result: db_present = True break if db_present: donors = [] with driver.session() as session: cyph = """MATCH (p:Person) RETURN p.name as name """ result = session.run(cyph) for record in result: name = record['name'] cyph = """ MATCH (person {name:'%s'}) -[:DONATION]->(donation) RETURN donation """ % (name) result_nested = session.run(cyph) donations = [] for record_nested in result_nested: for donation in record_nested.values(): donations.append(int(donation['donation'])) sub_names = name.split(',') last = sub_names[0] first = None if len(sub_names) > 1: first = sub_names[1] d = mailroom5.Donor(first, last, recorded_donation_list=donations) donors.append(d) donors_db = mailroom5.Donor_DB(donors) else: d1 = mailroom5.Donor("__Kate", "Spade", [100]) d2 = mailroom5.Donor("__Michael", "Kors", [100, 200]) d3 = mailroom5.Donor("__Tory", "Burch", [100, 200, 300]) d4 = mailroom5.Donor("__Stuart", "Weitzman", [100, 200, 300, 400]) d5 = mailroom5.Donor("__Kate", "Summerville", [100, 200, 300, 400, 500]) donors_db = mailroom5.Donor_DB([d1, d2, d3, d4, d5]) return donors_db