feat: Add showdown field to pokemon api resource

This commit is contained in:
FallenDeity 2023-12-16 09:56:19 +05:30
parent f9225dc825
commit 545e1a0826
2 changed files with 65 additions and 1 deletions

View file

@ -1388,6 +1388,7 @@ def _build_pokemons():
dream_world = "other/dream-world/"
home = "other/home/"
official_art = "other/official-artwork/"
showdown = "other/showdown/"
gen_i = "versions/generation-i/"
gen_ii = "versions/generation-ii/"
gen_iii = "versions/generation-iii/"
@ -1438,6 +1439,32 @@ def _build_pokemons():
poke_sprites + official_art + "shiny/", info, "png"
),
},
"showdown": {
"front_default": try_image_names(
poke_sprites + showdown, info, "gif"
),
"front_shiny": try_image_names(
poke_sprites + showdown + "shiny/", info, "gif"
),
"front_female": try_image_names(
poke_sprites + showdown + "female/", info, "gif"
),
"front_shiny_female": try_image_names(
poke_sprites + showdown + "shiny/female/", info, "gif"
),
"back_default": try_image_names(
poke_sprites + showdown + "back/", info, "gif"
),
"back_shiny": try_image_names(
poke_sprites + showdown + "back/shiny/", info, "gif"
),
"back_female": try_image_names(
poke_sprites + showdown + "back/female/", info, "gif"
),
"back_shiny_female": try_image_names(
poke_sprites + showdown + "back/shiny/female", info, "gif"
),
},
},
"versions": {
"generation-i": {

View file

@ -1675,6 +1675,32 @@ class APIData:
back_shiny_female=False,
):
sprite_path = "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/%s.png"
showdown_path = "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/showdown/%s.png"
showdown = {
"front_default": showdown_path % pokemon.id if front_default else None,
"front_female": showdown_path % f"female/{pokemon.id}"
if front_female
else None,
"front_shiny": showdown_path % f"shiny/{pokemon.id}"
if front_shiny
else None,
"front_shiny_female": showdown_path % f"shiny/female/{pokemon.id}"
if front_shiny_female
else None,
"back_default": showdown_path % f"back/{pokemon.id}"
if back_default
else None,
"back_female": showdown_path % f"back/female/{pokemon.id}"
if back_female
else None,
"back_shiny": showdown_path % f"back/shiny/{pokemon.id}"
if back_shiny
else None,
"back_shiny_female": showdown_path % f"back/shiny/female/{pokemon.id}"
if back_shiny_female
else None,
}
sprites = {
"front_default": sprite_path % pokemon.id if front_default else None,
@ -1692,7 +1718,8 @@ class APIData:
}
pokemon_sprites = PokemonSprites.objects.create(
pokemon=pokemon, sprites=json.dumps(sprites)
pokemon=pokemon,
sprites=json.dumps(sprites | {"other": {"showdown": showdown}}),
)
pokemon_sprites.save()
@ -5025,6 +5052,7 @@ class APITests(APIData, APITestCase):
)
sprites_data = json.loads(pokemon_sprites.sprites)
response_sprites_data = json.loads(response.data["sprites"])
# sprite params
self.assertEqual(
@ -5033,6 +5061,15 @@ class APITests(APIData, APITestCase):
)
self.assertEqual(sprites_data["back_default"], None)
self.assertEqual(
sprites_data["other"]["showdown"]["front_default"],
response_sprites_data["other"]["showdown"]["front_default"],
)
self.assertEqual(
sprites_data["other"]["showdown"]["back_default"],
response_sprites_data["other"]["showdown"]["back_default"],
)
def test_pokemon_form_api(self):
pokemon_species = self.setup_pokemon_species_data()
pokemon = self.setup_pokemon_data(pokemon_species=pokemon_species)