'Called once deletion is done on the device'

def books_deleted(self, job):

    (cv, row) = (self.current_view(), (-1))
    if (cv is not self.library_view):
        row = cv.currentIndex().row()
    for view in (self.memory_view, self.card_a_view, self.card_b_view):
        view.model().deletion_done(job, job.failed)
    if job.failed:
        self.device_job_exception(job)
        return
    dm = self.iactions['Remove    Books'].delete_memory
    if (job in dm):
        (paths, model) = dm.pop(job)
        self.device_manager.remove_books_from_metadata(paths, self.booklists())
        model.paths_deleted(paths)
    if (not self.set_books_in_library(self.booklists(), reset=True, add_as_step_to_job=job, do_device_sync=False)):
        self.upload_booklists(job)
    self.refresh_ondevice()
    if (row > (-1)):
        cv.set_current_row(row)
    try:
        if (not self.current_view().currentIndex().isValid()):
            self.current_view().set_current_row()
        self.current_view().refresh_book_details()
    except:
        traceback.print_exc()
