2424
2525
2626class UploadWidget (QtWidgets .QWidget ):
27- upload_finished = QtCore .pyqtSignal ()
27+ upload_finished = QtCore .pyqtSignal (dict )
2828
2929 def __init__ (self , * args , ** kwargs ):
3030 """Manage running uploads
@@ -369,7 +369,7 @@ def prepare_quit(self):
369369
370370
371371class UploadTableWidget (QtWidgets .QTableWidget ):
372- upload_finished = QtCore .pyqtSignal ()
372+ upload_finished = QtCore .pyqtSignal (dict )
373373 job_selected = QtCore .pyqtSignal (object )
374374
375375 def __init__ (self , * args , ** kwargs ):
@@ -450,12 +450,25 @@ def on_upload_finished(self, dataset_id):
450450 if dataset_id not in self ._finished_uploads :
451451 self ._finished_uploads .append (dataset_id )
452452 self .jobs .jobs_eternal .set_job_done (dataset_id )
453- self .upload_finished .emit ()
453+ api = get_ckan_api ()
454+ try :
455+ ds_dict = api .get ("package_show" ,
456+ id = dataset_id ,
457+ timeout = 3 )
458+ self .upload_finished .emit (ds_dict )
459+ except BaseException :
460+ self .logger .error (tb .format_exc ())
454461
455462 @QtCore .pyqtSlot ()
456463 def update_job_status (self ):
457464 """Update UI with information from self.jobs (UploadJobList)"""
465+ # Let everyone know when a job is done
466+ for job in self .jobs :
467+ if job .state == "done" :
468+ self .on_upload_finished (job .dataset_id )
469+
458470 if not self .isVisible () or not self .jobs :
471+ # Don't update the UI if nobody is looking anyway.
459472 return
460473 # disable updates
461474 self .setUpdatesEnabled (False )
@@ -471,8 +484,6 @@ def update_job_status(self):
471484 self .set_label_item (row , 2 , status ["state" ])
472485 self .set_label_item (row , 3 , job .get_progress_string ())
473486 self .set_label_item (row , 4 , job .get_rate_string ())
474- if status ["state" ] == "done" :
475- self .on_upload_finished (job .dataset_id )
476487 self .set_actions_item (row , 5 , job )
477488
478489 # spacing (did not work in __init__)
0 commit comments