Skip to content

Commit 7af36d9

Browse files
authored
Merge pull request #1629 from MiquelRForgeFlow/master-add-form-flavor_text
feat: add pokemon_form_flavor_text (per-form flavor text)
2 parents fafe59e + 43baa06 commit 7af36d9

8 files changed

Lines changed: 158 additions & 0 deletions

File tree

‎data/v2/build.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1949,6 +1949,20 @@ def csv_record_to_objects(info):
19491949

19501950
build_generic((PokemonFormCondition,), "pokemon_form_conditions.csv", csv_record_to_objects)
19511951

1952+
def csv_record_to_objects(info):
1953+
yield PokemonFormFlavorText(
1954+
pokemon_form_id=int(info[0]),
1955+
version_id=int(info[1]),
1956+
language_id=int(info[2]),
1957+
flavor_text=info[3],
1958+
)
1959+
1960+
build_generic(
1961+
(PokemonFormFlavorText,),
1962+
"pokemon_form_flavor_text.csv",
1963+
csv_record_to_objects,
1964+
)
1965+
19521966
def csv_record_to_objects(info):
19531967
yield PokemonGameIndex(pokemon_id=int(info[0]), version_id=int(info[1]), game_index=int(info[2]))
19541968

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
pokemon_form_id,version_id,language_id,flavor_text
2+
386,7,9,"The DNA of a space virus underwent a
3+
sudden mutation upon exposure to a
4+
laser beam and resulted in DEOXYS. The crystalline organ on this POKéMON’s
5+
chest appears to be its brain."
6+
386,8,9,"DEOXYS emerged from a virus that came
7+
from space. It is highly intelligent and
8+
wields psychokinetic powers. This POKéMON shoots lasers from the
9+
crystalline organ on its chest."
10+
10031,10,9,"This DEOXYS has transformed into its
11+
aggressive guise. It can fool enemies by
12+
altering its appearance."
13+
10032,11,9,"When it changes form, an aurora appears.
14+
It absorbs attacks by altering its
15+
cellular structure."
16+
10033,9,9,"A POKéMON that mutated from an
17+
extraterrestrial virus exposed to a laser
18+
beam. Its body is configured for superior
19+
agility and speed."
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
table:
2+
name: pokemon_v2_pokemonformflavortext
3+
schema: public
4+
configuration:
5+
column_config: {}
6+
custom_column_names: {}
7+
custom_name: pokemonformflavortext
8+
custom_root_fields: {}
9+
object_relationships:
10+
- name: language
11+
using:
12+
foreign_key_constraint_on: language_id
13+
- name: pokemonform
14+
using:
15+
foreign_key_constraint_on: pokemon_form_id
16+
- name: version
17+
using:
18+
foreign_key_constraint_on: version_id
19+
select_permissions:
20+
- role: anon
21+
permission:
22+
columns: '*'
23+
filter: {}
24+
limit: 100000
25+
allow_aggregations: true
26+
query_root_fields:
27+
- select
28+
- select_aggregate
29+
subscription_root_fields: []

‎graphql/v1beta2/metadata/databases/default/tables/tables.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
- "!include public_pokemon_v2_pokemonevolution.yaml"
120120
- "!include public_pokemon_v2_pokemonform.yaml"
121121
- "!include public_pokemon_v2_pokemonformcondition.yaml"
122+
- "!include public_pokemon_v2_pokemonformflavortext.yaml"
122123
- "!include public_pokemon_v2_pokemonformgeneration.yaml"
123124
- "!include public_pokemon_v2_pokemonformname.yaml"
124125
- "!include public_pokemon_v2_pokemonformsprites.yaml"

