Handle more than one change result when searching

...by change ID.

Change-Id: Ie8fb11bf0a52b13870db5d4f9c407f775b93e939
This commit is contained in:
James E. Blair 2016-03-09 09:04:04 -08:00
parent fbb9969033
commit 3b29386bdc
2 changed files with 15 additions and 14 deletions

View File

@ -463,12 +463,12 @@ class App(object):
return return
with self.db.getSession() as session: with self.db.getSession() as session:
if number: if number:
change = session.getChangeByNumber(number) changes = [session.getChangeByNumber(number)]
elif changeid: elif changeid:
change = session.getChangeByChangeID(changeid) changes = session.getChangesByChangeID(changeid)
change_key = change and change.key or None change_keys = [c.key for c in changes if c]
restid = change and change.id or None restids = [c.id for c in changes if c]
if change_key is None: if not change_keys:
if self.sync.offline: if self.sync.offline:
raise Exception('Can not sync change while offline.') raise Exception('Can not sync change while offline.')
dialog = mywid.SystemMessage("Syncing change...") dialog = mywid.SystemMessage("Syncing change...")
@ -489,14 +489,15 @@ class App(object):
self.backScreen() self.backScreen()
with self.db.getSession() as session: with self.db.getSession() as session:
if number: if number:
change = session.getChangeByNumber(number) changes = [session.getChangeByNumber(number)]
elif changeid: elif changeid:
change = session.getChangeByChangeID(changeid) changes = session.getChangesByChangeID(changeid)
change_key = change and change.key or None change_keys = [c.key for c in changes if c]
elif restid: elif restids:
task = sync.SyncChangeTask(restid, sync.HIGH_PRIORITY) for restid in restids:
self.sync.submitTask(task) task = sync.SyncChangeTask(restid, sync.HIGH_PRIORITY)
if change_key is None: self.sync.submitTask(task)
if not change_keys:
raise Exception('Change is not in local database.') raise Exception('Change is not in local database.')
def doSearch(self, query): def doSearch(self, query):

View File

@ -794,9 +794,9 @@ class DatabaseSession(object):
return set([]) return set([])
return set([r[0] for r in self.session().query(Change.id).filter(Change.id.in_(ids)).all()]) return set([r[0] for r in self.session().query(Change.id).filter(Change.id.in_(ids)).all()])
def getChangeByChangeID(self, change_id): def getChangesByChangeID(self, change_id):
try: try:
return self.session().query(Change).filter_by(change_id=change_id).one() return self.session().query(Change).filter_by(change_id=change_id)
except sqlalchemy.orm.exc.NoResultFound: except sqlalchemy.orm.exc.NoResultFound:
return None return None