def create_item(db_session, record): print("Loading item types...") item_types = {} with open(os.path.join(app_root, "app/database/data/item_types.json"), "r") as file: data = json.load(file) for item_type_record in data: item_type = (db_session.query(ModelItemTypeTranslation).filter_by( locale="en", name=item_type_record["en"]).one().item_type) item_types[item_type_record["en"]] = item_type item = ModelItem( dofus_db_id=record["dofusID"], item_type_id=item_types[record["itemType"]].uuid, level=record["level"], image_url=record["imageUrl"], ) if "conditions" in record: conditions = { "conditions": record["conditions"].get("conditions", {}), "customConditions": record["conditions"].get("customConditions", {}), } item.conditions = conditions db_session.add(item) db_session.flush() for locale in record["name"]: item_translations = ModelItemTranslation( item_id=item.uuid, locale=locale, name=record["name"][locale], ) db_session.add(item_translations) create_item_stats(db_session, record, item) create_weapon_stat(db_session, record, item)
def create_item(db_session, record): item_types = {} with open(os.path.join(app_root, "app/database/data/item_types.json"), "r") as file: data = json.load(file) for item_type_record in data: item_type = (db_session.query(ModelItemTypeTranslation).filter_by( locale="en", name=item_type_record["en"]).one().item_type) item_types[item_type_record["en"]] = item_type if record["itemType"] == "Living object": return False item = ModelItem( dofus_db_id=record["dofusID"], item_type_id=item_types[record["itemType"]].uuid, level=record["level"], image_url=record["imageUrl"], ) if record.get("setID", None): set = (db_session.query(ModelSet).filter( ModelSet.dofus_db_id == record["setID"]).one()) set.items.append(item) if "conditions" in record: conditions = { "conditions": record["conditions"].get("conditions", {}), "customConditions": record["conditions"].get("customConditions", {}), } item.conditions = conditions db_session.add(item) db_session.flush() for locale in record["name"]: if record["name"][locale] == None: continue item_translations = ModelItemTranslation( item_id=item.uuid, locale=locale, name=record["name"][locale], ) db_session.add(item_translations) create_item_stats(db_session, record, item) create_weapon_stat(db_session, record, item) return True
def add_mounts(): print("Adding mounts to database") with open(os.path.join(app_root, "app/database/data/mounts.json"), "r") as file: data = json.load(file) for record in data: item = ModelItem( dofus_db_id=record["dofusID"], item_type=item_types[record["itemType"]], level=record["level"], image_url=record["imageUrl"], ) for locale in record["name"]: item_translations = ModelItemTranslation( item_id=item.uuid, locale=locale, name=record["name"][locale], ) db.session.add(item_translations) item.item_translations.append(item_translations) try: i = 0 for stat in record["stats"]: item_stat = ModelItemStat( stat=to_stat_enum[stat["stat"]], min_value=stat["minStat"], max_value=stat["maxStat"], order=i, ) db.session.add(item_stat) item.stats.append(item_stat) i = i + 1 db.session.add(item) except KeyError as err: print("KeyError occurred:", err) db.session.commit() with open(os.path.join(app_root, "app/database/data/rhineetles.json"), "r") as file: data = json.load(file) for record in data: item = ModelItem( dofus_db_id=record["dofusID"], item_type=item_types[record["itemType"]], level=record["level"], image_url=record["imageUrl"], ) for locale in record["name"]: item_translations = ModelItemTranslation( item_id=item.uuid, locale=locale, name=record["name"][locale], ) db.session.add(item_translations) item.item_translations.append(item_translations) try: i = 0 for stat in record["stats"]: item_stat = ModelItemStat( stat=to_stat_enum[stat["stat"]], min_value=stat["minStat"], max_value=stat["maxStat"], order=i, ) db.session.add(item_stat) item.stats.append(item_stat) i = i + 1 db.session.add(item) except KeyError as err: print("KeyError occurred:", err) db.session.commit()
db.session.add(bonus_obj) set_obj.bonuses.append(bonus_obj) db.session.commit() print("Adding items to database") with open(os.path.join(app_root, "app/database/data/items.json"), "r") as file: data = json.load(file) for record in data: if record["itemType"] == "Living object": continue item = ModelItem( dofus_db_id=record["dofusID"], item_type=item_types[record["itemType"]], level=record["level"], image_url=record["imageUrl"], ) db.session.add(item) conditions = { "conditions": record["conditions"].get("conditions", None), "customConditions": record["conditions"].get("customConditions", None), } item.conditions = conditions for locale in record["name"]: if record["name"][locale] == None: continue
def add_pets(): print("Adding pets to database") with open(os.path.join(app_root, "app/database/data/pets.json"), "r") as file: data = json.load(file) for record in data: item = ModelItem( dofus_db_id=record["dofusID"], item_type=item_types[record["itemType"]], level=record["level"], image_url=record["imageUrl"], ) db.session.add(item) conditions = { "conditions": record["conditions"]["conditions"], "customConditions": record["conditions"]["customConditions"], } item.conditions = conditions for locale in record["name"]: item_translations = ModelItemTranslation( item_id=item.uuid, locale=locale, name=record["name"][locale], ) db.session.add(item_translations) item.item_translations.append(item_translations) try: i = 0 for stat in record["stats"]: item_stat = ModelItemStat( stat=to_stat_enum[stat["stat"]], min_value=stat["minStat"], max_value=stat["maxStat"], order=i, ) db.session.add(item_stat) item.stats.append(item_stat) i = i + 1 if record["customStats"] != {} and record["customStats"] != []: num_of_stats = len(record["customStats"]["en"]) for j in range(num_of_stats): item_stat = ModelItemStat(order=i) for locale in record["customStats"]: custom_stat = record["customStats"][locale][j] stat_translation = ModelItemStatTranslation( item_stat_id=item_stat.uuid, locale=locale, custom_stat=custom_stat, ) db.session.add(stat_translation) item_stat.item_stat_translation.append(stat_translation) db.session.add(item_stat) item.stats.append(item_stat) i = i + 1 # If this item belongs in a set, query the set and add the relationship to the record if record["setID"]: set = record["setID"] set_record = ( db.session.query(ModelSet) .filter(ModelSet.dofus_db_id == set) .first() ) set_record.items.append(item) db.session.merge(set_record) except KeyError as err: print("KeyError occurred:", err) db.session.commit()