‎openapi.yml‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7355,7 +7355,13 @@ components:
73557355
items:
73567356
$ref: '#/components/schemas/PokemonFormTriggerCondition'
73577357
readOnly: true
7358+
flavor_text_entries:
7359+
type: array
7360+
items:
7361+
$ref: '#/components/schemas/PokemonFormFlavorText'
7362+
readOnly: true
73587363
required:
7364+
- flavor_text_entries
73597365
- form_name
73607366
- form_names
73617367
- id
@@ -7366,6 +7372,19 @@ components:
73667372
- trigger_conditions
73677373
- types
73687374
- version_group
7375+
PokemonFormFlavorText:
7376+
type: object
7377+
properties:
7378+
flavor_text:
7379+
type: string
7380+
language:
7381+
$ref: '#/components/schemas/LanguageSummary'
7382+
version:
7383+
$ref: '#/components/schemas/VersionSummary'
7384+
required:
7385+
- flavor_text
7386+
- language
7387+
- version
73697388
PokemonFormName:
73707389
type: object
73717390
properties:
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import django.db.models.deletion
2+
from django.db import migrations, models
3+
4+
5+
class Migration(migrations.Migration):
6+
dependencies = [
7+
("pokemon_v2", "0034_item_cost_and_time_of_day"),
8+
]
9+
10+
operations = [
11+
migrations.CreateModel(
12+
name="PokemonFormFlavorText",
13+
fields=[
14+
(
15+
"id",
16+
models.AutoField(
17+
auto_created=True,
18+
primary_key=True,
19+
serialize=False,
20+
verbose_name="ID",
21+
),
22+
),
23+
("flavor_text", models.CharField(max_length=500)),
24+
(
25+
"language",
26+
models.ForeignKey(
27+
blank=True,
28+
null=True,
29+
on_delete=django.db.models.deletion.CASCADE,
30+
related_name="%(class)s_language",
31+
to="pokemon_v2.language",
32+
),
33+
),
34+
(
35+
"pokemon_form",
36+
models.ForeignKey(
37+
blank=True,
38+
null=True,
39+
on_delete=django.db.models.deletion.CASCADE,
40+
related_name="%(class)s",
41+
to="pokemon_v2.pokemonform",
42+
),
43+
),
44+
(
45+
"version",
46+
models.ForeignKey(
47+
blank=True,
48+
null=True,
49+
on_delete=django.db.models.deletion.CASCADE,
50+
related_name="%(class)s",
51+
to="pokemon_v2.version",
52+
),
53+
),
54+
],
55+
options={
56+
"abstract": False,
57+
},
58+
),
59+
]

‎pokemon_v2/models.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@
186186
"PokemonEvolution",
187187
"PokemonForm",
188188
"PokemonFormCondition",
189+
"PokemonFormFlavorText",
189190
"PokemonFormGeneration",
190191
"PokemonFormName",
191192
"PokemonFormSprites",
@@ -1849,6 +1850,10 @@ class PokemonSpeciesFlavorText(IsFlavorText, HasPokemonSpecies, HasVersion):
18491850
pass
18501851

18511852

1853+
class PokemonFormFlavorText(IsFlavorText, HasPokemonForm, HasVersion):
1854+
pass
1855+
1856+
18521857
class Pokemon(HasName, HasPokemonSpecies, HasOrder):
18531858
height = models.IntegerField(blank=True, null=True)
18541859

‎pokemon_v2/serializers.py‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2573,6 +2573,16 @@ class Meta:
25732573
fields = ("awesome_name", "language")
25742574

25752575

2576+
class PokemonFormFlavorTextSerializer(serializers.ModelSerializer[PokemonFormFlavorText]):
2577+
flavor_text = serializers.CharField()
2578+
language = LanguageSummarySerializer()
2579+
version = VersionSummarySerializer()
2580+
2581+
class Meta:
2582+
model = PokemonFormFlavorText
2583+
fields = ("flavor_text", "language", "version")
2584+
2585+
25762586
class PokemonFormDetailSerializer(serializers.ModelSerializer[PokemonForm]):
25772587
pokemon = PokemonSummarySerializer()
25782588
version_group = VersionGroupSummarySerializer()
@@ -2581,6 +2591,7 @@ class PokemonFormDetailSerializer(serializers.ModelSerializer[PokemonForm]):
25812591
names = serializers.SerializerMethodField("get_pokemon_form_pokemon_names")
25822592
types = serializers.SerializerMethodField("get_pokemon_form_types")
25832593
trigger_conditions = serializers.SerializerMethodField("get_pokemon_form_triggers_conditions")
2594+
flavor_text_entries = PokemonFormFlavorTextSerializer(many=True, read_only=True, source="pokemonformflavortext")
25842595

25852596
class Meta:
25862597
model = PokemonForm
@@ -2600,6 +2611,7 @@ class Meta:
26002611
"names",
26012612
"types",
26022613
"trigger_conditions",
2614+
"flavor_text_entries",
26032615
)
26042616

26052617
@extend_schema_field(PokemonFormNameSerializer(many=True))

0 commit comments

Comments
 (0)