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
示例#2
0
    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)
示例#3
0
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
示例#4
0
    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