mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Move relationships to _add_relationships calls: Pokemon
This commit is contained in:
parent
949ff883ea
commit
ef3fb2f536
1 changed files with 120 additions and 122 deletions
|
@ -325,6 +325,25 @@ class Encounter(TableBase):
|
||||||
max_level = Column(Integer, nullable=False, autoincrement=False,
|
max_level = Column(Integer, nullable=False, autoincrement=False,
|
||||||
info=dict(description=u"The maxmum level of the encountered Pokémon"))
|
info=dict(description=u"The maxmum level of the encountered Pokémon"))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _add_relationships(add_relationship, add_association_proxy, **kwargs):
|
||||||
|
add_relationship('condition_value_map', EncounterConditionValueMap,
|
||||||
|
backref='encounter')
|
||||||
|
add_association_proxy('condition_values',
|
||||||
|
'condition_value_map', 'condition_value')
|
||||||
|
add_relationship('location_area', LocationArea,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='encounters')
|
||||||
|
add_relationship('pokemon', Pokemon,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='encounters')
|
||||||
|
add_relationship('version', Version,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='encounters')
|
||||||
|
add_relationship('slot', EncounterSlot,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='encounters')
|
||||||
|
|
||||||
class EncounterCondition(TableBase):
|
class EncounterCondition(TableBase):
|
||||||
u"""A conditions in the game world that affects Pokémon encounters, such as time of day.
|
u"""A conditions in the game world that affects Pokémon encounters, such as time of day.
|
||||||
"""
|
"""
|
||||||
|
@ -1082,6 +1101,62 @@ class Pokemon(TableBase):
|
||||||
is_default = Column(Boolean, nullable=False, index=True,
|
is_default = Column(Boolean, nullable=False, index=True,
|
||||||
info=dict(description=u'Set for exactly one pokemon used as the default for each species.'))
|
info=dict(description=u'Set for exactly one pokemon used as the default for each species.'))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _add_relationships(add_relationship, **kwargs):
|
||||||
|
add_relationship('all_abilities', Ability,
|
||||||
|
secondary=PokemonAbility.__table__,
|
||||||
|
order_by=PokemonAbility.slot.asc(),
|
||||||
|
innerjoin=True,
|
||||||
|
backref=backref('all_pokemon', order_by=Pokemon.order.asc()),
|
||||||
|
info=dict(
|
||||||
|
description=u"All abilities the Pokémon can have, including the Hidden Ability"))
|
||||||
|
add_relationship('abilities', Ability,
|
||||||
|
secondary=PokemonAbility.__table__,
|
||||||
|
primaryjoin=and_(
|
||||||
|
Pokemon.id == PokemonAbility.pokemon_id,
|
||||||
|
PokemonAbility.is_dream == False),
|
||||||
|
innerjoin=True,
|
||||||
|
order_by=PokemonAbility.slot.asc(),
|
||||||
|
backref=backref('pokemon', order_by=Pokemon.order.asc()),
|
||||||
|
info=dict(
|
||||||
|
description=u"Abilities the Pokémon can have in the wild"))
|
||||||
|
add_relationship('dream_ability', Ability,
|
||||||
|
secondary=PokemonAbility.__table__,
|
||||||
|
primaryjoin=and_(
|
||||||
|
Pokemon.id == PokemonAbility.pokemon_id,
|
||||||
|
PokemonAbility.is_dream == True),
|
||||||
|
uselist=False,
|
||||||
|
backref=backref('dream_pokemon', order_by=Pokemon.order),
|
||||||
|
info=dict(
|
||||||
|
description=u"The Pokémon's Hidden Ability"))
|
||||||
|
add_relationship('forms', PokemonForm,
|
||||||
|
primaryjoin=Pokemon.id==PokemonForm.pokemon_id,
|
||||||
|
order_by=(PokemonForm.order.asc(),
|
||||||
|
PokemonForm.form_identifier.asc()))
|
||||||
|
add_relationship('default_form', PokemonForm,
|
||||||
|
primaryjoin=and_(
|
||||||
|
Pokemon.id==PokemonForm.pokemon_id,
|
||||||
|
PokemonForm.is_default==True),
|
||||||
|
uselist=False,
|
||||||
|
lazy='joined',
|
||||||
|
info=dict(description=u"A representative form of this pokémon"))
|
||||||
|
add_relationship('items', PokemonItem,
|
||||||
|
backref='pokemon',
|
||||||
|
info=dict(
|
||||||
|
description=u"Info about items this pokémon holds in the wild"))
|
||||||
|
add_relationship('stats', PokemonStat,
|
||||||
|
innerjoin=True,
|
||||||
|
order_by=PokemonStat.stat_id.asc(),
|
||||||
|
backref='pokemon')
|
||||||
|
add_relationship('species', PokemonSpecies,
|
||||||
|
innerjoin=True,
|
||||||
|
backref='pokemon')
|
||||||
|
add_relationship('types', Type,
|
||||||
|
secondary=PokemonType.__table__,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
order_by=PokemonType.slot.asc(),
|
||||||
|
backref=backref('pokemon', order_by=Pokemon.order))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
u"""Returns a name for this Pokémon, specifiying the form iff it
|
u"""Returns a name for this Pokémon, specifiying the form iff it
|
||||||
|
@ -1216,6 +1291,27 @@ class PokemonEvolution(TableBase):
|
||||||
trade_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
|
trade_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
|
||||||
info=dict(description=u"The ID of the species for which this one must be traded."))
|
info=dict(description=u"The ID of the species for which this one must be traded."))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _add_relationships(add_relationship, **kwargs):
|
||||||
|
add_relationship('trigger', EvolutionTrigger,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='evolutions')
|
||||||
|
add_relationship('trigger_item', Item,
|
||||||
|
primaryjoin=PokemonEvolution.trigger_item_id==Item.id,
|
||||||
|
backref='triggered_evolutions')
|
||||||
|
add_relationship('held_item', Item,
|
||||||
|
primaryjoin=PokemonEvolution.held_item_id==Item.id,
|
||||||
|
backref='required_for_evolutions')
|
||||||
|
add_relationship('location', Location,
|
||||||
|
backref='triggered_evolutions')
|
||||||
|
add_relationship('known_move', Move,
|
||||||
|
backref='triggered_evolutions')
|
||||||
|
add_relationship('party_species', PokemonSpecies,
|
||||||
|
primaryjoin=PokemonEvolution.party_species_id==PokemonSpecies.id,
|
||||||
|
backref='triggered_evolutions')
|
||||||
|
add_relationship('trade_species', PokemonSpecies,
|
||||||
|
primaryjoin=PokemonEvolution.trade_species_id==PokemonSpecies.id)
|
||||||
|
|
||||||
class PokemonForm(TableBase):
|
class PokemonForm(TableBase):
|
||||||
u"""An individual form of a Pokémon. This includes *every* variant (except
|
u"""An individual form of a Pokémon. This includes *every* variant (except
|
||||||
color differences) of every Pokémon, regardless of how the games treat
|
color differences) of every Pokémon, regardless of how the games treat
|
||||||
|
@ -1327,6 +1423,26 @@ class PokemonMove(TableBase):
|
||||||
{},
|
{},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _add_relationships(add_relationship, **kwargs):
|
||||||
|
add_relationship('pokemon', Pokemon,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='pokemon_moves')
|
||||||
|
add_relationship('version_group', VersionGroup,
|
||||||
|
innerjoin=True, lazy='joined')
|
||||||
|
add_relationship('machine', Machine,
|
||||||
|
primaryjoin=and_(
|
||||||
|
Machine.version_group_id==PokemonMove.version_group_id,
|
||||||
|
Machine.move_id==PokemonMove.move_id),
|
||||||
|
foreign_keys=[Machine.version_group_id, Machine.move_id],
|
||||||
|
uselist=False,
|
||||||
|
backref='pokemon_moves')
|
||||||
|
add_relationship('move', Move,
|
||||||
|
innerjoin=True, lazy='joined',
|
||||||
|
backref='pokemon_moves')
|
||||||
|
add_relationship('method', PokemonMoveMethod,
|
||||||
|
innerjoin=True, lazy='joined')
|
||||||
|
|
||||||
class PokemonMoveMethod(TableBase):
|
class PokemonMoveMethod(TableBase):
|
||||||
u"""A method a move can be learned by, such as "Level up" or "Tutor".
|
u"""A method a move can be learned by, such as "Level up" or "Tutor".
|
||||||
"""
|
"""
|
||||||
|
@ -1412,9 +1528,7 @@ class PokemonSpecies(TableBase):
|
||||||
info=dict(description=u"The species from which this one evolves"))
|
info=dict(description=u"The species from which this one evolves"))
|
||||||
add_relationship('evolutions', PokemonEvolution,
|
add_relationship('evolutions', PokemonEvolution,
|
||||||
primaryjoin=PokemonSpecies.id==PokemonEvolution.evolved_species_id,
|
primaryjoin=PokemonSpecies.id==PokemonEvolution.evolved_species_id,
|
||||||
backref=backref('evolved_species',
|
backref=backref('evolved_species', innerjoin=True, lazy='joined'))
|
||||||
innerjoin=True,
|
|
||||||
lazy='joined'))
|
|
||||||
add_relationship('flavor_text', PokemonSpeciesFlavorText,
|
add_relationship('flavor_text', PokemonSpeciesFlavorText,
|
||||||
order_by=PokemonSpeciesFlavorText.version_id.asc(),
|
order_by=PokemonSpeciesFlavorText.version_id.asc(),
|
||||||
backref='species')
|
backref='species')
|
||||||
|
@ -1444,8 +1558,7 @@ class PokemonSpecies(TableBase):
|
||||||
secondaryjoin=and_(Pokemon.id==PokemonForm.pokemon_id,
|
secondaryjoin=and_(Pokemon.id==PokemonForm.pokemon_id,
|
||||||
PokemonForm.is_default==True),
|
PokemonForm.is_default==True),
|
||||||
uselist=False,
|
uselist=False,
|
||||||
info=dict(
|
info=dict(description=u"A representative form of this species"))
|
||||||
description=u"A representative form of this species"))
|
|
||||||
add_relationship('default_pokemon', Pokemon,
|
add_relationship('default_pokemon', Pokemon,
|
||||||
primaryjoin=and_(
|
primaryjoin=and_(
|
||||||
PokemonSpecies.id==Pokemon.species_id,
|
PokemonSpecies.id==Pokemon.species_id,
|
||||||
|
@ -1683,8 +1796,8 @@ def add_relationships():
|
||||||
cls.relationship_info.setdefault('_order', [])
|
cls.relationship_info.setdefault('_order', [])
|
||||||
cls.relationship_info['_order'].append(name)
|
cls.relationship_info['_order'].append(name)
|
||||||
cls.relationship_info[name] = info = kwargs.pop('info', {})
|
cls.relationship_info[name] = info = kwargs.pop('info', {})
|
||||||
cls.relationship_info[name].update(kwargs)
|
info.update(kwargs)
|
||||||
cls.relationship_info[name].update(dict(
|
info.update(dict(
|
||||||
type='relationship',
|
type='relationship',
|
||||||
argument=argument,
|
argument=argument,
|
||||||
secondary=secondary))
|
secondary=secondary))
|
||||||
|
@ -1750,22 +1863,6 @@ ContestCombo.second = relationship(Move,
|
||||||
backref='contest_combo_second')
|
backref='contest_combo_second')
|
||||||
|
|
||||||
|
|
||||||
Encounter.condition_value_map = relationship(EncounterConditionValueMap,
|
|
||||||
backref='encounter')
|
|
||||||
Encounter.condition_values = association_proxy('condition_value_map', 'condition_value')
|
|
||||||
Encounter.location_area = relationship(LocationArea,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='encounters')
|
|
||||||
Encounter.pokemon = relationship(Pokemon,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='encounters')
|
|
||||||
Encounter.version = relationship(Version,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='encounters')
|
|
||||||
Encounter.slot = relationship(EncounterSlot,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='encounters')
|
|
||||||
|
|
||||||
EncounterConditionValue.condition = relationship(EncounterCondition,
|
EncounterConditionValue.condition = relationship(EncounterCondition,
|
||||||
innerjoin=True, lazy='joined',
|
innerjoin=True, lazy='joined',
|
||||||
backref='values')
|
backref='values')
|
||||||
|
@ -1990,91 +2087,9 @@ Pokedex.version_groups = relationship(VersionGroup,
|
||||||
backref='pokedex')
|
backref='pokedex')
|
||||||
|
|
||||||
|
|
||||||
Pokemon.all_abilities = relationship(Ability,
|
|
||||||
secondary=PokemonAbility.__table__,
|
|
||||||
order_by=PokemonAbility.slot.asc(),
|
|
||||||
innerjoin=True,
|
|
||||||
backref=backref('all_pokemon',
|
|
||||||
order_by=Pokemon.order.asc(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
Pokemon.abilities = relationship(Ability,
|
|
||||||
secondary=PokemonAbility.__table__,
|
|
||||||
primaryjoin=and_(
|
|
||||||
Pokemon.id == PokemonAbility.pokemon_id,
|
|
||||||
PokemonAbility.is_dream == False,
|
|
||||||
),
|
|
||||||
innerjoin=True,
|
|
||||||
order_by=PokemonAbility.slot.asc(),
|
|
||||||
backref=backref('pokemon',
|
|
||||||
order_by=Pokemon.order.asc(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
Pokemon.dream_ability = relationship(Ability,
|
|
||||||
secondary=PokemonAbility.__table__,
|
|
||||||
primaryjoin=and_(
|
|
||||||
Pokemon.id == PokemonAbility.pokemon_id,
|
|
||||||
PokemonAbility.is_dream == True,
|
|
||||||
),
|
|
||||||
uselist=False,
|
|
||||||
backref=backref('dream_pokemon',
|
|
||||||
order_by=Pokemon.order,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
Pokemon.forms = relationship(PokemonForm,
|
|
||||||
primaryjoin=Pokemon.id==PokemonForm.pokemon_id,
|
|
||||||
order_by=(PokemonForm.order.asc(), PokemonForm.form_identifier.asc()))
|
|
||||||
Pokemon.default_form = relationship(PokemonForm,
|
|
||||||
primaryjoin=and_(
|
|
||||||
Pokemon.id==PokemonForm.pokemon_id,
|
|
||||||
PokemonForm.is_default==True),
|
|
||||||
uselist=False, lazy='joined')
|
|
||||||
Pokemon.items = relationship(PokemonItem,
|
|
||||||
backref='pokemon')
|
|
||||||
Pokemon.stats = relationship(PokemonStat,
|
|
||||||
innerjoin=True,
|
|
||||||
order_by=PokemonStat.stat_id.asc(),
|
|
||||||
backref='pokemon')
|
|
||||||
Pokemon.species = relationship(PokemonSpecies,
|
|
||||||
innerjoin=True,
|
|
||||||
backref='pokemon')
|
|
||||||
Pokemon.types = relationship(Type,
|
|
||||||
secondary=PokemonType.__table__,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
order_by=PokemonType.slot.asc(),
|
|
||||||
backref=backref('pokemon', order_by=Pokemon.order))
|
|
||||||
|
|
||||||
PokemonDexNumber.pokedex = relationship(Pokedex,
|
PokemonDexNumber.pokedex = relationship(Pokedex,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
|
||||||
PokemonEvolution.trigger = relationship(EvolutionTrigger,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='evolutions')
|
|
||||||
PokemonEvolution.trigger_item = relationship(Item,
|
|
||||||
primaryjoin=PokemonEvolution.trigger_item_id==Item.id,
|
|
||||||
backref='triggered_evolutions')
|
|
||||||
PokemonEvolution.held_item = relationship(Item,
|
|
||||||
primaryjoin=PokemonEvolution.held_item_id==Item.id,
|
|
||||||
backref='required_for_evolutions')
|
|
||||||
PokemonEvolution.location = relationship(Location,
|
|
||||||
backref='triggered_evolutions')
|
|
||||||
PokemonEvolution.known_move = relationship(Move,
|
|
||||||
backref='triggered_evolutions')
|
|
||||||
PokemonEvolution.party_species = relationship(PokemonSpecies,
|
|
||||||
primaryjoin=PokemonEvolution.party_species_id==PokemonSpecies.id,
|
|
||||||
backref='triggered_evolutions')
|
|
||||||
PokemonEvolution.trade_species = relationship(PokemonSpecies,
|
|
||||||
primaryjoin=PokemonEvolution.trade_species_id==PokemonSpecies.id)
|
|
||||||
|
|
||||||
PokemonForm.pokemon = relationship(Pokemon,
|
|
||||||
primaryjoin=PokemonForm.pokemon_id==Pokemon.id,
|
|
||||||
innerjoin=True, lazy='joined')
|
|
||||||
PokemonForm.species = association_proxy('pokemon', 'species')
|
|
||||||
PokemonForm.version_group = relationship(VersionGroup,
|
|
||||||
innerjoin=True)
|
|
||||||
PokemonForm.pokeathlon_stats = relationship(PokemonFormPokeathlonStat,
|
|
||||||
order_by=PokemonFormPokeathlonStat.pokeathlon_stat_id,
|
|
||||||
backref='pokemon_form')
|
|
||||||
|
|
||||||
PokemonFormPokeathlonStat.pokeathlon_stat = relationship(PokeathlonStat,
|
PokemonFormPokeathlonStat.pokeathlon_stat = relationship(PokeathlonStat,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
@ -2085,23 +2100,6 @@ PokemonItem.item = relationship(Item,
|
||||||
PokemonItem.version = relationship(Version,
|
PokemonItem.version = relationship(Version,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
|
||||||
PokemonMove.pokemon = relationship(Pokemon,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='pokemon_moves')
|
|
||||||
PokemonMove.version_group = relationship(VersionGroup,
|
|
||||||
innerjoin=True, lazy='joined')
|
|
||||||
PokemonMove.machine = relationship(Machine,
|
|
||||||
primaryjoin=and_(
|
|
||||||
Machine.version_group_id==PokemonMove.version_group_id,
|
|
||||||
Machine.move_id==PokemonMove.move_id),
|
|
||||||
foreign_keys=[Machine.version_group_id, Machine.move_id],
|
|
||||||
uselist=False,
|
|
||||||
backref='pokemon_moves')
|
|
||||||
PokemonMove.move = relationship(Move,
|
|
||||||
innerjoin=True, lazy='joined',
|
|
||||||
backref='pokemon_moves')
|
|
||||||
PokemonMove.method = relationship(PokemonMoveMethod,
|
|
||||||
innerjoin=True, lazy='joined')
|
|
||||||
|
|
||||||
PokemonStat.stat = relationship(Stat,
|
PokemonStat.stat = relationship(Stat,
|
||||||
innerjoin=True, lazy='joined')
|
innerjoin=True, lazy='joined')
|
||||||
|
|
Loading…
Reference in a new issue