mirror of
https://github.com/lutris/lutris
synced 2024-10-14 03:32:52 +00:00
Add filter by installed status in get_games
This commit is contained in:
parent
41470c9f3a
commit
252c05efc7
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue