def evt_remove_dataset(self, parent): from esgcet.publish import pollDatasetPublicationStatus # Start the busy routine to indicate to the users something is happening parent.busyCursor = 'watch' parent.busyWidgets = [ parent.pane2.pane('EditPaneTop'), parent.pane2.pane('EditPaneBottom'), parent.pane2.pane('EditPaneStatus'), parent.pane.pane('ControlPane') ] pub_busy.busyStart(parent) datasetNames = [] GUI_line = {} DELETE = 1 #UNPUBLISH = 2 NO_OPERATION = 3 DeleteLocalDB = pub_expand_deletion_control_gui.deletion_widgets.get_CheckBox1( ) # DeleteLocalDB DeleteGateway = pub_expand_deletion_control_gui.deletion_widgets.get_CheckBox2( ) # DeleteGateway DeleteThredds = pub_expand_deletion_control_gui.deletion_widgets.get_CheckBox3( ) # DeleteThredds selected_page = parent.main_frame.selected_top_page if selected_page is not None: tab_name = parent.top_notebook.getcurselection() for x in parent.main_frame.top_page_id[selected_page]: if parent.main_frame.top_page_id[selected_page][x].cget( 'bg') != 'salmon' and parent.main_frame.top_page_id2[ selected_page][x].cget('bg') != 'salmon': dset_name = parent.main_frame.top_page_id2[selected_page][ x].cget('text') #dsetVersionName1 = self.parent.parent.main_frame.top_page_id2v[selected_page][x].cget('text') #query_name, dset_version = parseDatasetVersionId(dsetVersionName1) """ ganz I am modifying this so that if a user selects a dataset without a version then we delete all versions of that dataset""" try: dset_version = parent.main_frame.version_label[ selected_page][x].cget('text') except: dset_version = -1 #print 'Delete all versions' #dset_version = 1 if (dset_version == 'N/A' or not dset_version): dset_version = -1 # continue # not published, yet # Only delete published events status = pollDatasetPublicationStatus( dset_name, self.Session) if status == 3 or DeleteGateway or DeleteThredds or DeleteLocalDB: #datasetNames.append(generateDatasetVersionId((dset_name, dset_version))) datasetNames.append([ dset_name, dset_version ]) # ganz create name/version to delete else: parent.main_frame.top_page_id[selected_page][ x].configure(relief='raised', background='salmon', image=self.off) GUI_line[dset_name] = x else: if parent.main_frame.top_page_id2[selected_page][x].cget( 'bg') == 'salmon': parent.main_frame.top_page_id[selected_page][ x].configure(relief='raised', background='salmon', image=self.off) else: warning( "%d: No pages generated for selection. Remove is only used to remove datasets from the Publisher." % logging.WARNING) # Remove dataset from the gateway, etc. if ((DeleteGateway == 0 or DeleteThredds == 0) and DeleteLocalDB == 1): ans = self.warn_On_Removal() if (ans == FALSE): return if DeleteGateway == 1: gatewayOp = DELETE else: gatewayOp = NO_OPERATION # now decide if there is anything to do if (gatewayOp == 1 or DeleteThredds == 1 or DeleteLocalDB == 1): las = False thredds = (DeleteThredds == 1) deleteDset = (DeleteLocalDB == 1) testProgress = (parent.parent.statusbar.show, 0, 100) status_dict = deleteDatasetList(datasetNames, self.Session, gatewayOp, thredds, las, deleteDset, progressCallback=testProgress) # Show the published status try: for x in status_dict.keys(): status = status_dict[x] parent.main_frame.status_label[selected_page][ GUI_line[x]].configure( text=pub_controls.return_status_text(status)) except: pass pub_busy.busyEnd(parent) # ganz refresh [if there were no exceptions] dataset list after deletions parent.pub_buttonexpansion.query_widgets.parent.parent.ntk.evt_refresh_list_of_datasets( selected_page)
def show_extracted_info( self, datasets, dset_error, list_fields, versionObjs ): # set the color for each item in the row dcolor1 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.8 ) dcolor2 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.7 ) dcolor3 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.5 ) dcolor4 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.6 ) dcolor5 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.7 ) dcolor6 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.8 ) dcolor7 = Pmw.Color.changebrightness(self.parent.parent, 'aliceblue', 0.85 ) selected_page = self.parent.parent.main_frame.selected_top_page dobj = {} for dset,versobj in zip(datasets,versionObjs): dobj[(dset.name,versobj.version)] = (dset,versobj) if dset.getVersion()==versobj.version: dobj[(dset.name,-1)] = (dset,versobj) #t_version = -1 #for x in self.parent.parent.main_frame.top_page_id[selected_page]: # dset_row = self.parent.parent.main_frame.top_page_id[selected_page][x].cget('text') # dset_text = self.parent.parent.main_frame.top_page_id2[selected_page][x].cget('text') # dsetName,dsetVers = parseDatasetVersionId(dset_text) # if (dsetVers > t_version): # t_version = dsetVers #print 'Highest version is %s' % t_version for x in self.parent.parent.main_frame.top_page_id[selected_page]: dset_row = self.parent.parent.main_frame.top_page_id[selected_page][x].cget('text') dset_text = self.parent.parent.main_frame.top_page_id2[selected_page][x].cget('text') #if (self.parent.parent.main_frame.) # ganz added this 1/21/11 NOT NEC # if (self.parent.parent.main_frame.version_label[selected_page] ): # dsetName = self.parent.parent.main_frame.top_page_id2[selected_page][x].cget('text') # dsetVers = self.parent.parent.main_frame.version_label[selected_page][x].cget('text') ##################################################################################### # else: dsetName,dsetVers = parseDatasetVersionId(dset_text) dsetId = (dsetName,dsetVers) if dsetId in dobj.keys(): dset, versobj = dobj[dsetId] dsetVersionName = generateDatasetVersionId((dset.name, versobj.version)) if self.parent.parent.main_frame.top_page_id[selected_page][x].cget('relief') == 'raised': frame = self.parent.parent.main_frame.add_row_frame[selected_page][x] if not dset.has_warnings(self.Session): ok_err = Tkinter.Button( frame, text = 'Ok', bg = dcolor1, highlightcolor = dcolor1, width = 4, relief = 'sunken') #was 4 else: warningLevel = dset.get_max_warning_level(self.Session) if warningLevel>=ERROR_LEVEL: buttonColor = "pink" buttonText = "Error" else: buttonColor = "yellow" buttonText = "Warning" ok_err = Tkinter.Button( frame, text = buttonText, bg = buttonColor, width = 4, ## was 4 ganz relief = 'raised', command = pub_controls.Command( self.error_extraction_button,dset ) ) #ok_err.grid(row = dset_row, column = 1, sticky = 'nsew') #self.parent.parent.main_frame.ok_err[selected_page][x] = ok_err ok_err.grid(row = dset_row, column = 1, sticky = 'nsew') self.parent.parent.main_frame.ok_err[selected_page][x] = ok_err status = pollDatasetPublicationStatus(dset.get_name(self.Session), self.Session) status_text = pub_controls.return_status_text( status ) self.parent.parent.main_frame.status_label[selected_page][x] = Tkinter.Label( frame, text = status_text, bg = dcolor1, width = 10, relief = 'sunken') # 4 was 10 self.parent.parent.main_frame.status_label[selected_page][x].grid(row = dset_row, column = 2, sticky = 'nsew') if 'id' in list_fields: id = Tkinter.Label( frame, text = `dset.id`, bg = dcolor2, width = 6, relief = 'sunken') id.grid(row = dset_row, column = 3, sticky = 'nsew') #ganz adding rows here...need to add versions #dset.name, versobj.version ver_1 = versobj.version if (ver_1 ==-1): ver_1 = "N/A" # ganz TODO test this to see if this records the version 1/12/11 """ Ganz: this code is a test to see if I can save the version label, 1/17/11 comment out the top code and insert the rest """ #version = Tkinter.Label( frame, text = ver_1, bg = dcolor2, width = 6, relief = 'sunken') #version.grid(row = dset_row, column = 4, sticky = 'nsew') # width was 6 column = 4 self.parent.parent.main_frame.version_label[selected_page][x] = Tkinter.Label( frame, text = ver_1, bg = dcolor2, width = 11, relief = 'sunken' ) self.parent.parent.main_frame.version_label[selected_page][x].grid(row = dset_row, column = 4, sticky = 'nsew') """ end of test """ #self.parent.parent.main_frame.version_label1[selected_page][x] = Tkinter.Label( frame, text = ver_1, bg = dcolor2, width = 6, relief = 'sunken') #self.parent.parent.main_frame.version_label1[selected_page][x].grid(row=dset_row,column = 4, columnspan=2, sticky = 'nsew') # create a menu # popup = Menu(version, tearoff=0) # popup.add_command(label="Show All Versions") # , command=next) etc... # popup.add_command(label="Show Latest Versions") # popup.add_separator() # popup.add_command(label="Home 3a") # def do_popupv1(event): # display the popup menu # try: # popup.tk_popup(event.x_root, event.y_root, 0) # finally: # make sure to release the grab (Tk 8.0a1 only) # popup.grab_release() # version.bind("<Button-3>", do_popupv1) self.parent.parent.main_frame.top_page_id2[selected_page][x].configure( width=71, relief='raised', bg = dcolor7, text=dset.name) #dsetVersionName) self.parent.parent.main_frame.top_page_id2[selected_page][x].grid(row=dset_row,column = 5, columnspan=2, sticky = 'nsew') # ganz add this code to enable users to view all the files/dates and times within a dataset # create a menu # popup = Menu(ok_err, tearoff=0) # popup.add_command(label="Show All Files", command=pub_controls.Command( self.file_display_button,dset )) # def do_popupv1(event): # display the popup menu # try: # popup.tk_popup(event.x_root, event.y_root, 0) # finally: # make sure to release the grab (Tk 8.0a1 only) # popup.grab_release() # self.parent.parent.main_frame.version_label[selected_page][x].bind("<Button-3>", self.evt_file_display_button) if 'project' in list_fields: project = Tkinter.Label( frame, text = dset.get_project(self.Session), bg = dcolor3, width = 20, relief = 'sunken', borderwidth = 2) project.grid(row = dset_row, column = 7, sticky = 'nsew') if 'model' in list_fields: model = Tkinter.Label( frame, text = dset.get_model(self.Session), bg = dcolor4, width = 20, relief = 'sunken', borderwidth = 2) model.grid(row = dset_row, column = 8, sticky = 'nsew') if 'experiment' in list_fields: experiment = Tkinter.Label( frame, text = dset.get_experiment(self.Session), bg = dcolor5, width = 20, relief = 'sunken', borderwidth = 2) experiment.grid(row = dset_row, column = 9, sticky = 'nsew') if 'run_name' in list_fields: run_name = Tkinter.Label( frame, text = dset.get_run_name(self.Session), bg = dcolor6, width = 20, relief = 'sunken', borderwidth = 2) run_name.grid(row = dset_row, column = 10, sticky = 'nsew') else: #GANZ tested removed and replaced this 3/20/2011 frame = self.parent.parent.main_frame.add_row_frame[selected_page][x] ok_err = Tkinter.Button( frame, text = 'N/A', bg = 'salmon', highlightcolor = dcolor1, width = 4, relief = 'sunken') #was dcolor1 ok_err.grid(row = dset_row, column = 1, sticky = 'nsew') status = Tkinter.Label( frame, text = 'N/A', bg = 'salmon', width = 10, relief = 'sunken') status.grid(row = dset_row, column = 2, sticky = 'nsew') id = Tkinter.Label( frame, text = 'N/A', bg = 'salmon', width = 6, relief = 'sunken') id.grid(row = dset_row, column = 3, sticky = 'nsew') # test ganz 1/17/11 #version = Tkinter.Label( frame, text = 'N/A', bg = dcolor2, width = 4, relief = 'sunken') #version.grid(row = dset_row, column = 4, sticky = 'nsew') # was dcolor2 self.parent.parent.main_frame.version_label[selected_page][x] = Tkinter.Label( frame, text = 'N/A', bg = dcolor2, width = 4, relief = 'sunken') self.parent.parent.main_frame.version_label[selected_page][x].grid(row = dset_row, column = 4, sticky = 'nsew') # same test as above self.parent.parent.main_frame.top_page_id2[selected_page][x].configure( width=71, relief='sunken', bg = 'salmon', fg = 'black' ) self.parent.parent.main_frame.top_page_id2[selected_page][x].grid(row=dset_row,column = 5, columnspan=2, sticky = 'nsew') x += 1
def evt_refresh_list_of_datasets(self, selected_page): # Start the busy routine to indicate to the users something is happening self.parent.parent.busyCursor = "watch" self.parent.parent.busyWidgets = [ self.parent.parent.pane2.pane("EditPaneTop"), self.parent.parent.pane2.pane("EditPaneBottom"), self.parent.parent.pane2.pane("EditPaneStatus"), self.parent.parent.pane.pane("ControlPane"), ] pub_busy.busyStart(self.parent.parent) try: if self.parent.parent.refreshButton[selected_page].cget("relief") == "raised": for x in self.parent.parent.main_frame.top_page_id[selected_page]: if self.parent.parent.main_frame.top_page_id[selected_page][x].cget("relief") == "raised": dsetVersionName = self.parent.parent.main_frame.top_page_id2[selected_page][x].cget("text") # ganz added this 1/18/11 query_name = self.parent.parent.main_frame.top_page_id2[selected_page][x].cget("text") versionNum = self.parent.parent.main_frame.version_label[selected_page][x].cget("text") ##################################################################################### query_name, versionNum = parseDatasetVersionId(dsetVersionName) # ganz TODO test only remove # print query_name # print versionNum status = pollDatasetPublicationStatus(query_name, self.Session) # ganz catch non selected Red entries to skip 3/20/2011 try: self.parent.parent.main_frame.status_label[selected_page][x].configure( text=pub_controls.return_status_text(status) ) except: continue # Make sure you update the Ok/Err button # ganz added this (1/18/11) here to catch the case when dset=None (e.g. no local db entry exists) dset = Dataset.lookup(query_name, self.Session) if dset == None: buttonColor = "yellow" buttonText = "Warning" self.parent.parent.main_frame.ok_err[selected_page][x].configure( bg=buttonColor, text=buttonText ) elif dset.has_warnings(self.Session): warningLevel = dset.get_max_warning_level(self.Session) if warningLevel >= ERROR_LEVEL: buttonColor = "pink" buttonText = "Error" else: buttonColor = "yellow" buttonText = "Warning" self.parent.parent.main_frame.ok_err[selected_page][x].configure( bg=buttonColor, text=buttonText ) except: pub_busy.busyEnd(self.parent.parent) # catch here in order to turn off the busy cursor ganz raise finally: pub_busy.busyEnd(self.parent.parent) # pub_busy.busyEnd( self.parent.parent ) info("Completed refreshing the display.")
def addQueryPageRow(self, num_tag, query_result, list_fields): # set the color for each item in the row dcolor1 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.8) dcolor2 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.7) dcolor3 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.5) dcolor4 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.6) dcolor5 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.7) dcolor6 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.8) dcolor7 = Pmw.Color.changebrightness(self.parent.parent, "aliceblue", 0.9) frame_ct = self.parent.parent.top_ct labelFont = tkFont.Font( self.parent.parent, family=pub_controls.collection_font_type, size=pub_controls.collection_font_size ) self.add_row_frame[num_tag] = self.pageFrame[frame_ct].interior() self.select_button[num_tag] = Tkinter.Button( self.add_row_frame[num_tag], # compound = Tkinter.LEFT, # justify = Tkinter.LEFT, # anchor = Tkinter.W, text=num_tag, # font = labelFont, image=self.on, bg=self.keycolor1, relief="raised", # width = 70, height=1, command=pub_controls.Command(self.evt_selected_dataset, num_tag), ) self.select_button[num_tag].image = self.on # save the image from garbage collection self.select_button[num_tag].grid(row=self.row, column=0, sticky="nsew") dset = Dataset.lookup(query_result[1], self.Session) if dset.has_warnings(self.Session): warningLevel = dset.get_max_warning_level(self.Session) if warningLevel >= ERROR_LEVEL: buttonColor = "pink" buttonText = "Error" else: buttonColor = "yellow" buttonText = "Warning" self.ok_err[num_tag] = Tkinter.Button( self.add_row_frame[num_tag], text=buttonText, bg=buttonColor, width=4, relief="raised", command=pub_controls.Command( self.parent.parent.pub_buttonexpansion.extraction_widgets.error_extraction_button, dset ), ) self.ok_err[num_tag].grid(row=self.row, column=1, sticky="nsew") else: self.ok_err[num_tag] = Tkinter.Button( self.add_row_frame[num_tag], text="Ok", bg=dcolor1, highlightcolor=dcolor1, width=4, relief="sunken" ) self.ok_err[num_tag].grid(row=self.row, column=1, sticky="nsew") status = pollDatasetPublicationStatus(query_result[1], self.Session) status_text = pub_controls.return_status_text(status) self.status[num_tag] = Tkinter.Label( self.add_row_frame[num_tag], text=status_text, bg=dcolor1, highlightcolor=dcolor1, width=10, relief="sunken" ) self.status[num_tag].grid(row=self.row, column=2, sticky="nsew") if "id" in list_fields: id = Tkinter.Label(self.add_row_frame[num_tag], text=query_result[0], bg=dcolor2, width=6, relief="sunken") id.grid(row=self.row, column=3, sticky="nsew") dsetName = query_result[1] versionNum = -1 try: versionIndex = list_fields.index("version") versionNum = string.atoi(query_result[versionIndex]) except: pass dsetTuple = (dsetName, versionNum) dsetName = generateDatasetVersionId(dsetTuple) # ganz adding rows here...need to add versions datasetName = dsetTuple[0] # dataset[0] #parseDatasetVersionId(dataset) versionno = dsetTuple[1] # dataset[1] ver_1 = versionno if ver_1 == -1: ver_1 = "N/A" self.select_labelV[num_tag] = Tkinter.Label( self.add_row_frame[num_tag], text=ver_1, bg=dcolor2, width=11, relief="sunken" ) self.select_labelV[num_tag].grid(row=self.row, column=4, sticky="nsew") self.select_label[num_tag] = Tkinter.Button( self.add_row_frame[num_tag], text=datasetName, # dsetName, font=labelFont, bg=self.keycolor2, relief="raised", borderwidth=2, anchor="w", justify="left", width=71, command=pub_controls.Command(self.evt_selected_dataset_text, dsetTuple, num_tag, 0), ) self.select_label[num_tag].grid(row=self.row, column=5, columnspan=2, sticky="nsew") if "project" in list_fields: project = Tkinter.Label( self.add_row_frame[num_tag], text=query_result[2], bg=dcolor3, width=20, relief="sunken", borderwidth=2 ) project.grid(row=self.row, column=7, sticky="nsew") if "model" in list_fields: model = Tkinter.Label( self.add_row_frame[num_tag], text=query_result[3], bg=dcolor4, width=20, relief="sunken", borderwidth=2 ) model.grid(row=self.row, column=8, sticky="nsew") if "experiment" in list_fields: experiment = Tkinter.Label( self.add_row_frame[num_tag], text=query_result[4], bg=dcolor5, width=20, relief="sunken", borderwidth=2 ) experiment.grid(row=self.row, column=9, sticky="nsew") if "run_name" in list_fields: run_name = Tkinter.Label( self.add_row_frame[num_tag], text=query_result[5], bg=dcolor6, width=20, relief="sunken", borderwidth=2 ) run_name.grid(row=self.row, column=10, sticky="nsew") self.add_row_frame[num_tag].grid_rowconfigure(self.row, weight=1) self.add_row_frame[num_tag].grid_columnconfigure(1, weight=1) if ( self.pageFrame[frame_ct].cget("horizflex") == "expand" or self.pageFrame[frame_ct].cget("vertflex") == "expand" ): self.pageFrame[frame_ct].reposition() self.row = self.row + 1 # increment to the next dataset row
def evt_remove_dataset(self, parent): from esgcet.publish import pollDatasetPublicationStatus # Start the busy routine to indicate to the users something is happening parent.busyCursor = 'watch' parent.busyWidgets = [parent.pane2.pane( 'EditPaneTop' ), parent.pane2.pane( 'EditPaneBottom' ), parent.pane2.pane( 'EditPaneStatus' ), parent.pane.pane( 'ControlPane' )] pub_busy.busyStart( parent ) datasetNames = [] GUI_line = {} DELETE = 1 #UNPUBLISH = 2 NO_OPERATION = 3 DeleteLocalDB = pub_expand_deletion_control_gui.deletion_widgets.get_CheckBox1() # DeleteLocalDB DeleteGateway = pub_expand_deletion_control_gui.deletion_widgets.get_CheckBox2() # DeleteGateway DeleteThredds = pub_expand_deletion_control_gui.deletion_widgets.get_CheckBox3() # DeleteThredds selected_page = parent.main_frame.selected_top_page if selected_page is not None: tab_name = parent.top_notebook.getcurselection() for x in parent.main_frame.top_page_id[selected_page]: if parent.main_frame.top_page_id[selected_page][x].cget('bg') != 'salmon' and parent.main_frame.top_page_id2[selected_page][x].cget('bg') != 'salmon': dset_name = parent.main_frame.top_page_id2[selected_page][x].cget('text') #dsetVersionName1 = self.parent.parent.main_frame.top_page_id2v[selected_page][x].cget('text') #query_name, dset_version = parseDatasetVersionId(dsetVersionName1) """ ganz I am modifying this so that if a user selects a dataset without a version then we delete all versions of that dataset""" try: dset_version = parent.main_frame.version_label[selected_page][x].cget('text') except: dset_version = -1 #print 'Delete all versions' #dset_version = 1 if (dset_version == 'N/A' or not dset_version): dset_version = -1 # continue # not published, yet # Only delete published events status = pollDatasetPublicationStatus(dset_name, self.Session) if status == 3 or DeleteGateway or DeleteThredds or DeleteLocalDB: #datasetNames.append(generateDatasetVersionId((dset_name, dset_version))) datasetNames.append([dset_name, dset_version]) # ganz create name/version to delete else: parent.main_frame.top_page_id[selected_page][x].configure(relief = 'raised', background = 'salmon', image = self.off) GUI_line[ dset_name ] = x else: if parent.main_frame.top_page_id2[selected_page][x].cget('bg') == 'salmon': parent.main_frame.top_page_id[selected_page][x].configure(relief = 'raised', background = 'salmon', image = self.off) else: warning("%d: No pages generated for selection. Remove is only used to remove datasets from the Publisher." % logging.WARNING) # Remove dataset from the gateway, etc. if ((DeleteGateway==0 or DeleteThredds==0) and DeleteLocalDB==1) : ans = self.warn_On_Removal() if (ans == FALSE): return if DeleteGateway==1: gatewayOp = DELETE else: gatewayOp = NO_OPERATION # now decide if there is anything to do if (gatewayOp==1 or DeleteThredds==1 or DeleteLocalDB==1) : las=False thredds = (DeleteThredds==1) deleteDset = (DeleteLocalDB==1) testProgress = (parent.parent.statusbar.show, 0, 100) status_dict = deleteDatasetList(datasetNames, self.Session, gatewayOp, thredds, las, deleteDset, progressCallback=testProgress) # Show the published status try: for x in status_dict.keys(): status = status_dict[ x ] parent.main_frame.status_label[selected_page][GUI_line[x]].configure(text=pub_controls.return_status_text( status) ) except: pass pub_busy.busyEnd( parent ) # ganz refresh [if there were no exceptions] dataset list after deletions parent.pub_buttonexpansion.query_widgets.parent.parent.ntk.evt_refresh_list_of_datasets(selected_page )