Пример #1
0
    def test_show_products_for_customer(self):
        """Tests database.show_products_for_customer"""

        _, _ = DatabaseInterface.import_data(DATA_DIR, PRODUCTS, CUSTOMERS, RENTALS)

        correct = []
        for key in sorted(self.products_remaining):
            correct.append({PROD_DESC: self.product_data[key][PROD_DESC],
                            PROD_TYPE: self.product_data[key][PROD_TYPE],
                            'quantity_available': self.products_remaining[key]})
        self.assertEqual(correct,
                         DatabaseInterface.show_products_for_customer())
Пример #2
0
    def test_show_available_products(self):
        """Test database.show_available_products"""

        self.assertEqual({}, DatabaseInterface.show_available_products(), "Nothing so far")

        success, fail = DatabaseInterface.import_data(DATA_DIR, PRODUCTS, CUSTOMERS, RENTALS)

        prods_to_show = DatabaseInterface.show_available_products()
        self.assertEqual(sorted(self.products_remaining.keys()), sorted(prods_to_show.keys()))
        correct = dict(zip(prods_to_show, ({PROD_DESC: self.product_data[prod][PROD_DESC],
                                            PROD_TYPE: self.product_data[prod][PROD_TYPE],
                                            PROD_REMAIN: self.products_remaining[prod]}
                                           for prod in prods_to_show)))

        self.assertEqual(correct, prods_to_show, "Products to show")
Пример #3
0
    def test_read_dict(self):
        """Test reading CSV with dict output"""

        # Read the file and assert that the dictionary output
        # matches self.data_dict
        data = DatabaseInterface.read_csv(self.filename, keyed=True)

        self.assertEqual(self.data_dict, data)
Пример #4
0
    def test_show_rentals(self):
        """Test database.show_rentals"""

        _, _ = DatabaseInterface.import_data(DATA_DIR, PRODUCTS, CUSTOMERS, RENTALS)

        if "prodX" not in self.product_data:
            self.assertEqual({}, DatabaseInterface.show_rentals("prodX"))
        else:
            raise NameError("Test case invalid - 'prodX' exists as a product key")

        # Compute correct rental data
        for product in self.product_keys:
            correct = {}
            for entry in self.rental_data:
                user, prod, qty = entry[USER_ID], entry[PROD_ID], entry[RENT_QTY]
                if prod == product:  # Add as rental for this product
                    correct[user] = self.customer_data[user]
                    try:
                        correct[user].pop(USER_ID)
                    except KeyError:
                        pass

            self.assertEqual(correct, DatabaseInterface.show_rentals(product))
Пример #5
0
    def setUp(self) -> None:
        """Set up test case"""

        # The read_csv method is tested above
        self.customer_data = DatabaseInterface.read_csv(os.path.join(DATA_DIR, CUSTOMERS), keyed=True)
        self.product_data = DatabaseInterface.read_csv(os.path.join(DATA_DIR, PRODUCTS), keyed=True)
        self.rental_data = DatabaseInterface.read_csv(os.path.join(DATA_DIR, RENTALS), keyed=False)

        self.customer_keys = list(self.customer_data.keys())
        self.product_keys = list(self.product_data.keys())

        self.products_remaining = dict(zip(self.product_keys,
                                           (self.product_data[k][PROD_QTY] for
                                            k in self.product_keys)))

        for rental in self.rental_data:  # Subtract rented quantities from stock
            prod, qty = rental[PROD_ID], rental[RENT_QTY]
            try:
                self.products_remaining[prod] = self.products_remaining[prod] - qty
            except KeyError:
                pass
            else:
                if self.products_remaining[prod] <= 0:
                    self.products_remaining.pop(prod)
Пример #6
0
    def test_import_data(self):
        """Test database.import_data"""

        success, fail = DatabaseInterface.import_data(DATA_DIR, PRODUCTS, CUSTOMERS, RENTALS)

        # Order = products, customers, rentals
        names = ("Products", "Customers", "Rentals")
        n_prod = len(self.product_keys)
        n_cust = len(self.customer_keys)
        n_rent = len(self.rental_data)

        for correct, value, name in zip((n_prod, n_cust, n_rent), success, names):
            self.assertEqual(correct, value, name)

        self.assertEqual((0, 0, 0), fail, "Fail count")

        # Assert they were added to the database correctly
        with database.MongoManager() as mm:
            self.assertEqual(len(self.rental_data), mm.db.rentals.count_documents({}), "Rental count")
            self.assertEqual(len(self.product_keys), mm.db.products.count_documents({}), "Prod count")
            self.assertEqual(len(self.customer_keys), mm.db.customers.count_documents({}), "Cust count")
Пример #7
0
import csv
from database import DatabaseInterface
import utilities as ut

players_dir_path = 'c:/my_projects/fantasy_football/players/'
db = 'c:/sqlite/chinook/sample.db'
dbi = DatabaseInterface(db)


