#import click #from flask import Flask from app import app, db from app.models import Book, Author, Stack from csv import DictReader import argparse from app.cover import get_cover import os ap = argparse.ArgumentParser("import csv into flask") ap.add_argument("csv", help = "csv file to import") ap.add_argument("--limit", type=int, default = None, help = "limit to x number of x") args = ap.parse_args() with open(args.csv) as f: for row in DictReader(f): cover = '' if row['Filename']: fullpath = os.path.join(app.config['UPLOAD_FOLDER'], row['Filename']) name, file_extension = os.path.splitext(row['Filename']) print ('get_cover', fullpath, name) cover = get_cover(fullpath, name) book = Book(row['Title'], row['Filename'], cover, row['Format'], row['Category'], None, None, None, None, None, None) db.session.add(book) authors = row['Author'].split(',') authors = [x.strip() for x in authors] for author in authors: if author: a = db.session.query(Author).filter_by(author_name=author).first() if a == None: a = Author(author_name=author) db.session.add(a) book.authors.append(a) stacks = row['Stack'] stacks = row['Stack'].split(',') stacks = [x.strip() for x in stacks] for stack in stacks: if stack: b = db.session.query(Stack).filter_by(stack_name=stack).first() if b == None: b = Stack(stack_name=stack, stack_description=None, stack_author=None) db.session.add(b) book.stacks.append(b) db.session.commit() #books = db.session.query(Book).all()