Add filter by installed status in get_games

This commit is contained in:
Mathieu Comandon 2013-12-12 22:48:05 +01:00
parent 41470c9f3a
commit 252c05efc7
2 changed files with 24 additions and 13 deletions

View file

@ -114,15 +114,20 @@ def set_installed_games():
{'installed': 1}, ('slug', game['slug']))
def get_games(name_filter=None):
def get_games(name_filter=None, filter_installed=False):
"""Get the list of every game in database."""
with sql.db_cursor(PGA_DB) as cursor:
if name_filter is not None:
query = "select * from games where name LIKE ?"
rows = cursor.execute(query, (name_filter, ))
else:
query = "select * from games"
rows = cursor.execute(query)
query = "select * from games"
params = ()
filters = []
if name_filter:
params = (name_filter, )
filters.append("name LIKE '?'")
if filter_installed:
filters.append("installed = 1")
if filters:
query += " WHERE " + " AND ".join([f for f in filters])
rows = cursor.execute(query, params)
results = rows.fetchall()
column_names = [column[0] for column in cursor.description]
game_list = []
@ -140,13 +145,11 @@ def get_game_by_slug(slug):
return game_result[0]
def add_game(name, runner=None, slug=None, directory=None):
def add_game(name, **game_data):
"""Adds a game to the PGA database."""
if not slug:
slug = slugify(name)
game_data = {'name': name, 'slug': slug, 'runner': runner}
if directory:
game_data['directory'] = directory
game_data['name'] = name
if not 'slug' in game_data:
game_data['slug'] = slugify(name)
sql.db_insert(PGA_DB, "games", game_data)

View file

@ -49,6 +49,14 @@ class TestPersonnalGameArchive(DatabaseTester):
self.assertEqual(len(game_list), 1)
self.assertEqual(game_list[0]['name'], 'bang')
def test_can_filter_by_installed_games(self):
pga.add_game(name="installed_game", runner="Linux", installed=1)
pga.add_game(name="bang", runner="Linux", installed=0)
game_list = pga.get_games(filter_installed=True)
print game_list
self.assertEqual(len(game_list), 1)
self.assertEqual(game_list[0]['name'], 'installed_game')
def test_game_slugs_must_be_unique(self):
pga.add_game(name="unique game", runner="Linux")
with self.assertRaises(IntegrityError):