# pos = 0, name = 2, fgm = 7, team = 12
def load_kickers(kickers_csv):
    """pos = 0, name = 2, fgm = 7, team = 12"""
    with open(players_dir_path + kickers_csv, 'r', newline='') as infile:
        kickers = csv.reader(infile)
        for kicker in kickers:
            if ut.input_is_integer(kicker[7]):
                score = ut.kicker_score(int(kicker[7]))
            else:
                score = 0
            dbi.add_player_to_game(kicker[2], kicker[0], kicker[12], score)


def load_quarterbacks(quarterbacks_csv):
    """IN the csv, pos is [0], name = [2], team = [12[, tds = [5], int = [7], yards= [9]"""
    with open(quarterbacks_csv, 'r', newline='') as infile:
        quarterbacks = csv.reader(infile)
        for quarterback in quarterbacks:
            if ut.input_is_integer(quarterback[5]):
                tds = int(quarterback[5])
            else:
                tds = 0
Пример #8
0
def index():
    dbi = DatabaseInterface('c:/sqlite/chinook/sample.db')
    players = dbi.get_lastyear_stats('WR')
    return render_template('base.html', title='Home', players=players)
Пример #9
0
OBJECT_EXTRACTION_PICTURE_FOLDER = CURRENT_PATH + "data/objects/"
LAYER_FOLDER = CURRENT_PATH + "data/layers/" + CURRENT_LABEL + "/"
LOCAL_PICTURES = CURRENT_PATH + "pictures/"

## MODELS ##
BACKGROUND_SUBTRACTOR_GRAPH_NAME = MODELS_PATH + 'models/deeplab/frozen_inference_graph.pb'
OBJECT_DETECTION_GRAPH_NAME = MODELS_PATH + 'models/rnn_8/frozen_inference_graph.pb'
OBJECT_DETECTION_LABELS = MODELS_PATH + 'models/rnn_8/labels.pbtxt'
OBJECT_DETECTION_NUM_CLASSES = 8
LAYER_EXTRACTOR_GRAPH_NAME = MODELS_PATH + 'models/inception/inception.pb'
PERSON_DETECTION_GRAPH_NAME = MODELS_PATH + 'models/coco/frozen_inference_graph.pb'
PERSON_DETECTION_LABELS = MODELS_PATH + 'models/coco/coco.pbtxt'
PERSON_DETECTION_NUM_CLASSES = 90

## FIND IMAGES IN DATABASE
db = DatabaseInterface(LAYER_FOLDER)

if LOCAL_MODE:
    downloader = ImageDownloader([], "tmp")
    downloader.set_local_mode(LOCAL_PICTURES + CURRENT_LABEL + ".json",
                              restore_folder=LAYER_FOLDER)
    db.set_treshold(downloader.get_restore_treshold())
    total_image = len(downloader.read())
    print(total_image)
else:
    images = db.load_pictures(LABELS[CURRENT_LABEL]["category_ids"],
                              LABELS[CURRENT_LABEL]["subcategory_ids"])
    total_image = len(images)
    print("IMAGES", len(images))
    #sys.exit()
    ## START DOWNLOADING THREAD
        "category_ids":
        [1, 172, 191, 144, 150, 137, 108, 94, 86, 95, 107, 114, 190, 113],
        "subcategory_ids": []
    },  #40116
    "dresses": {
        "category_ids": [58, 112],
        "subcategory_ids": []
    },  #82450
}
EXIT_FLAG = False

LAYER_FOLDER = "data/layers/" + CURRENT_LABEL + "/"
PICTURE_FOLDER = "pictures/"

## FIND IMAGES IN DATABASE
db = DatabaseInterface(LAYER_FOLDER)
print("GET IMAGES")
images = db.load_pictures(LABELS[CURRENT_LABEL]["category_ids"],
                          LABELS[CURRENT_LABEL]["subcategory_ids"])

total_image = len(images)
print("IMAGES", len(images))

## START DOWNLOADING THREAD

modulo = len(images) % 10

total_per_thread = int((total_image - modulo) / 10)

downloader = ImageDownloader(images[:total_per_thread],
                             PICTURE_FOLDER + CURRENT_LABEL,
Пример #11
0
    found_peers = []
    try:

        for (ip_address, port) in dns_seeds:
            for info in socket.getaddrinfo(ip_address, port, socket.AF_INET,
                                           socket.SOCK_STREAM,
                                           socket.IPPROTO_TCP):
                found_peers.append((info[4][0], info[4][1]))
        return found_peers
    except Exception as e:
        print('Invalid dns seed {}'.format(e))
        raise


if __name__ == '__main__':
    hosts = get_node_addresses()

    database = DatabaseInterface()

    maxConnections = 2

    if hosts is None:
        raise IndexError('Hosts is None')

    for host in hosts:
        c = Connection(host, database)

    asyncore.loop()

    database.close()