aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzlg <zlg@zlg.space>2020-03-02 21:09:00 -0800
committerzlg <zlg@zlg.space>2020-03-02 21:09:00 -0800
commit284b5946c61cc39d8aa880554ce5ba363285c5fc (patch)
treee8e2234ecb4463f65dbafcc8173b1eef75657ad1
parentRelease version 0.3 beta 4 (diff)
downloadvgstash-284b5946c61cc39d8aa880554ce5ba363285c5fc.tar.gz
vgstash-284b5946c61cc39d8aa880554ce5ba363285c5fc.tar.bz2
vgstash-284b5946c61cc39d8aa880554ce5ba363285c5fc.tar.xz
vgstash-284b5946c61cc39d8aa880554ce5ba363285c5fc.zip
Avoid a backtrace when updating an invalid game
ZLG-Bug: 2
-rwxr-xr-xsrc/vgstash/__init__.py6
-rwxr-xr-x[-rw-r--r--]src/vgstash_cli.py6
2 files changed, 8 insertions, 4 deletions
diff --git a/src/vgstash/__init__.py b/src/vgstash/__init__.py
index 4c1df3b..48ac055 100755
--- a/src/vgstash/__init__.py
+++ b/src/vgstash/__init__.py
@@ -121,8 +121,8 @@ class DB(object):
directly in, with no escaping. Use with caution.
'filter_name' is the name of your filter, and will be the 'name' key
- when viewed with list_filters(). usable via `vgscli list [filter name]`.
- 'stmt' is a plain SELECT statement representing the SQLite VIEW.
+ when viewed with list_filters(). usable via `vgstash list [filter name]`.
+ 'stmt' is a plain SELECT statement representing the internal SQLite VIEW.
"""
if filter_name.startswith("sqlite_"):
raise ValueError("Cannot create a filter with the 'sqlite_' prefix.")
@@ -233,6 +233,8 @@ class DB(object):
res = self.conn.execute(stmt, (title, system)).fetchone()
if bool(res):
return Game(res['title'], res['system'], res['ownership'], res['progress'], res['notes'])
+ else:
+ raise KeyError
def has_game(self, game, fuzzy=False):
"""
diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py
index b92201f..323f1d9 100644..100755
--- a/src/vgstash_cli.py
+++ b/src/vgstash_cli.py
@@ -158,7 +158,10 @@ def delete_game(title, system):
def update_game(title, system, attr, val):
# TODO: Consider namedtuple as a solution
db = get_db()
- target_game = db.get_game(title, system)
+ try:
+ target_game = db.get_game(title, system)
+ except:
+ click.echo("Game not found. Please try again.")
if attr == 'ownership':
val = vgstash.vtok(val, vgstash.OWNERSHIP)
if attr == 'progress':
@@ -172,7 +175,6 @@ def update_game(title, system, attr, val):
)
if db.update_game(target_game, updated_game):
click.echo("Updated {} for {}. Its {} is now {}.".format(title, system, attr, val))
- pass
@cli.command('notes')