예제 #1
0
def load_pokemon_abilities_from_api(name):
    request = requests.get(f'https://pokeapi.co/api/v2/pokemon/{name}')
    pokemon_data = request.json()

    pokemon = get_pokemon_by_name(name)
    PokemonAbilities.delete().where(
        PokemonAbilities.pokemon == pokemon).execute()

    abilities = []
    for api_ability in pokemon_data['abilities']:
        ability_name = api_ability['ability']['name']

        ability = Ability.get_or_none(name=ability_name)
        if ability is None:
            ability = Ability.create(name=ability_name,
                                     url=api_ability['ability']['url'])

        pokemon_ability = PokemonAbilities.create(
            pokemon=pokemon,
            ability=ability,
            is_hidden=api_ability['is_hidden'],
            slot=api_ability['slot'])

        abilities.append(pokemon_ability)

    return abilities
예제 #2
0
def search_pokemons(query, type=None, ability=None, limit=None):
    query = query.lower()
    pokemons = Pokemon.select().where(Pokemon.name.contains(query))

    if ability is not None:
        filtered_pokemons = []
        for pokemon in pokemons:
            abilities = []
            pokemons_abilities_of_this_pokemon = PokemonAbilities.select(
            ).where(PokemonAbilities.pokemon ==
                    pokemon)  # possibility to limit here?
            for pokemon_ability in pokemons_abilities_of_this_pokemon:
                ability_name = pokemon_ability.ability.name
                abilities.append(ability_name)
            if ability in abilities:
                filtered_pokemons.append(pokemon)
        return filtered_pokemons

    if type is not None:
        filtered_pokemons = []
        for pokemon in pokemons:
            # types = [t.type.name for t in pokemon.types]
            types = []
            pokemontypes_of_this_pokemon = PokemonTypes.select().where(
                PokemonTypes.pokemon == pokemon)
            for pokemontype in pokemontypes_of_this_pokemon:
                type_name = pokemontype.type.name
                types.append(type_name)

            if type in types:
                filtered_pokemons.append(pokemon)
        return filtered_pokemons[0:10]

    return pokemons
예제 #3
0
def get_pokemons_from_ability(ability_id):
    pokemons = []
    pokemon_abilities = PokemonAbilities.select(
        PokemonAbilities,
        Pokemon).join(Pokemon).where(PokemonAbilities.ability == ability_id)
    for pokemon_ability in pokemon_abilities:
        pokemons.append(pokemon_ability.pokemon)
    return pokemons
예제 #4
0
def search_pokemons(query, ability_query=None, type_query=None):
    query = query.lower()
    if query is 'all':
        pokemons = Pokemon.select()
    else:
        pokemons = Pokemon.select().where(Pokemon.name.contains(query))

    if type_query is not None:
        filtered_pokemons = []
        for pokemon in pokemons:
            # types = [t.type.name for t in pokemon.types]
            types = []
            pokemontypes_de_ce_pokemon = PokemonTypes.select().where(PokemonTypes.pokemon == pokemon)
            for pokemontype in pokemontypes_de_ce_pokemon:
                type_name = pokemontype.type.name
                types.append(type_name)

            if type_query in types:
                filtered_pokemons.append(pokemon)
        pokemons = filtered_pokemons

    if ability_query is not None:
        filtered_pokemons = []
        for pokemon in pokemons:
            # types = [t.type.name for t in pokemon.types]
            abilities = []
            pokemonabilities_de_ce_pokemon = PokemonAbilities.select().where(PokemonAbilities.pokemon == pokemon)
            for pokemonability in pokemonabilities_de_ce_pokemon:
                ability_name = pokemonability.ability.name
                abilities.append(ability_name)

            if ability_query in abilities:
                filtered_pokemons.append(pokemon)
        pokemons = filtered_pokemons

    return pokemons[:10]
예제 #5
0
def get_abilities_of_pokemons(pokemon):
    abilities = PokemonAbilities.select().where(
        PokemonAbilities.pokemon == pokemon)
    return abilities