Refactor SavedSearchQueries to use the new db API

This commit is contained in:
Kovid Goyal 2017-05-14 20:55:44 +05:30
parent abcf435b2b
commit bd000c52f4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -37,55 +37,52 @@ class SavedSearchQueries(object):
def __init__(self, db, _opt_name): def __init__(self, db, _opt_name):
self.opt_name = _opt_name self.opt_name = _opt_name
if db is not None: if db is not None:
self.queries = db.prefs.get(self.opt_name, {}) db = db.new_api
self._db = weakref.ref(db)
self.queries = db.pref(self.opt_name, {})
else: else:
self.queries = {} self.queries = {}
try:
self._db = weakref.ref(db)
except TypeError:
# db could be None
self._db = lambda : None self._db = lambda : None
@property @property
def db(self): def db(self):
return self._db() return self._db()
def save_queries(self):
db = self.db
if db is not None:
db.set_pref(self.opt_name, self.queries)
def force_unicode(self, x): def force_unicode(self, x):
if not isinstance(x, unicode): if not isinstance(x, unicode):
x = x.decode(preferred_encoding, 'replace') x = x.decode(preferred_encoding, 'replace')
return x return x
def add(self, name, value): def add(self, name, value):
db = self.db
if db is not None:
self.queries[self.force_unicode(name)] = self.force_unicode(value).strip() self.queries[self.force_unicode(name)] = self.force_unicode(value).strip()
db.prefs[self.opt_name] = self.queries self.save_queries()
def lookup(self, name): def lookup(self, name):
return self.queries.get(self.force_unicode(name), None) return self.queries.get(self.force_unicode(name), None)
def delete(self, name): def delete(self, name):
db = self.db
if db is not None:
self.queries.pop(self.force_unicode(name), False) self.queries.pop(self.force_unicode(name), False)
db.prefs[self.opt_name] = self.queries self.save_queries()
def rename(self, old_name, new_name): def rename(self, old_name, new_name):
db = self.db
if db is not None:
self.queries[self.force_unicode(new_name)] = \ self.queries[self.force_unicode(new_name)] = \
self.queries.get(self.force_unicode(old_name), None) self.queries.get(self.force_unicode(old_name), None)
self.queries.pop(self.force_unicode(old_name), False) self.queries.pop(self.force_unicode(old_name), False)
db.prefs[self.opt_name] = self.queries self.save_queries()
def set_all(self, smap): def set_all(self, smap):
db = self.db self.queries = smap
if db is not None: self.save_queries()
self.queries = db.prefs[self.opt_name] = smap
def names(self): def names(self):
return sorted(self.queries.keys(),key=sort_key) return sorted(self.queries.keys(),key=sort_key)
''' '''
Create a global instance of the saved searches. It is global so that the searches Create a global instance of the saved searches. It is global so that the searches
are common across all instances of the parser (devices, library, etc). are common across all instances of the parser (devices, library, etc).
@ -106,6 +103,7 @@ def saved_searches():
def global_lookup_saved_search(name): def global_lookup_saved_search(name):
return ss.lookup(name) return ss.lookup(name)
''' '''
Parse a search expression into a series of potentially recursive operations. Parse a search expression into a series of potentially recursive operations.
@ -811,8 +809,8 @@ def main(args=sys.argv):
return 0 return 0
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())
# }}} # }}}