Reduce code duplication
This commit is contained in:
parent
ed67263a64
commit
87a4b1d662
@ -51,22 +51,23 @@ class CompletionMetaInfo(sql.SqlTable):
|
||||
if key not in self:
|
||||
self[key] = default
|
||||
|
||||
def __contains__(self, key):
|
||||
def _check_key(self, key):
|
||||
if key not in self.KEYS:
|
||||
raise KeyError(key)
|
||||
|
||||
def __contains__(self, key):
|
||||
self._check_key(key)
|
||||
query = self.contains_query('key')
|
||||
return query.run(val=key).value()
|
||||
|
||||
def __getitem__(self, key):
|
||||
if key not in self.KEYS:
|
||||
raise KeyError(key)
|
||||
self._check_key(key)
|
||||
query = sql.Query('SELECT value FROM CompletionMetaInfo '
|
||||
'WHERE key = :key')
|
||||
return query.run(key=key).value()
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
if key not in self.KEYS:
|
||||
raise KeyError(key)
|
||||
self._check_key(key)
|
||||
self.insert({'key': key, 'value': value}, replace=True)
|
||||
|
||||
|
||||
@ -148,6 +149,11 @@ class WebHistory(sql.SqlTable):
|
||||
except sql.SqlEnvironmentError as e:
|
||||
message.error("Failed to write history: {}".format(e.text()))
|
||||
|
||||
def _is_excluded(self, url):
|
||||
"""Check if the given URL is excluded from the completion."""
|
||||
return any(pattern.matches(url)
|
||||
for pattern in config.val.completion.web_history.exclude)
|
||||
|
||||
def _rebuild_completion(self):
|
||||
data = {'url': [], 'title': [], 'last_atime': []}
|
||||
# select the latest entry for each url
|
||||
@ -156,8 +162,7 @@ class WebHistory(sql.SqlTable):
|
||||
'GROUP BY url ORDER BY atime asc')
|
||||
for entry in q.run():
|
||||
url = QUrl(entry.url)
|
||||
if any(pattern.matches(url)
|
||||
for pattern in config.val.completion.web_history.exclude):
|
||||
if self._is_excluded(url):
|
||||
continue
|
||||
data['url'].append(self._format_completion_url(url))
|
||||
data['title'].append(entry.title)
|
||||
@ -269,10 +274,7 @@ class WebHistory(sql.SqlTable):
|
||||
'atime': atime,
|
||||
'redirect': redirect})
|
||||
|
||||
if redirect:
|
||||
return
|
||||
if any(pattern.matches(url)
|
||||
for pattern in config.val.completion.web_history.exclude):
|
||||
if redirect or self._is_excluded(url):
|
||||
return
|
||||
|
||||
self.completion.insert({
|
||||
|
@ -191,16 +191,19 @@ class Query:
|
||||
error.text())
|
||||
raise_sqlite_error(msg, error)
|
||||
|
||||
def _bind_values(self, values):
|
||||
for key, val in values.items():
|
||||
self.query.bindValue(':{}'.format(key), val)
|
||||
if any(val is None for val in self.bound_values().values()):
|
||||
raise SqlBugError("Missing bound values!")
|
||||
|
||||
def run(self, **values):
|
||||
"""Execute the prepared query."""
|
||||
log.sql.debug('Running SQL query: "{}"'.format(
|
||||
self.query.lastQuery()))
|
||||
|
||||
for key, val in values.items():
|
||||
self.query.bindValue(':{}'.format(key), val)
|
||||
self._bind_values(values)
|
||||
log.sql.debug('query bindings: {}'.format(self.bound_values()))
|
||||
if any(val is None for val in self.bound_values().values()):
|
||||
raise SqlBugError("Missing bound values!")
|
||||
|
||||
ok = self.query.exec_()
|
||||
self._check_ok('exec', ok)
|
||||
@ -212,10 +215,7 @@ class Query:
|
||||
log.sql.debug('Running SQL query (batch): "{}"'.format(
|
||||
self.query.lastQuery()))
|
||||
|
||||
for key, val in values.items():
|
||||
self.query.bindValue(':{}'.format(key), val)
|
||||
if any(val is None for val in self.bound_values().values()):
|
||||
raise SqlBugError("Missing bound values!")
|
||||
self._bind_values(values)
|
||||
|
||||
db = QSqlDatabase.database()
|
||||
ok = db.transaction()
|
||||
|
Loading…
Reference in New Issue
Block a user