Faster Multiple Person Delete
This commit is contained in:
parent
1ce63261c3
commit
31bf3edf17
@ -440,7 +440,7 @@ class MissingMediaDialog:
|
|||||||
class MultiSelectDialog:
|
class MultiSelectDialog:
|
||||||
def __init__(self, msg1_func, msg2_func, items, lookup,
|
def __init__(self, msg1_func, msg2_func, items, lookup,
|
||||||
cancel_func=None, no_func=None, yes_func=None,
|
cancel_func=None, no_func=None, yes_func=None,
|
||||||
parent=None):
|
multi_yes_func=None, parent=None):
|
||||||
"""
|
"""
|
||||||
"""
|
"""
|
||||||
self.xml = Glade(toplevel='multiselectdialog')
|
self.xml = Glade(toplevel='multiselectdialog')
|
||||||
@ -489,6 +489,10 @@ class MultiSelectDialog:
|
|||||||
response = self.top.run()
|
response = self.top.run()
|
||||||
|
|
||||||
if check_button.get_active():
|
if check_button.get_active():
|
||||||
|
# run the multiple yes if 'do remainder' is checked
|
||||||
|
if multi_yes_func and response == 3:
|
||||||
|
multi_yes_func(items)
|
||||||
|
break
|
||||||
default_action = response
|
default_action = response
|
||||||
else:
|
else:
|
||||||
response = default_action
|
response = default_action
|
||||||
|
@ -462,6 +462,7 @@ class BasePersonView(ListView):
|
|||||||
handles,
|
handles,
|
||||||
self._lookup_person,
|
self._lookup_person,
|
||||||
yes_func=self.delete_person_response,
|
yes_func=self.delete_person_response,
|
||||||
|
multi_yes_func=self.delete_multi_person_response,
|
||||||
parent=self.uistate.window)
|
parent=self.uistate.window)
|
||||||
|
|
||||||
def _message1_format(self, person):
|
def _message1_format(self, person):
|
||||||
@ -502,6 +503,30 @@ class BasePersonView(ListView):
|
|||||||
|
|
||||||
self.uistate.set_busy_cursor(False)
|
self.uistate.set_busy_cursor(False)
|
||||||
|
|
||||||
|
def delete_multi_person_response(self, handles=None):
|
||||||
|
"""
|
||||||
|
Deletes multiple persons from the database.
|
||||||
|
"""
|
||||||
|
# set the busy cursor, so the user knows that we are working
|
||||||
|
self.uistate.set_busy_cursor(True)
|
||||||
|
self.uistate.progress.show()
|
||||||
|
self.uistate.push_message(self.dbstate, _("Processing..."))
|
||||||
|
hndl_cnt = len(handles) / 100
|
||||||
|
self.dbstate.db.disable_signals()
|
||||||
|
|
||||||
|
# create the transaction
|
||||||
|
with DbTxn('', self.dbstate.db) as trans:
|
||||||
|
for (indx, handle) in enumerate(handles):
|
||||||
|
person = self.dbstate.db.get_person_from_handle(handle)
|
||||||
|
self.dbstate.db.delete_person_from_database(person, trans)
|
||||||
|
self.uistate.pulse_progressbar(indx / hndl_cnt)
|
||||||
|
trans.set_description(_("Multiple Selection Delete"))
|
||||||
|
|
||||||
|
self.dbstate.db.enable_signals()
|
||||||
|
self.dbstate.db.request_rebuild()
|
||||||
|
self.uistate.progress.hide()
|
||||||
|
self.uistate.set_busy_cursor(False)
|
||||||
|
|
||||||
def remove_object_from_handle(self, handle):
|
def remove_object_from_handle(self, handle):
|
||||||
"""
|
"""
|
||||||
The remove_selected_objects method is not called in this view.
|
The remove_selected_objects method is not called in this view.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user