veekun_pokedex/pokedex/lookup.py
2009-07-21 00:12:25 -07:00

31 lines
1,011 B
Python

# encoding: utf8
from sqlalchemy.sql import func
import pokedex.db.tables as tables
def lookup(session, name):
"""Attempts to find some sort of object, given a database session and name.
Returns a list of (object, matchiness) tuples. Matchiness is 1 for exact
matches. It is possible to get multiple exact matches; for example,
'Metronome' will match both the move and the item. In these cases, the
results are returned in rough order of "importance", e.g., Pokémon come
before moves come before types.
This function does fuzzy matching iff there are no exact matches.
Formes are not returned; "Shaymin" will return only grass Shaymin.
Currently recognizes:
- Pokémon names: "Eevee"
"""
q = session.query(tables.Pokemon) \
.filter(func.lower(tables.Pokemon.name) == name.lower()) \
.filter_by(forme_base_pokemon_id=None)
try:
result = q.one()
return [ (result, 1) ]
except:
return []