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.
 
 
 
 

61 lines
1.8 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,
ClassLevelProgression,
EquipmentArmour,
EquipmentRangedWeapon,
EquipmentMeleeWeapon,
Spell
)
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)
# Level Progressions
progressions = load_csv_data('default_progression.csv', ClassLevelProgression)
classes = {c.name: c.id for c in CharacterClass.query.all()}
for prog in progressions:
prog.guild_id = classes[prog.guild_id]
db.session.bulk_save_objects(progressions)
# Spells
spells = load_csv_data('default_spells.csv', Spell)
for spell in spells:
if spell.arcane == '':
spell.arcane = 0
if spell.divine == '':
spell.divine = 0
spell.description = spell.description.strip()
db.session.bulk_save_objects(spells)
db.session.commit()