import click from flask.cli import AppGroup from ..models import db npc_cli = AppGroup('npc') @npc_cli.command('populate') def populate_npc_database(): import csv from .models import ( CharacterClass, EquipmentArmour, EquipmentRangedWeapon, EquipmentMeleeWeapon ) def load_csv_data(file_name, cls): rows = [] with open('acks/npc/data/{}'.format(file_name), newline='') as data: reader = csv.DictReader(data) for row in reader: rows.append(cls(**row)) return rows # Character Classes db.session.bulk_save_objects(load_csv_data('default_classes.csv', CharacterClass)) # Equipment Armour db.session.bulk_save_objects(load_csv_data('default_armours.csv', EquipmentArmour)) # Ranged Weapons db.session.bulk_save_objects(load_csv_data('default_ranged.csv', EquipmentRangedWeapon)) # Melee Weapons melee_weps = load_csv_data('default_melee.csv', EquipmentMeleeWeapon) for wep in melee_weps: wep.two_handed = (wep.two_handed == 'True') db.session.bulk_save_objects(melee_weps) db.session.commit()