mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Pokemon species split: Schema changes
This commit is contained in:
parent
be3e224cad
commit
280c90b966
1 changed files with 117 additions and 156 deletions
|
@ -409,8 +409,6 @@ class EvolutionChain(TableBase):
|
||||||
__tablename__ = 'evolution_chains'
|
__tablename__ = 'evolution_chains'
|
||||||
id = Column(Integer, primary_key=True, nullable=False,
|
id = Column(Integer, primary_key=True, nullable=False,
|
||||||
info=dict(description="A numeric ID"))
|
info=dict(description="A numeric ID"))
|
||||||
growth_rate_id = Column(Integer, ForeignKey('growth_rates.id'), nullable=False,
|
|
||||||
info=dict(description="ID of the growth rate for this family"))
|
|
||||||
baby_trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
|
baby_trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
|
||||||
info=dict(description="Item that a parent must hold while breeding to produce a baby"))
|
info=dict(description="Item that a parent must hold while breeding to produce a baby"))
|
||||||
|
|
||||||
|
@ -1058,46 +1056,22 @@ create_translation_table('pokedex_prose', Pokedex, 'prose',
|
||||||
)
|
)
|
||||||
|
|
||||||
class Pokemon(TableBase):
|
class Pokemon(TableBase):
|
||||||
u"""A species of Pokémon. The core to this whole mess.
|
u"""A Pokémon. The core to this whole mess.
|
||||||
"""
|
"""
|
||||||
__tablename__ = 'pokemon'
|
__tablename__ = 'pokemon'
|
||||||
__singlename__ = 'pokemon'
|
__singlename__ = 'pokemon'
|
||||||
id = Column(Integer, primary_key=True, nullable=False,
|
id = Column(Integer, primary_key=True, nullable=False,
|
||||||
info=dict(description=u"A numeric ID"))
|
info=dict(description=u"A numeric ID"))
|
||||||
identifier = Column(Unicode(20), nullable=False,
|
species_id = Column(Integer, ForeignKey('pokemon_species.id'),
|
||||||
info=dict(description=u"An identifier", format='identifier'))
|
info=dict(description=u"ID of the species this Pokémon belongs to"))
|
||||||
generation_id = Column(Integer, ForeignKey('generations.id'),
|
|
||||||
info=dict(description=u"ID of the generation this species first appeared in"))
|
|
||||||
evolution_chain_id = Column(Integer, ForeignKey('evolution_chains.id'),
|
|
||||||
info=dict(description=u"ID of the species' evolution chain (a.k.a. family)"))
|
|
||||||
evolves_from_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
|
|
||||||
info=dict(description=u"The Pokémon species from which this one evolves"))
|
|
||||||
height = Column(Integer, nullable=False,
|
height = Column(Integer, nullable=False,
|
||||||
info=dict(description=u"The height of the Pokémon, in decimeters (tenths of a meter)"))
|
info=dict(description=u"The height of the Pokémon, in decimeters (tenths of a meter)"))
|
||||||
weight = Column(Integer, nullable=False,
|
weight = Column(Integer, nullable=False,
|
||||||
info=dict(description=u"The weight of the Pokémon, in tenths of a kilogram (decigrams)"))
|
info=dict(description=u"The weight of the Pokémon, in tenths of a kilogram (decigrams)"))
|
||||||
color_id = Column(Integer, ForeignKey('pokemon_colors.id'), nullable=False,
|
|
||||||
info=dict(description=u"ID of this Pokémon's Pokédex color, as used for a gimmick search function in the games."))
|
|
||||||
pokemon_shape_id = Column(Integer, ForeignKey('pokemon_shapes.id'), nullable=False,
|
|
||||||
info=dict(description=u"ID of this Pokémon's body shape, as used for a gimmick search function in the games."))
|
|
||||||
habitat_id = Column(Integer, ForeignKey('pokemon_habitats.id'), nullable=True,
|
|
||||||
info=dict(description=u"ID of this Pokémon's habitat, as used for a gimmick search function in the games."))
|
|
||||||
gender_rate = Column(Integer, nullable=False,
|
|
||||||
info=dict(description=u"The chance of this Pokémon being female, in eighths; or -1 for genderless"))
|
|
||||||
capture_rate = Column(Integer, nullable=False,
|
|
||||||
info=dict(description=u"The base capture rate; up to 255"))
|
|
||||||
base_experience = Column(Integer, nullable=False,
|
base_experience = Column(Integer, nullable=False,
|
||||||
info=dict(description=u"The base EXP gained when defeating this Pokémon")) # XXX: Is this correct?
|
info=dict(description=u"The base EXP gained when defeating this Pokémon")) # XXX: Is this correct?
|
||||||
base_happiness = Column(Integer, nullable=False,
|
|
||||||
info=dict(description=u"The tameness when caught by a normal ball"))
|
|
||||||
is_baby = Column(Boolean, nullable=False,
|
|
||||||
info=dict(description=u"True iff the Pokémon is a baby, i.e. a lowest-stage Pokémon that cannot breed but whose evolved form can."))
|
|
||||||
hatch_counter = Column(Integer, nullable=False,
|
|
||||||
info=dict(description=u"Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon's egg hatches, unless utilizing bonuses like Flame Body's"))
|
|
||||||
has_gender_differences = Column(Boolean, nullable=False,
|
|
||||||
info=dict(description=u"Set iff the species exhibits enough sexual dimorphism to have separate sets of sprites in Gen IV and beyond."))
|
|
||||||
order = Column(Integer, nullable=False, index=True,
|
order = Column(Integer, nullable=False, index=True,
|
||||||
info=dict(description=u"Order for sorting. Almost national order, except families and forms are grouped together."))
|
info=dict(description=u"Order for sorting. Almost national order, except families are grouped together."))
|
||||||
|
|
||||||
### Stuff to handle alternate Pokémon forms
|
### Stuff to handle alternate Pokémon forms
|
||||||
|
|
||||||
|
@ -1175,19 +1149,6 @@ class Pokemon(TableBase):
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
create_translation_table('pokemon_names', Pokemon, 'names',
|
|
||||||
relation_lazy='joined',
|
|
||||||
name = Column(Unicode(20), nullable=True, index=True,
|
|
||||||
info=dict(description="The name", format='plaintext', official=True, ripped=True)),
|
|
||||||
species = Column(Unicode(16), nullable=True,
|
|
||||||
info=dict(description=u'The short flavor text, such as "Seed" or "Lizard"; usually affixed with the word "Pokémon"',
|
|
||||||
official=True, format='plaintext')),
|
|
||||||
)
|
|
||||||
create_translation_table('pokemon_flavor_summaries', Pokemon, 'flavor_summaries',
|
|
||||||
flavor_summary = Column(Unicode(512), nullable=True,
|
|
||||||
info=dict(description=u"Text containing facts from all flavor texts, for languages without official game translations", official=False, format='plaintext', ripped=True)),
|
|
||||||
)
|
|
||||||
|
|
||||||
class PokemonAbility(TableBase):
|
class PokemonAbility(TableBase):
|
||||||
u"""Maps an ability to a Pokémon that can have it
|
u"""Maps an ability to a Pokémon that can have it
|
||||||
"""
|
"""
|
||||||
|
@ -1221,22 +1182,22 @@ create_translation_table('pokemon_color_names', PokemonColor, 'names',
|
||||||
)
|
)
|
||||||
|
|
||||||
class PokemonDexNumber(TableBase):
|
class PokemonDexNumber(TableBase):
|
||||||
u"""The number of a Pokémon in a particular Pokédex (e.g. Jigglypuff is #138 in Hoenn's 'dex)
|
u"""The number of a species in a particular Pokédex (e.g. Jigglypuff is #138 in Hoenn's 'dex)
|
||||||
"""
|
"""
|
||||||
__tablename__ = 'pokemon_dex_numbers'
|
__tablename__ = 'pokemon_dex_numbers'
|
||||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
|
species_id = Column(Integer, ForeignKey('pokemon_species.id'), primary_key=True, nullable=False, autoincrement=False,
|
||||||
info=dict(description=u"ID of the Pokémon"))
|
info=dict(description=u"ID of the species"))
|
||||||
pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), primary_key=True, nullable=False, autoincrement=False,
|
pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), primary_key=True, nullable=False, autoincrement=False,
|
||||||
info=dict(description=u"ID of the Pokédex"))
|
info=dict(description=u"ID of the Pokédex"))
|
||||||
pokedex_number = Column(Integer, nullable=False,
|
pokedex_number = Column(Integer, nullable=False,
|
||||||
info=dict(description=u"Number of the Pokémon in that the Pokédex"))
|
info=dict(description=u"Number of the Pokémon in that the Pokédex"))
|
||||||
|
|
||||||
class PokemonEggGroup(TableBase):
|
class PokemonEggGroup(TableBase):
|
||||||
u"""Maps an Egg group to a Pokémon; each Pokémon belongs to one or two egg groups
|
u"""Maps an Egg group to a species; each species belongs to one or two egg groups
|
||||||
"""
|
"""
|
||||||
__tablename__ = 'pokemon_egg_groups'
|
__tablename__ = 'pokemon_egg_groups'
|
||||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
|
species_id = Column(Integer, ForeignKey('pokemon_species.id'), primary_key=True, nullable=False, autoincrement=False,
|
||||||
info=dict(description=u"ID of the Pokémon"))
|
info=dict(description=u"ID of the species"))
|
||||||
egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False, autoincrement=False,
|
egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False, autoincrement=False,
|
||||||
info=dict(description=u"ID of the egg group"))
|
info=dict(description=u"ID of the egg group"))
|
||||||
|
|
||||||
|
@ -1249,8 +1210,8 @@ class PokemonEvolution(TableBase):
|
||||||
__tablename__ = 'pokemon_evolution'
|
__tablename__ = 'pokemon_evolution'
|
||||||
id = Column(Integer, primary_key=True, nullable=False,
|
id = Column(Integer, primary_key=True, nullable=False,
|
||||||
info=dict(description=u"A numeric ID"))
|
info=dict(description=u"A numeric ID"))
|
||||||
evolved_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False,
|
evolved_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=False,
|
||||||
info=dict(description=u"The ID of the post-evolution Pokémon."))
|
info=dict(description=u"The ID of the post-evolution species."))
|
||||||
evolution_trigger_id = Column(Integer, ForeignKey('evolution_triggers.id'), nullable=False,
|
evolution_trigger_id = Column(Integer, ForeignKey('evolution_triggers.id'), nullable=False,
|
||||||
info=dict(description=u"The ID of the evolution trigger."))
|
info=dict(description=u"The ID of the evolution trigger."))
|
||||||
trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
|
trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
|
||||||
|
@ -1273,24 +1234,10 @@ class PokemonEvolution(TableBase):
|
||||||
info=dict(description=u"The minimum Beauty value the Pokémon must have."))
|
info=dict(description=u"The minimum Beauty value the Pokémon must have."))
|
||||||
relative_physical_stats = Column(Integer, nullable=True,
|
relative_physical_stats = Column(Integer, nullable=True,
|
||||||
info=dict(description=u"The required relation between the Pokémon's Attack and Defense stats, as sgn(atk-def)."))
|
info=dict(description=u"The required relation between the Pokémon's Attack and Defense stats, as sgn(atk-def)."))
|
||||||
party_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
|
party_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
|
||||||
info=dict(description=u"The ID of the Pokémon that must be present in the party."))
|
info=dict(description=u"The ID of the species that must be present in the party."))
|
||||||
trade_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
|
trade_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
|
||||||
info=dict(description=u"The ID of the Pokémon for which this Pokémon must be traded."))
|
info=dict(description=u"The ID of the species for which this one must be traded."))
|
||||||
|
|
||||||
class PokemonFlavorText(TableBase):
|
|
||||||
u"""In-game Pokédex descrption of a Pokémon.
|
|
||||||
"""
|
|
||||||
__tablename__ = 'pokemon_flavor_text'
|
|
||||||
summary_column = Pokemon.flavor_summaries_table, 'flavor_summary'
|
|
||||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
|
|
||||||
info=dict(description=u"ID of the Pokémon"))
|
|
||||||
version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False, autoincrement=False,
|
|
||||||
info=dict(description=u"ID of the version that has this flavor text"))
|
|
||||||
language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False,
|
|
||||||
info=dict(description="The language"))
|
|
||||||
flavor_text = Column(Unicode(255), nullable=False,
|
|
||||||
info=dict(description=u"The flavor text", official=True, format='gametext'))
|
|
||||||
|
|
||||||
class PokemonForm(TableBase):
|
class PokemonForm(TableBase):
|
||||||
u"""An individual form of a Pokémon.
|
u"""An individual form of a Pokémon.
|
||||||
|
@ -1302,63 +1249,29 @@ class PokemonForm(TableBase):
|
||||||
__singlename__ = 'pokemon_form'
|
__singlename__ = 'pokemon_form'
|
||||||
id = Column(Integer, primary_key=True, nullable=False,
|
id = Column(Integer, primary_key=True, nullable=False,
|
||||||
info=dict(description=u'A unique ID for this form.'))
|
info=dict(description=u'A unique ID for this form.'))
|
||||||
identifier = Column(Unicode(16), nullable=True,
|
form_identifier = Column(Unicode(16), nullable=True,
|
||||||
info=dict(description=u"An identifier", format='identifier'))
|
info=dict(description=u"An identifier of the form, uniue among a species", format='identifier'))
|
||||||
form_base_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False, autoincrement=False,
|
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False, autoincrement=False,
|
||||||
info=dict(description=u'The ID of the base Pokémon for this form.'))
|
info=dict(description=u'The ID of the base Pokémon for this form.'))
|
||||||
unique_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), autoincrement=False,
|
|
||||||
info=dict(description=u'The ID of a Pokémon that represents specifically this form, for Pokémon with functionally-different forms like Wormadam.'))
|
|
||||||
introduced_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), autoincrement=False,
|
introduced_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), autoincrement=False,
|
||||||
info=dict(description=u'The ID of the version group in which this form first appeared.'))
|
info=dict(description=u'The ID of the version group in which this form first appeared.'))
|
||||||
is_default = Column(Boolean, nullable=False,
|
is_default = Column(Boolean, nullable=False,
|
||||||
info=dict(description=u'Set for exactly one form used as the default for each species.'))
|
info=dict(description=u'Set for exactly one form used as the default for each species.'))
|
||||||
|
is_battle_only = Column(Boolean, nullable=False,
|
||||||
|
info=dict(description=u'Set iff the form can only appear in battle.'))
|
||||||
order = Column(Integer, nullable=False, autoincrement=False,
|
order = Column(Integer, nullable=False, autoincrement=False,
|
||||||
info=dict(description=u'The order in which forms should be sorted. Multiple forms may have equal order, in which case they should fall back on sorting by name.'))
|
info=dict(description=u'The order in which forms should be sorted. Multiple forms may have equal order, in which case they should fall back on sorting by name.'))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def full_name(self):
|
def name(self):
|
||||||
u"""Returns the full name of this form, e.g. "Plant Cloak"."""
|
return self.pokemon_name or self.species.name
|
||||||
|
|
||||||
if not self.name:
|
|
||||||
return None
|
|
||||||
elif self.form_group and self.form_group.term:
|
|
||||||
return u'%s %s' % (self.name, self.form_group.term)
|
|
||||||
else:
|
|
||||||
return self.name
|
|
||||||
|
|
||||||
@property
|
|
||||||
def pokemon_name(self):
|
|
||||||
u"""Returns the name of this Pokémon with this form, e.g. "Plant
|
|
||||||
Burmy".
|
|
||||||
"""
|
|
||||||
|
|
||||||
if self.name:
|
|
||||||
return u'%s %s' % (self.name, self.form_base_pokemon.name)
|
|
||||||
else:
|
|
||||||
return self.form_base_pokemon.name
|
|
||||||
|
|
||||||
create_translation_table('pokemon_form_names', PokemonForm, 'names',
|
create_translation_table('pokemon_form_names', PokemonForm, 'names',
|
||||||
relation_lazy='joined',
|
relation_lazy='joined',
|
||||||
name = Column(Unicode(16), nullable=False, index=True,
|
form_name = Column(Unicode(32), nullable=False, index=True,
|
||||||
info=dict(description="The name", format='plaintext', official=True)),
|
info=dict(description=u"The full form name, e.g. 'Sky Forme', for pokémon with different forms", format='plaintext', official=True)),
|
||||||
)
|
pokemon_name = Column(Unicode(32), nullable=False, index=True,
|
||||||
|
info=dict(description=u"The full pokémon name, e.g. 'Sky Shaymin', for pokémon with different forms", format='plaintext', official=True)),
|
||||||
class PokemonFormGroup(TableBase):
|
|
||||||
u"""Information about a Pokémon's forms as a group."""
|
|
||||||
__tablename__ = 'pokemon_form_groups'
|
|
||||||
__singlename__ = 'pokemon_form_group'
|
|
||||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
|
|
||||||
info=dict(description=u"ID of the base form Pokémon"))
|
|
||||||
is_battle_only = Column(Boolean, nullable=False,
|
|
||||||
info=dict(description=u"Set iff the forms only change in battle"))
|
|
||||||
# FIXME remooove
|
|
||||||
PokemonFormGroup.id = PokemonFormGroup.pokemon_id
|
|
||||||
|
|
||||||
create_translation_table('pokemon_form_group_prose', PokemonFormGroup, 'prose',
|
|
||||||
term = Column(Unicode(16), nullable=True,
|
|
||||||
info=dict(description=u"The term for this Pokémon's forms, e.g. \"Cloak\" for Burmy or \"Forme\" for Deoxys.", official=True, format='plaintext')),
|
|
||||||
description = Column(Unicode(1024), nullable=True,
|
|
||||||
info=dict(description=u"Description of how the forms work", format='markdown', string_getter=markdown.MarkdownString)),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
class PokemonFormPokeathlonStat(TableBase):
|
class PokemonFormPokeathlonStat(TableBase):
|
||||||
|
@ -1473,6 +1386,75 @@ create_translation_table('pokemon_shape_prose', PokemonShape, 'prose',
|
||||||
info=dict(description=u"A splendiferous name of the body shape", format='plaintext')),
|
info=dict(description=u"A splendiferous name of the body shape", format='plaintext')),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class PokemonSpecies(TableBase):
|
||||||
|
u"""A Pokémon species: group of Pokémon with the same Pokédex number
|
||||||
|
"""
|
||||||
|
__tablename__ = 'pokemon_species'
|
||||||
|
__singlename__ = 'pokemon_species'
|
||||||
|
id = Column(Integer, primary_key=True, nullable=False,
|
||||||
|
info=dict(description=u"A numeric ID"))
|
||||||
|
identifier = Column(Unicode(20), nullable=False,
|
||||||
|
info=dict(description=u"An identifier", format='identifier'))
|
||||||
|
generation_id = Column(Integer, ForeignKey('generations.id'),
|
||||||
|
info=dict(description=u"ID of the generation this species first appeared in"))
|
||||||
|
evolves_from_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
|
||||||
|
info=dict(description=u"The species from which this one evolves"))
|
||||||
|
evolution_chain_id = Column(Integer, ForeignKey('evolution_chains.id'),
|
||||||
|
info=dict(description=u"ID of the species' evolution chain (a.k.a. family)"))
|
||||||
|
color_id = Column(Integer, ForeignKey('pokemon_colors.id'), nullable=False,
|
||||||
|
info=dict(description=u"ID of this Pokémon's Pokédex color, as used for a gimmick search function in the games."))
|
||||||
|
shape_id = Column(Integer, ForeignKey('pokemon_shapes.id'), nullable=False,
|
||||||
|
info=dict(description=u"ID of this Pokémon's body shape, as used for a gimmick search function in the games."))
|
||||||
|
habitat_id = Column(Integer, ForeignKey('pokemon_habitats.id'), nullable=True,
|
||||||
|
info=dict(description=u"ID of this Pokémon's habitat, as used for a gimmick search function in the games."))
|
||||||
|
gender_rate = Column(Integer, nullable=False,
|
||||||
|
info=dict(description=u"The chance of this Pokémon being female, in eighths; or -1 for genderless"))
|
||||||
|
capture_rate = Column(Integer, nullable=False,
|
||||||
|
info=dict(description=u"The base capture rate; up to 255"))
|
||||||
|
base_happiness = Column(Integer, nullable=False,
|
||||||
|
info=dict(description=u"The tameness when caught by a normal ball"))
|
||||||
|
is_baby = Column(Boolean, nullable=False,
|
||||||
|
info=dict(description=u"True iff the Pokémon is a baby, i.e. a lowest-stage Pokémon that cannot breed but whose evolved form can."))
|
||||||
|
hatch_counter = Column(Integer, nullable=False,
|
||||||
|
info=dict(description=u"Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon's egg hatches, unless utilizing bonuses like Flame Body's"))
|
||||||
|
has_gender_differences = Column(Boolean, nullable=False,
|
||||||
|
info=dict(description=u"Set iff the species exhibits enough sexual dimorphism to have separate sets of sprites in Gen IV and beyond."))
|
||||||
|
growth_rate_id = Column(Integer, ForeignKey('growth_rates.id'), nullable=False,
|
||||||
|
info=dict(description="ID of the growth rate for this family"))
|
||||||
|
forms_switchable = Column(Boolean, nullable=False,
|
||||||
|
info=dict(description=u"True iff a particular individual of this species can switch beween its different forms."))
|
||||||
|
|
||||||
|
create_translation_table('pokemon_species_names', PokemonSpecies, 'names',
|
||||||
|
relation_lazy='joined',
|
||||||
|
name = Column(Unicode(20), nullable=True, index=True,
|
||||||
|
info=dict(description="The name", format='plaintext', official=True, ripped=True)),
|
||||||
|
genus = Column(Unicode(16), nullable=True,
|
||||||
|
info=dict(description=u'The short flavor text, such as "Seed" or "Lizard"; usually affixed with the word "Pokémon"',
|
||||||
|
official=True, format='plaintext')),
|
||||||
|
)
|
||||||
|
create_translation_table('pokemon_species_flavor_summaries', PokemonSpecies, 'flavor_summaries',
|
||||||
|
flavor_summary = Column(Unicode(512), nullable=True,
|
||||||
|
info=dict(description=u"Text containing facts from all flavor texts, for languages without official game translations", official=False, format='plaintext', ripped=True)),
|
||||||
|
)
|
||||||
|
create_translation_table('pokemon_species_prose', PokemonSpecies, 'prose',
|
||||||
|
form_description = Column(Unicode(1024), nullable=True,
|
||||||
|
info=dict(description=u"Description of how the forms work", format='markdown', string_getter=markdown.MarkdownString)),
|
||||||
|
)
|
||||||
|
|
||||||
|
class PokemonSpeciesFlavorText(TableBase):
|
||||||
|
u"""In-game Pokédex descrption of a Pokémon.
|
||||||
|
"""
|
||||||
|
__tablename__ = 'pokemon_species_flavor_text'
|
||||||
|
summary_column = PokemonSpecies.flavor_summaries_table, 'flavor_summary'
|
||||||
|
species_id = Column(Integer, ForeignKey('pokemon_species.id'), primary_key=True, nullable=False, autoincrement=False,
|
||||||
|
info=dict(description=u"ID of the Pokémon"))
|
||||||
|
version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False, autoincrement=False,
|
||||||
|
info=dict(description=u"ID of the version that has this flavor text"))
|
||||||
|
language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False,
|
||||||
|
info=dict(description="The language"))
|
||||||
|
flavor_text = Column(Unicode(255), nullable=False,
|
||||||
|
info=dict(description=u"The flavor text", official=True, format='gametext'))
|
||||||
|
|
||||||
class PokemonStat(TableBase):
|
class PokemonStat(TableBase):
|
||||||
u"""A stat value of a Pokémon
|
u"""A stat value of a Pokémon
|
||||||
"""
|
"""
|
||||||
|
@ -1979,22 +1961,12 @@ Pokemon.egg_groups = relationship(EggGroup,
|
||||||
Pokemon.evolution_chain = relationship(EvolutionChain,
|
Pokemon.evolution_chain = relationship(EvolutionChain,
|
||||||
innerjoin=True,
|
innerjoin=True,
|
||||||
backref=backref('pokemon', order_by=Pokemon.order.asc()))
|
backref=backref('pokemon', order_by=Pokemon.order.asc()))
|
||||||
Pokemon.parent_pokemon = relationship(Pokemon,
|
|
||||||
primaryjoin=Pokemon.evolves_from_pokemon_id==Pokemon.id,
|
|
||||||
remote_side=[Pokemon.id],
|
|
||||||
backref='child_pokemon')
|
|
||||||
Pokemon.evolutions = relationship(PokemonEvolution,
|
|
||||||
primaryjoin=Pokemon.id==PokemonEvolution.evolved_pokemon_id,
|
|
||||||
backref=backref('evolved_pokemon', innerjoin=True, lazy='joined'))
|
|
||||||
Pokemon.flavor_text = relationship(PokemonFlavorText,
|
|
||||||
order_by=PokemonFlavorText.version_id.asc(),
|
|
||||||
backref='pokemon')
|
|
||||||
Pokemon.forms = relationship(PokemonForm,
|
Pokemon.forms = relationship(PokemonForm,
|
||||||
primaryjoin=Pokemon.id==PokemonForm.form_base_pokemon_id,
|
primaryjoin=Pokemon.id==PokemonForm.pokemon_id,
|
||||||
order_by=(PokemonForm.order.asc(), PokemonForm.identifier.asc()))
|
order_by=(PokemonForm.order.asc(), PokemonForm.form_identifier.asc()))
|
||||||
Pokemon.default_form = relationship(PokemonForm,
|
Pokemon.default_form = relationship(PokemonForm,
|
||||||
primaryjoin=and_(
|
primaryjoin=and_(
|
||||||
Pokemon.id==PokemonForm.form_base_pokemon_id,
|
Pokemon.id==PokemonForm.pokemon_id,
|
||||||
PokemonForm.is_default==True),
|
PokemonForm.is_default==True),
|
||||||
uselist=False)
|
uselist=False)
|
||||||
Pokemon.pokemon_habitat = relationship(PokemonHabitat,
|
Pokemon.pokemon_habitat = relationship(PokemonHabitat,
|
||||||
|
@ -2017,14 +1989,6 @@ Pokemon.types = relationship(Type,
|
||||||
innerjoin=True,
|
innerjoin=True,
|
||||||
order_by=PokemonType.slot.asc(),
|
order_by=PokemonType.slot.asc(),
|
||||||
backref=backref('pokemon', order_by=Pokemon.order))
|
backref=backref('pokemon', order_by=Pokemon.order))
|
||||||
Pokemon.form = relationship(PokemonForm,
|
|
||||||
primaryjoin=or_(
|
|
||||||
PokemonForm.unique_pokemon_id==Pokemon.id,
|
|
||||||
and_(PokemonForm.unique_pokemon_id==None,
|
|
||||||
PokemonForm.form_base_pokemon_id==Pokemon.id,
|
|
||||||
PokemonForm.is_default==True)
|
|
||||||
),
|
|
||||||
uselist=False)
|
|
||||||
|
|
||||||
PokemonDexNumber.pokedex = relationship(Pokedex,
|
PokemonDexNumber.pokedex = relationship(Pokedex,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
@ -2042,27 +2006,18 @@ PokemonEvolution.location = relationship(Location,
|
||||||
backref='triggered_evolutions')
|
backref='triggered_evolutions')
|
||||||
PokemonEvolution.known_move = relationship(Move,
|
PokemonEvolution.known_move = relationship(Move,
|
||||||
backref='triggered_evolutions')
|
backref='triggered_evolutions')
|
||||||
PokemonEvolution.party_pokemon = relationship(Pokemon,
|
PokemonEvolution.party_species = relationship(PokemonSpecies,
|
||||||
primaryjoin=PokemonEvolution.party_pokemon_id==Pokemon.id,
|
primaryjoin=PokemonEvolution.party_species_id==PokemonSpecies.id,
|
||||||
backref='triggered_evolutions')
|
backref='triggered_evolutions')
|
||||||
PokemonEvolution.trade_pokemon = relationship(Pokemon,
|
PokemonEvolution.trade_species = relationship(PokemonSpecies,
|
||||||
primaryjoin=PokemonEvolution.trade_pokemon_id==Pokemon.id)
|
primaryjoin=PokemonEvolution.trade_species_id==PokemonSpecies.id)
|
||||||
|
|
||||||
PokemonFlavorText.version = relationship(Version, innerjoin=True, lazy='joined')
|
PokemonSpeciesFlavorText.version = relationship(Version, innerjoin=True, lazy='joined')
|
||||||
PokemonFlavorText.language = relationship(Language, innerjoin=True, lazy='joined')
|
PokemonSpeciesFlavorText.language = relationship(Language, innerjoin=True, lazy='joined')
|
||||||
|
|
||||||
PokemonForm.form_base_pokemon = relationship(Pokemon,
|
|
||||||
primaryjoin=PokemonForm.form_base_pokemon_id==Pokemon.id,
|
|
||||||
innerjoin=True)
|
|
||||||
PokemonForm.unique_pokemon = relationship(Pokemon,
|
|
||||||
primaryjoin=PokemonForm.unique_pokemon_id==Pokemon.id,
|
|
||||||
backref=backref('unique_form', uselist=False))
|
|
||||||
PokemonForm.pokemon = relationship(Pokemon,
|
PokemonForm.pokemon = relationship(Pokemon,
|
||||||
primaryjoin=or_(
|
primaryjoin=PokemonForm.pokemon_id==Pokemon.id,
|
||||||
PokemonForm.unique_pokemon_id==Pokemon.id,
|
innerjoin=True)
|
||||||
and_(PokemonForm.unique_pokemon_id==None,
|
|
||||||
PokemonForm.form_base_pokemon_id==Pokemon.id)
|
|
||||||
), uselist=False)
|
|
||||||
PokemonForm.version_group = relationship(VersionGroup,
|
PokemonForm.version_group = relationship(VersionGroup,
|
||||||
innerjoin=True)
|
innerjoin=True)
|
||||||
PokemonForm.form_group = association_proxy('form_base_pokemon', 'form_group')
|
PokemonForm.form_group = association_proxy('form_base_pokemon', 'form_group')
|
||||||
|
@ -2070,10 +2025,6 @@ PokemonForm.pokeathlon_stats = relationship(PokemonFormPokeathlonStat,
|
||||||
order_by=PokemonFormPokeathlonStat.pokeathlon_stat_id,
|
order_by=PokemonFormPokeathlonStat.pokeathlon_stat_id,
|
||||||
backref='pokemon_form')
|
backref='pokemon_form')
|
||||||
|
|
||||||
PokemonFormGroup.pokemon = relationship(Pokemon,
|
|
||||||
innerjoin=True,
|
|
||||||
backref=backref('form_group', uselist=False))
|
|
||||||
|
|
||||||
PokemonFormPokeathlonStat.pokeathlon_stat = relationship(PokeathlonStat,
|
PokemonFormPokeathlonStat.pokeathlon_stat = relationship(PokeathlonStat,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
|
||||||
|
@ -2104,6 +2055,16 @@ PokemonMove.method = relationship(PokemonMoveMethod,
|
||||||
PokemonStat.stat = relationship(Stat,
|
PokemonStat.stat = relationship(Stat,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
|
||||||
|
PokemonSpecies.parent_pokemon = relationship(PokemonSpecies,
|
||||||
|
primaryjoin=PokemonSpecies.evolves_from_species_id==PokemonSpecies.id,
|
||||||
|
remote_side=[PokemonSpecies.id],
|
||||||
|
backref='child_species')
|
||||||
|
PokemonSpecies.evolutions = relationship(PokemonEvolution,
|
||||||
|
primaryjoin=PokemonSpecies.id==PokemonEvolution.evolved_species_id,
|
||||||
|
backref=backref('evolved_species', innerjoin=True, lazy='joined'))
|
||||||
|
PokemonSpecies.flavor_text = relationship(PokemonSpeciesFlavorText,
|
||||||
|
order_by=PokemonSpeciesFlavorText.version_id.asc(),
|
||||||
|
backref='pokemon')
|
||||||
|
|
||||||
Region.generation = relationship(Generation, uselist=False)
|
Region.generation = relationship(Generation, uselist=False)
|
||||||
Region.version_group_regions = relationship(VersionGroupRegion,
|
Region.version_group_regions = relationship(VersionGroupRegion,
|
||||||
|
|
Loading…
Reference in a new issue