Handle sqlite errors during :history-clear
This commit is contained in:
parent
73587b1e16
commit
ef1825efb0
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import contextlib
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot, QUrl, QTimer
|
from PyQt5.QtCore import pyqtSlot, QUrl, QTimer
|
||||||
|
|
||||||
@ -87,6 +88,16 @@ class WebHistory(sql.SqlTable):
|
|||||||
def __contains__(self, url):
|
def __contains__(self, url):
|
||||||
return self._contains_query.run(val=url).value()
|
return self._contains_query.run(val=url).value()
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
|
def _handle_sql_errors(self):
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
except sql.SqlError as e:
|
||||||
|
if e.environmental:
|
||||||
|
message.error("Failed to write history: {}".format(e.text()))
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
def _rebuild_completion(self):
|
def _rebuild_completion(self):
|
||||||
data = {'url': [], 'title': [], 'last_atime': []}
|
data = {'url': [], 'title': [], 'last_atime': []}
|
||||||
# select the latest entry for each url
|
# select the latest entry for each url
|
||||||
@ -142,6 +153,7 @@ class WebHistory(sql.SqlTable):
|
|||||||
"history?")
|
"history?")
|
||||||
|
|
||||||
def _do_clear(self):
|
def _do_clear(self):
|
||||||
|
with self._handle_sql_errors():
|
||||||
self.delete_all()
|
self.delete_all()
|
||||||
self.completion.delete_all()
|
self.completion.delete_all()
|
||||||
|
|
||||||
@ -191,7 +203,7 @@ class WebHistory(sql.SqlTable):
|
|||||||
|
|
||||||
atime = int(atime) if (atime is not None) else int(time.time())
|
atime = int(atime) if (atime is not None) else int(time.time())
|
||||||
|
|
||||||
try:
|
with self._handle_sql_errors():
|
||||||
self.insert({'url': self._format_url(url),
|
self.insert({'url': self._format_url(url),
|
||||||
'title': title,
|
'title': title,
|
||||||
'atime': atime,
|
'atime': atime,
|
||||||
@ -202,11 +214,6 @@ class WebHistory(sql.SqlTable):
|
|||||||
'title': title,
|
'title': title,
|
||||||
'last_atime': atime
|
'last_atime': atime
|
||||||
}, replace=True)
|
}, replace=True)
|
||||||
except sql.SqlError as e:
|
|
||||||
if e.environmental:
|
|
||||||
message.error("Failed to write history: {}".format(e.text()))
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
|
|
||||||
def _parse_entry(self, line):
|
def _parse_entry(self, line):
|
||||||
"""Parse a history line like '12345 http://example.com title'."""
|
"""Parse a history line like '12345 http://example.com title'."""
|
||||||
|
Loading…
Reference in New Issue
Block a user