Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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()
Exemple #4
0
                    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
Exemple #5
0
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()