import os from shutil import copyfile from app.models import Category, db, Label, Project, ProjectLabel def resources_to_instancedb(app): # copy resource demo db to test file appdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir) sqlite_file_name = os.path.abspath(os.path.join(appdir, 'resources', 'lesia-btp.sqlite')) if not os.path.isdir(app.instance_path): os.mkdir(app.instance_path) db_path = os.path.join(app.instance_path, 'test.db') copyfile(sqlite_file_name, db_path) return db_path categorized_labels = {'pole': ['Spatial', 'Sol'], 'domaine': ['soleil-terre', 'atmosphere', 'r&t', 'géologie']} projects_categories = {'ChemCam': {'pole': 'Spatial', 'domaine': 'géologie'}, 'Pilot': {'pole': 'Spatial', 'domaine': 'atmosphere'}, 'Ambre': {'pole': 'Spatial', 'domaine': 'soleil-terre'}} def feed_projects(): for c_name, labels in categorized_labels.items(): n_c = Category(name=c_name) db.session.add(n_c) for l_name in labels: n_l = Label(name=l_name, category=n_c) db.session.add(n_l) db.session.commit() project_names = projects_categories.keys() for p_name in set(project_names): n_p = Project(name=p_name) db.session.add(n_p) db.session.commit() for p, categories in projects_categories.items(): n_p = db.session.query(Project).filter(Project.name == p).one() for c_name, l_name in categories.items(): n_c = db.session.query(Category).filter(Category.name == c_name).one() n_l = db.session.query(Label).filter(Label.name == l_name).one() n_pc = ProjectLabel(project=n_p, category=n_c, label=n_l) db.session.add(n_pc) db.session.commit() def show_categories(): for c in db.session.query(Category).all(): print(c.name + ": ", ",".join([l.name for l in c.categorized_labels]))