You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

42 lines
1.1 KiB

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()