From: Petr Viktorin Date: Thu, 14 Apr 2011 14:32:52 +0000 (+0300) Subject: Make Pokemon.form an actual relation X-Git-Url: http://git.veekun.com/zzz-pokedex.git/commitdiff_plain/095fdd7d58c012cbe6345d369d00c26b8159e935 Make Pokemon.form an actual relation --- 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')