id = Column(Integer, primary_key=True, nullable=False)
version_group_id = Column(Integer, ForeignKey('version_groups.id'), nullable=False, autoincrement=False)
encounter_terrain_id = Column(Integer, ForeignKey('encounter_terrain.id'), primary_key=False, nullable=False, autoincrement=False)
- rarity = Column(Integer, nullable=False, autoincrement=False)
+ slot = Column(Integer, nullable=True)
+ rarity = Column(Integer, nullable=False)
class EncounterSlotCondition(TableBase):
"""Lists all conditions that affect each slot."""
__tablename__ = 'generations'
id = Column(Integer, primary_key=True, nullable=False)
main_region_id = Column(Integer, ForeignKey('regions.id'))
+ canonical_pokedex_id = Column(Integer, ForeignKey('pokedexes.id'))
name = Column(Unicode(16), nullable=False)
class GrowthRate(TableBase):
class Pokedex(TableBase):
__tablename__ = 'pokedexes'
id = Column(Integer, primary_key=True, nullable=False)
+ region_id = Column(Integer, ForeignKey('regions.id'), nullable=True)
name = Column(Unicode(16), nullable=False)
description = Column(Unicode(512))
return self
+ ### Not forms!
+
+ def stat(self, stat_name):
+ """Returns a PokemonStat record for the given stat name (or Stat row
+ object). Uses the normal has-many machinery, so all the stats are
+ effectively cached.
+ """
+ if isinstance(stat_name, Stat):
+ stat_name = stat_name.name
+
+ for pokemon_stat in self.stats:
+ if pokemon_stat.stat.name == stat_name:
+ return pokemon_stat
+
+ return None
+
class PokemonAbility(TableBase):
__tablename__ = 'pokemon_abilities'
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
EvolutionChain.growth_rate = relation(GrowthRate, backref='evolution_chains')
+Generation.canonical_pokedex = relation(Pokedex, backref='canonical_for_generation')
Generation.versions = relation(Version, secondary=VersionGroup.__table__)
Generation.main_region = relation(Region)
Nature.increased_stat = relation(Stat, primaryjoin=Nature.increased_stat_id==Stat.id,
backref='increasing_natures')
-Pokedex.version_groups = relation(VersionGroup, secondary=PokedexVersionGroup.__table__)
+Pokedex.region = relation(Region, backref='pokedexes')
+Pokedex.version_groups = relation(VersionGroup, secondary=PokedexVersionGroup.__table__, backref='pokedexes')
Pokemon.abilities = relation(Ability, secondary=PokemonAbility.__table__,
order_by=PokemonAbility.slot,