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