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