From 095fdd7d58c012cbe6345d369d00c26b8159e935 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Thu, 14 Apr 2011 17:32:52 +0300 Subject: [PATCH 1/1] Make Pokemon.form an actual relation --- pokedex/db/tables.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 928c7ee..9553349 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -1100,12 +1100,6 @@ class Pokemon(TableBase): ### Stuff to handle alternate Pokémon forms @property - def form(self): - u"""Returns the Pokémon's form, using its default form as fallback.""" - - return self.unique_form or self.default_form - - @property def is_base_form(self): u"""Returns True iff the Pokémon is the base form for its species, e.g. Land Shaymin. @@ -2021,6 +2015,14 @@ Pokemon.types = relation(Type, innerjoin=True, order_by=PokemonType.slot.asc(), backref=backref('pokemon', order_by=Pokemon.order)) +Pokemon.form = relation(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 = relation(Pokedex, innerjoin=True, lazy='joined') -- 2.7.4