def FilePicker_compareScenariosOnFileChanged(self, event): valid_extension = ['xlsx'] self.path = self.FilePicker_compareScenarios.GetPath() if not (self.path.split('.')[-1] in valid_extension): message = msg_somethigWrong(None, msg="Please select a valid Excel File") message.ShowModal() return print 'This is working just fine...' print self.path book2 = load_workbook(self.path) # bring all the checks below to up here? sheetnames = [ "ChangeInTopology", "ChangeInMetadata_Topology", "ChangeInMetadata_Attributes", "ChangeInValues" ] for name in sheetnames: if not name in book2.sheetnames: book2.close() message = msg_somethigWrong( None, msg="Please select a valid Excel File") message.ShowModal() return book2.close()
def btn_yesOnButtonClick(self, event): conn = DB_Setup() if conn.get_session(): conn.close_db() if not conn.get_session(): topframe = wx.GetApp().GetTopWindow() topframe.SetTitle(topframe.GetTitle().split(':')[0]) self.disconnectResult = True from Messages_forms.msg_infos import msg_infos msg_infos(topframe, msg='\nDatabase disconnected successfully\n\n"' + define.dbName + '" session has been disconnected').Show() else: from Messages_forms.msg_somethigWrong import msg_somethigWrong msg_somethigWrong(None, msg='"' + define.dbName + '"database disconnection failed').Show() else: from Messages_forms.msg_somethigWrong import msg_somethigWrong msg_somethigWrong(None, msg='No "' + define.dbName + '" Connection Found').Show() self.Close()
def btn_testOnButtonClick(self, event): """ Used to test the connection given the user's credentials :param event: :return: """ error = self.evaluator() if error: msg_somethigWrong(self.topframe, '\n\n' + error).Show() else: from Messages_forms.msg_connSQLiteSuccs import msg_connSQLiteSuccs msgdlg = msg_connSQLiteSuccs(self.topframe) msgdlg.setMessage(u"\n\nSuccessful connection to mysql db with name \'" + self.db_name + u"\'" + u"\n\n Please click the button \'connect and save connection\'") msgdlg.Show()
def check_validation(self): # Check whether user select needed item correctly from viewer.Messages_forms.generalMsgDlg import messageDlg msg = "" if self.path is None or self.path == "": msg = "Warning!\n Please select a valid wml file." elif self.wml_str is None or self.wml_str == "": msg = "Warning!\n The selected file could not be opened. Please select a valid wml file." if msg != "": instance = messageDlg(None) instance.setMessage(msg) instance.ShowModal() instance.Destroy() return False #///////////////////////////////////////////////////////////////////////# # Check whether Sqlite db is connected. setup = DB_Setup() if not setup.get_session(): message = msg_somethigWrong( None, msg= '\n\n\nError, No Database connection found, Please first connect to a database.' ) message.ShowModal() return False #///////////////////////////////////////////////////////////////////////# return True
def check_validation(self): # Check whether user select needed items correctly from viewer.Messages_forms.generalMsgDlg import messageDlg msg = "" if self.comboBox_Code.Value is None or self.comboBox_Code.Value == "": msg = "Warning!\n'Site Code' field can not be empty. Please provide CUAHSI Site Code." elif self.comboBox_VariableCode.Value is None or self.comboBox_VariableCode.Value == "": msg = "Warning!\n'Variable Code' field can not be empty. Please provide CUAHSI Variable Code." elif self.m_textCtrl24.Value is None or self.m_textCtrl24.Value == "": msg = "Warning!\n'Time Series Begin Date' field can not be empty. Please provide Time Series Begin Date [yyyy-mm-dd]." elif self.m_textCtrl25.Value is None or self.m_textCtrl25.Value == "": msg = "Warning!\n'Time Series End Date' field can not be empty. Please provide Time Series End Date [yyyy-mm-dd]." if msg != "": instance = messageDlg(None) instance.setMessage(msg) instance.ShowModal() instance.Destroy() return False #///////////////////////////////////////////////////////////////////////# # Check whether Sqlite db is connected. setup = DB_Setup() if not setup.get_session(): message = msg_somethigWrong( None, msg= '\n\n\nError, No Database Found, Please first connect to a database.' ) message.ShowModal() return False #///////////////////////////////////////////////////////////////////////# return True
def test_db_conn(self): setup = DB_Setup() if not setup.get_session(): message = msg_somethigWrong( None, msg= '\n\n\nError, No database Found. Please first connect to a database.' ) message.Show() return False return True
def write2excel(self, resutl_list, startRow, sheet): try: for row_id, row in enumerate(resutl_list): for col_id, cell in enumerate(row): sheet.cell(row=row_id + startRow, column=col_id + 1, value=cell) except Exception as e: print e messageDlg = msg_somethigWrong(None, msg=e.message) messageDlg.Show() raise Exception(e.message)
def btn_connectOnButtonClick(self, event): error = self.evaluator() if error: msg_somethigWrong(self.topframe, '\n\n' + error).Show() return else: setup = DB_Setup() # test if the user is already connected to a database, if so, user is asked to disconnect if setup.get_session(): msg_somethigWrong(None, msg='\n\nError: You are already connected to a database. \n\n to use another' ' database, you need to disconnect from the current one').Show() return # connects to mysql database given the sql_string setup.connect('', db_type='mysql', sql_string=self.sql_string) self.topframe.SetTitle(self.topframe.GetTitle() + ' ::: You are connected to MySQL DB ' + self.db_name) from Messages_forms.msg_connSQLiteSuccs import msg_connSQLiteSuccs msgdlg = msg_connSQLiteSuccs(self.topframe) msgdlg.setMessage(u"\n\nSuccessfully connected to mysql db with name \'" + self.db_name + u"\'") msgdlg.Show() # Create WaMDaMVersion table and fills it the version number declared in define.py file obj_cat = SqlAlchemy.WaMDaMVersion() try: qeury = setup.get_session().query(SqlAlchemy.WaMDaMVersion).first().VersionNumber except: obj_cat.VersionNumber = define.version setup.push_data(obj_cat) setup.add_data() self.Close()
def btn_RetrieveDataOnButtonClick(self, event): from suds.client import Client # self.m_textCtrl22.Value = 'NWISUV:10105900' # self.m_textCtrl23.Value = 'NWISUV:00060' # self.m_textCtrl24.Value = '2016-10-20' # self.m_textCtrl25.Value = '2016-11-06' # Check whether user select needed items correctly validation_check = self.check_validation() if not validation_check: return # Create the inputs needed for the web service call //daily values wsdlURL = 'http://hydroportal.cuahsi.org/nwisdv/cuahsi_1_1.asmx?WSDL' # siteCode = self.m_textCtrl22.Value #'NWISUV:10105900' # variableCode = self.m_textCtrl23.Value #'NWISUV:00060' siteCode = self.comboBox_Code.Value #'NWISUV:10105900' variableCode = self.comboBox_VariableCode.Value #'NWISUV:00060' beginDate = self.m_textCtrl24.Value #'2016-10-20' endDate = self.m_textCtrl25.Value #'2016-11-06' #siteCode= NWISUV:10039500 for BEAR RIVER AT BORDER, WY # variableCode NWISDV:00060/DataType=Mean for Discharge, cubic feet per second # Create a new object named "NWIS" for calling the web service methods NWIS = Client(wsdlURL).service # Call the GetValuesObject method to return datavalues try: self.response = NWIS.GetValuesObject(siteCode, variableCode, beginDate, endDate) except Exception as e: message = msg_somethigWrong( None, msg= '\n\n\nError, The provided values do not have data in the server.\nPlease make sure to enter correct values.' ) message.ShowModal() return self.btn_Load.Enabled = True # Get the site's name from the response siteName = self.response.timeSeries[0].sourceInfo.siteName
def FilePicker_SpreadsheetOnFileChanged(self, event): valid_extension = ['xlsx', 'xlsm'] self.path = self.FilePicker_Spreadsheet.GetPath() self.selectedExcelFileName = self.path.split('\\')[-1] if not (self.path.split('.')[-1] in valid_extension): self.Destroy() if define.logger != None: define.logger.error("A non excel file was selected, \n\n" " Please select a valid Excel File") message = msg_somethigWrong( None, msg="A non excel file was selected, \n\n" " Please select a valid Excel File") message.Show() else: if define.logger != None: define.logger.info("'" + self.selectedExcelFileName + "'was selected.\n")
def FilePicker_RwiseFileOnFileChanged(self, event): # TODO: Implement FilePicker_RwiseFileOnFileChanged valid_extension = ['wml'] self.path = self.FilePicker_RwiseFile.GetPath() self.selectedWmlFileName = self.path.split('\\')[-1] if not (self.path.split('.')[-1] in valid_extension): self.Destroy() if define.logger != None: define.logger.error("A non wml file was selected, \n\n" " Please select a valid wml File") message = msg_somethigWrong(None, msg="A non wml file was selected, \n\n" " Please select a valid wml File") message.Show() else: if define.logger != None: define.logger.info("'" + self.selectedWmlFileName + "'was selected.\n")
def __init__(self, parent): WaMDaMWizard.dlg_ExportScenarioDataToExcel.__init__(self, parent) self.path = '' try: if not DB_Setup().get_session(): msg = "\n\nWarning: Please connect to sqlite first." raise Exception(msg) ''' init combo model''' self.dataStructure = GetResourceStructure() self.datasets = self.dataStructure.GetResourceType() list_acromy = list() for index, row in self.datasets.iterrows(): list_acromy.append(row[0]) if list_acromy.__len__() > 0: self.comboBox_selectModel.SetItems(list_acromy) except Exception as e: message = msg_somethigWrong(None, msg=e.message) message.Show() self.Destroy()
def __init__(self, parent): WaMDaMWizard.dlg_compare_scenarios.__init__(self, parent) self.path = '' try: if not self.checkConnectingToSqlite(): msg = "\n\nWarning: Please connect to sqlite first." raise Exception(msg) ''' init model combobox''' self.dataStructure = GetResourceStructure() self.instances = GetInstancesBySenario() self.datasets = self.dataStructure.GetResourceType() self.compareScenarios = GetComapreScenarios() list_acromy = list() for index, row in self.datasets.iterrows(): list_acromy.append(row["ResourceTypeAcronym"]) if list_acromy.__len__() > 0: self.comboBox_selectModel.SetItems(list_acromy) except Exception as e: message = msg_somethigWrong(None, msg=e.message) message.ShowModal() self.Destroy()
def check_validation(self): # Check whether user select needed items correctly from viewer.Messages_forms.generalMsgDlg import messageDlg msg = "" if self.comboBox_State.Value == None or self.comboBox_State.Value == "": msg = "Warning!\n'State' field can not be empty. Please select a state." elif self.comboBox_PlanningBasin.Value == None or self.comboBox_PlanningBasin.Value == "": msg = "Warning!\n'Planing Basin' field can not be empty. Please select a planing basin." elif self.comboBox_year1.Value == None or self.comboBox_year1.Value == "": msg = "Warning!\n'Year' field can not be empty. Please select begining year." elif self.comboBox_year2.Value == None or self.comboBox_year2.Value == "": msg = "Warning!\n'Year' field can not be empty. Please select end year." elif int(self.comboBox_year1.Value) > int(self.comboBox_year2.Value): msg = "Warning!\n'End Year' must be more than 'Begining Year'. Please select again." if msg != "": instance = messageDlg(None) instance.setMessage(msg) instance.ShowModal() instance.Destroy() return False #///////////////////////////////////////////////////////////////////////# # Check whether Sqlite db is connected. setup = DB_Setup() if not setup.get_session(): message = msg_somethigWrong( None, msg= '\n\n\nError, No Database connection found, Please first connect to a database.' ) message.ShowModal() return False #///////////////////////////////////////////////////////////////////////# return True
def btn_Export_ScenarioDataOnButtonClick(self, event): selectedDataset = self.comboBox_selectModel.Value selectedMasterNetworkName = self.comboBox_selectNetwork.Value selectedScenarioName = self.comboBox_selectScenario.Value # Check whether user select needed items correctly message = '' if (selectedDataset == None or selectedDataset == ''): message = 'Select the resource type (e.g, model name) in WamDam.' elif selectedMasterNetworkName == None or selectedMasterNetworkName == '': message = 'Select the MasterNetworkName.' elif selectedScenarioName == None or selectedScenarioName == '': message = 'Select the ScenarioName.' elif not ['xls', 'xlsx', 'xlsm', 'xls'].__contains__( self.path.split('.')[-1]): message = 'Please provide a directory for the output excel file.' if message != '': messageDlg = msg_somethigWrong(None, msg=message) messageDlg.ShowModal() return print 'this is done' try: self.btn_Export_ScenarioData.Enabled = False exportTemplate = ExportTemplate(self.path) #################################################### # Rescour Type structure #################################################### ResourceType_Result_df = GetResourceStructure() ObjectTypes_Result_df = GetResourceStructure() Attributes_Result_df = GetResourceStructure() resources_result = ResourceType_Result_df.GetResourceType( selectedDataset) data_result = ObjectTypes_Result_df.GetObjectTypesByResource( selectedDataset) exportTemplate.exportResourcesType(resources_result, data_result) # data_result = ObjectTypes_Result_df.GetObjectTypesByResource(selectedDataset) # exportTemplate.exportObjecttypes(data_result) attributes_result = Attributes_Result_df.GetAttributesByResource( selectedDataset) print "Count of attrs data: {}".format(str(len(attributes_result))) exportTemplate.exportAttributes(attributes_result) #################################################### # Metadata #################################################### Organizations_Result_df = GetMetadataByScenario() People_Result_df = GetMetadataByScenario() Sources_Result_df = GetMetadataByScenario() Methods_Result_df = GetMetadataByScenario() organization_result = Organizations_Result_df.GetOrganizationsByScenario( selectedDataset, selectedMasterNetworkName, selectedScenarioName) exportTemplate.exportOrganizations(organization_result) people_result = People_Result_df.GetPeopleByScenario( selectedDataset, selectedMasterNetworkName, selectedScenarioName) exportTemplate.exportPeople(people_result) source_result = Sources_Result_df.GetSourcesByScenario( selectedDataset, selectedMasterNetworkName, selectedScenarioName) exportTemplate.exportSources(source_result) method_result = Methods_Result_df.GetMethodsByScenario( selectedDataset, selectedMasterNetworkName, selectedScenarioName) exportTemplate.exportMethods(method_result) #################################################### # Instances #################################################### Network_Result_df = GetInstancesBySenario() Scenarios_Result_df = GetInstancesBySenario() Nodes_Result_df = GetInstancesBySenario() Links_Result_df = GetInstancesBySenario() network_data_result = Network_Result_df.GetMasterNetworks( selectedDataset) exportTemplate.exportMasterNetwork(network_data_result) scenarios_data_result = Scenarios_Result_df.GetScenarios( selectedDataset, selectedMasterNetworkName) exportTemplate.exportScenario(scenarios_data_result) nodes_data_result = Nodes_Result_df.GetNodesByScenario( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of Nodes data: {}".format(str(len(nodes_data_result))) exportTemplate.exportNodes(nodes_data_result) links_data_result = Links_Result_df.GetLinksByScenario( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of links data: {}".format(str(len(links_data_result))) exportTemplate.exportLinkes(links_data_result) print 'Good' #################################################### # Data Values #################################################### NumericValues_Result_df = GetAllValuesByScenario() CategoricalValues_Result_df = GetAllValuesByScenario() TextFreeValues_Result_df = GetAllValuesByScenario() SeasonalNumericValues_Result_df = GetAllValuesByScenario() TimeSeries_Result_df = GetAllValuesByScenario() TimeSeriesValues_Result_df = GetAllValuesByScenario() MultiColumns_Result_df = GetAllValuesByScenario() Numeric_result_list = NumericValues_Result_df.GetAllNumericValues( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of Numeric data: {}".format( str(len(Numeric_result_list))) exportTemplate.exportNumericValue(Numeric_result_list) result_list = CategoricalValues_Result_df.GetAllCategoricalValues( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of Categorical data: {}".format(str(len(result_list))) exportTemplate.exportCategoricalValues(result_list) result_list = TextFreeValues_Result_df.GetAllTextFree( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of TextFree data: {}".format(str(len(result_list))) exportTemplate.exportFreeText(result_list) result_list = SeasonalNumericValues_Result_df.GetAllSeasonalNumericValues( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of SeasonalNumeric data: {}".format( str(len(result_list))) exportTemplate.exportSeasonal(result_list) result_list = TimeSeries_Result_df.GetAllTimeSeries( selectedDataset, selectedMasterNetworkName, selectedScenarioName) print "Count of Timeseries data: {}".format(str(len(result_list))) exportTemplate.exportTimeSeries(result_list) result_list = TimeSeriesValues_Result_df.GetAllTimeSeriesValues( selectedDataset, selectedMasterNetworkName, selectedScenarioName) result_list['DateTimeStamp'] = pd.to_datetime( result_list.DateTimeStamp).apply( lambda x: x.strftime('%m/%d/%Y')) print "Count of Timeseriesvalues data: {}".format( str(len(result_list))) exportTemplate.exportTimeSeriesValues(result_list) # multiple columns up_table_column_result, bottom_table_result = MultiColumns_Result_df.GetAllMultiAttributeSeries( selectedDataset, selectedMasterNetworkName, selectedScenarioName) exportTemplate.exportMulti(up_table_column_result, bottom_table_result) from Messages_forms.msg_successLoadDatabase import msg_successLoadDatabase instance = msg_successLoadDatabase(None) instance.m_staticText1.SetLabel( "Successfully exported the data into the Excel template") instance.ShowModal() self.btn_Export_ScenarioData.Enabled = True self.Destroy() except Exception as e: messageDlg = msg_somethigWrong(None, msg=e.message) messageDlg.Show() self.btn_Export_ScenarioData.Enabled = True
def load_data(self): def metaData(msgDlg): define.logger.info("Start metaData load.") try: instance = LoadMetaData(obj) instance.load_data() msgDlg.guage.SetValue(3) define.logger.info("MetaData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed metaData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle("Sorry: something went wrong") # message.setMessage('{} \n\n [*] Could not Load MetaData'.format(e)) # message.Show() raise Exception(e.message) def cvData(msgDlg): define.logger.info("Start cvData load.") try: instance = Load_CV_To_DB(obj) instance.load_data() msgDlg.guage.SetValue(2) define.logger.info("CvData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed cvData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load DataValues Data'.format(e)) # message.Show() raise Exception(e.message) def structData(msgDlg): define.logger.info("Start structData load.") try: instance = Load_Struct_To_DB(obj) instance.load_data(struct_sheets_ordered) msgDlg.guage.SetValue(4) define.logger.info( "StructData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed structData load.\n' + e.message) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load Structure Data'.format(e)) # message.Show() raise Exception(e.message) def networksData(msgDlg): define.logger.info("Start networksData load.") try: instance = Load_Networks_Data(obj) instance.load_data() msgDlg.guage.SetValue(5) define.logger.info( "NetworksData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed network Data load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load Network Data'.format(e)) # message.Show() raise Exception(e.message) def descriptorValues(msgDlg): define.logger.info("Start Categorical Data load.") try: instance = LoadCategoricalValues(obj) instance.load_data() msgDlg.guage.SetValue(6) define.logger.info( "Categorical data load was finished successfully.") return instance except Exception as e: define.logger.error('Failed Categorical data load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load TextFree Data'.format(e)) # message.Show() raise Exception(e.message) def freeText(msgDlg): define.logger.info("Start textFreeData load.") try: instance = LoadFreeTextValues(obj) instance.load_data() msgDlg.guage.SetValue(7) define.logger.info( "TextFreeData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed textFreeData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load TextFree Data'.format(e)) # message.Show() raise Exception(e.message) def numericValues(msgDlg): define.logger.info("Start paramsData load.") try: instance = LoadNumericValues(obj) instance.load_data() msgDlg.guage.SetValue(8) define.logger.info( "ParamsData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed paramsData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load Parameters Data'.format(e)) # message.Show() raise Exception(e.message) def seasonalNumericValues(msgDlg): define.logger.info("Start seasonParamsData load.") try: instance = LoadSeasonalNumericValues(obj) instance.load_data() msgDlg.guage.SetValue(9) define.logger.info( "SeasonParamsData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed seasonParamsData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load SeasonalParameters Data'.format(e)) # message.Show() raise Exception(e.message) def timeSeriesData(msgDlg): define.logger.info("Start timeSeriesData load.") try: instance = LoadTimeSeries(obj) instance.load_data() msgDlg.guage.SetValue(10) define.logger.info( "TimeSeriesData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed timeSeriesData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load TimeSeriesData Data'.format(e)) # message.Show() raise Exception(e.message) def timeSeriesValueData(msgDlg): define.logger.info("Start timeSeriesValueData load.") try: instance = LoadTimeSeriesValue(obj) instance.load_data() msgDlg.guage.SetValue(10) define.logger.info( "TimeSeriesValueData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed TimeSeriesValueData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load TimeSeriesValueData Data'.format(e)) # message.Show() raise Exception(e.message) def multiColumnArrayData(msgDlg): define.logger.info("Start MultiAttributeSeriesData load.") try: instance = LoadMultiCulumnArray(obj) instance.load_data() msgDlg.guage.SetValue(11) define.logger.info( "MultiAttributeSeriesData load was finished successfully.\n\n" ) return instance except Exception as e: define.logger.error('Failed MultiAttributeSeriesData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load MultiAttributeSeries Data'.format(e)) # message.Show() raise Exception(e.message) def electronicFiles(msgDlg): define.logger.info("Start fileData load.") try: instance = LoadElectronicFiles(obj) instance.load_data() msgDlg.guage.SetValue(12) define.logger.info("FileData load was finished successfully.") return instance except Exception as e: define.logger.error('Failed fileData load.\n' + e.message) print(e) # message = messageDlg(None) # message.SetTitle(u"Sorry: something went wrong") # message.setMessage(u'{} \n\n [*] Could not Load File Data'.format(e)) # message.Show() raise Exception(e.message) if self.path: obj = excel.open_workbook(self.path) # Write various data form db to excel file try: instance_cvData = cvData(self.msgDlg) instance_cvData.add_data() self.data_pushed_to_db.append(instance_cvData) if all(value is True for value in self.active): instance_metaData = metaData(self.msgDlg) instance_structData = structData(self.msgDlg) instance_networksData = networksData(self.msgDlg) instance_DescriptorValuesData = descriptorValues( self.msgDlg) instance_freeText = freeText(self.msgDlg) instance_paramsData = numericValues(self.msgDlg) instance_seasonParamsData = seasonalNumericValues( self.msgDlg) instance_timeSeriesData = timeSeriesData(self.msgDlg) instance_timeSeriesValueData = timeSeriesValueData( self.msgDlg) instance_fileData = electronicFiles(self.msgDlg) instance_multiColumnArrayData = multiColumnArrayData( self.msgDlg) pass elif self.active[0] and all(value is False for value in self.active[1:]): instance_metaData = metaData() elif self.active[1] and all(value is False for value in self.active[2:]): if self.active[0]: instance_structData = structData(self.msgDlg) else: message = msg_somethigWrong( None, msg= 'Error, Structure Data Depends on MetaData, \n\n Please ' 'check MetaData box') message.Show() raise Exception elif self.active[2] and self.active[ 1] is False and self.active[3] is False: if self.active[0]: instance_networksData = networksData(self.msgDlg) else: message = msg_somethigWrong( None, msg= 'Error, Network Data Depends on MetaData, \n\n Please ' 'check MetaData box') message.Show() raise Exception() elif self.active[3] and all(value is False for value in self.active[:3]): # textFreeData() instance_DescriptorValuesData = descriptorValues( self.msgDlg) instance_freeText = freeText(self.msgDlg) instance_paramsData = numericValues(self.msgDlg) instance_seasonParamsData = seasonalNumericValues( self.msgDlg) instance_timeSeriesData = timeSeriesData(self.msgDlg) instance_timeSeriesValueData = timeSeriesValueData( self.msgDlg) instance_fileData = electronicFiles(self.msgDlg) instance_multiColumnArrayData = multiColumnArrayData( self.msgDlg) # instance_cvData.add_data() if all(value is True for value in self.active): instance_metaData.add_data() instance_structData.add_data() instance_networksData.add_data() instance_DescriptorValuesData.add_data() instance_freeText.add_data() instance_paramsData.add_data() instance_seasonParamsData.add_data() instance_timeSeriesData.add_data() instance_timeSeriesValueData.add_data() # instance_booleanData.add_data() instance_fileData.add_data() instance_multiColumnArrayData.add_data() pass elif self.active[0] and all(value is False for value in self.active[1:]): instance_metaData.add_data() elif self.active[1] and all(value is False for value in self.active[2:]): if self.active[0]: instance_structData.add_data() else: message = msg_somethigWrong( None, msg= 'Error, Data Structure Depends on MetaData, \n\n Please ' 'check MetaData box') message.Show() raise Exception elif self.active[2] and self.active[ 1] is False and self.active[3] is False: if self.active[0]: instance_networksData.add_data() else: message = msg_somethigWrong( None, msg= 'Error, Network Data Depends on MetaData, \n\n Please ' 'check MetaData box') message.Show() raise Exception() elif self.active[3] and all(value is False for value in self.active[:3]): # textFreeData() instance_paramsData.add_data() instance_seasonParamsData.add_data() instance_timeSeriesData.add_data() instance_timeSeriesValueData.add_data() instance_fileData.add_data() instance_DescriptorValuesData.add_data() instance_freeText.add_data() instance_multiColumnArrayData.add_data() # printing success message self.msgDlg.guage.SetValue(14) define.logger.info("All load was finished successfully.") wx.CallAfter(self.allDone) self.msgDlg.btn_ok.Enabled = True self.msgDlg.Close() except Exception as e: if e.message.startswith("The C++ part"): # Terminate thread. # Restore the Database first. define.logger.info("Data loading terminated, restoring \ the previous database backup.") DB_Setup().restore_db() return else: # Another exception happened define.logger.error( 'Failed data load.\n' + e.message + '\nThe loading of all data has been reverted, Please fix the error and load the file again.' ) self.errorMsg = e self.occuredError() return
def btn_connectOnButtonClick(self, event): topframe = wx.GetApp().GetTopWindow() dir_name = self.dirPicker_newDB.GetPath() db_name = self.m_textCtrl1.GetValue() # Check whether user select the file to write data correctly. fileCheck = False for root, dirs, files in os.walk(dir_name): for file in files: if file.endswith(".sqlite"): if file.split('.')[0] == db_name: from Messages_forms.generalMsgDlg import messageDlg errMsgDlg = messageDlg(topframe) errMsgDlg.SetTitle("Error") errMsgDlg.setMessage( "This database name already exists in this directory.\nPlease choose a different database name!") errMsgDlg.ShowModal() return # Report connecting to the db in the logfile define.logger = define.create_logger(db_name) define.logger.name = __name__ define.logger.info("Start database connection.") setup = DB_Setup() if setup.get_session(): define.logger.error( 'Failed database connection.\n\n Error: You are already connected to a database. \n\n to use another' 'database, you need to disconnect from the current one') msg_somethigWrong(topframe, msg='\n\n Error: You are already connected to a database. \n\n to use another' 'database, you need to disconnect from the current one').Show() return if not dir_name: define.logger.error( 'Failed database connection.\n\nError: Please select a directory. \n\nIf already so, try using the "other..." ' 'option in the Dir Dialog') msg_somethigWrong(topframe, msg='\n\nError: Please select a directory. \n\nIf already so, try using the "other..." ' 'option in the Dir Dialog').Show() return if not db_name: define.logger.error('Failed database connection.\n\nError: The database name is required.') msg_somethigWrong(topframe, msg='\n\n\nError: The database name is required.').Show() return if len(db_name.split('.')) > 1: if db_name.split('.')[-1] in ['sqlite']: pass else: db_name += '.sqlite' else: db_name += '.sqlite' # Get connection with db db_path = os.path.join(dir_name, db_name) db = DB_Setup() db.connect(db_path, db_type='sqlite') # Create WaMDaMVersion table and fills it the version number declared in define.py file obj_cat = SqlAlchemy.WaMDaMVersion() obj_cat.VersionNumber = define.version db.push_data(obj_cat) db.add_data() topframe.SetTitle(topframe.GetTitle() + ' ::: You are connected to ' + os.path.basename(db_name)) from Messages_forms.msg_connSQLiteSuccs import msg_connSQLiteSuccs msgdlg = msg_connSQLiteSuccs(topframe) msgdlg.setMessage(u"\n\n\n\n\n You are successfully connected to " + db_path.split('\\')[-1] + u".") msgdlg.Show() '''Report the connected db name to the logfile''' define.logger.info("'" + db_path.split('\\')[-1] + "'was connected successfully.\n") define.dbName = db_path.split('\\')[-1] self.Close()
def btn_compare_scenariosOnButtonClick(self, event): self.btn_compare_scenarios.Enabled = False ''' Get selected data(Dataset, MasterNetworkName, ScenarioName1, ScenarioName2) ''' selectedDataset = self.comboBox_selectModel.Value selectedMasterNetworkName = self.comboBox_selectNetwork.Value selectedScenarioName1 = self.comboBox_selectScenario1.Value selectedScenarioName2 = self.comboBox_selectScenario2.Value ''' Check if needed names are correctly selected ''' message = '' if (selectedDataset == None or selectedDataset == ''): message = 'Select the model name in WamDam.' elif selectedMasterNetworkName == None or selectedMasterNetworkName == '': message = 'Select the MasterNetworkName.' elif selectedScenarioName1 == None or selectedScenarioName1 == '': message = 'Select the ScenarioName1.' elif selectedScenarioName2 == None or selectedScenarioName2 == '': message = 'Select the ScenarioName2.' elif not ['xlsx'].__contains__(self.path.split('.')[-1]): message = 'please select a valid excel file.' '''if warning message exists, then show msg dialog and return.''' if message != '': messageDlg = msg_somethigWrong(None, msg=message) messageDlg.Show() return ''' Get data for changed topology by selected scenarios''' resultData = self.compareScenarios.GetComapreScenarios( selectedDataset, selectedMasterNetworkName, selectedScenarioName1, selectedScenarioName2) unique1ResultData = self.compareScenarios.GetUniqueTopology_Scenario2( selectedDataset, selectedMasterNetworkName, selectedScenarioName1, selectedScenarioName2) unique2ResultData = self.compareScenarios.GetUniqueTopology_Scenario1( selectedDataset, selectedMasterNetworkName, selectedScenarioName1, selectedScenarioName2) commonResultData = self.compareScenarios.GetCommonTopology( selectedDataset, selectedMasterNetworkName, selectedScenarioName1, selectedScenarioName2) i = 0 k = 0 ''' in data for changed topology, pop common data ''' for i in range(0, len(unique1ResultData)): unique1Data = unique1ResultData[i - k] j = 0 isSame = False for unique2Data in unique2ResultData: if unique1Data[0] == unique2Data[0] and unique1Data[ 1] == unique2Data[1] and unique1Data[2] == unique2Data[ 2]: isSame = True break j += 1 if isSame: unique1ResultData.pop(i - k) unique2ResultData.pop(j) k += 1 ''' pop common data in union result''' i = 0 k = 0 for i in range(0, len(commonResultData)): unique1Data = commonResultData[i - k] j = 0 isSame = False for unique2Data in unique2ResultData: if unique1Data[0] == unique2Data[0] and unique1Data[ 1] == unique2Data[1] and unique1Data[2] == unique2Data[ 2]: isSame = True break if not isSame: for unique1Data0 in unique1ResultData: if unique1Data[0] == unique1Data0[0] and unique1Data[ 1] == unique1Data0[1] and unique1Data[ 2] == unique1Data0[2]: isSame = True break if isSame: commonResultData.pop(i - k) k += 1 '''get changed metadata''' changeInMetadataList = self.compareScenarios.GetChangeInMetadata_Topology( selectedDataset, selectedMasterNetworkName, selectedScenarioName1, selectedScenarioName2) # print the result to this excel sheet: ChangeInMetadata_Attributes changeInMetadataValueList = self.compareScenarios.GetChangeInMetaValues_Attributes( selectedDataset, selectedMasterNetworkName, selectedScenarioName1, selectedScenarioName2) ''' init metadata''' changeInMetadataList_result = [] firstScenarioCount = 0 commonScenarioCount = 0 secondScenarioCount = 0 totalcount = 0 for unique1Data in changeInMetadataList: j = 0 isSame = False for row in changeInMetadataList_result: if unique1Data[0] == row[0] and unique1Data[1] == row[ 1] and unique1Data[2] == row[2] and unique1Data[ 3] == row[3]: isSame = True if unique1Data[4] != row[4]: if len(changeInMetadataList_result[j]) == 12: '''second senario data append''' changeInMetadataList_result[j][9] = unique1Data[4] changeInMetadataList_result[j][10] = unique1Data[5] changeInMetadataList_result[j][11] = unique1Data[6] else: changeInMetadataList_result[j].append( unique1Data[4]) changeInMetadataList_result[j].append( unique1Data[5]) changeInMetadataList_result[j].append( unique1Data[6]) j += 1 if not isSame: changeInMetadataList_result.append(unique1Data) firstScenarioCount = len(unique2ResultData) secondScenarioCount = len(unique1ResultData) commonScenarioCount = len(commonResultData) totalcount = firstScenarioCount + secondScenarioCount + commonScenarioCount ''' print the result to this excel sheet: ChangeInMetadata_Attributes ''' changeInMetadataAttributeList_result = [] for unique1Data in changeInMetadataValueList: j = 0 isSame = False for row in changeInMetadataAttributeList_result: if unique1Data[0] == row[0] and unique1Data[1] == row[ 1] and unique1Data[2] == row[2] and unique1Data[ 3] == row[3]: isSame = True if unique1Data[5] != row[5]: if len(changeInMetadataAttributeList_result[j]) > 11: '''second senario data append''' changeInMetadataAttributeList_result[j][ 10] = unique1Data[5] changeInMetadataAttributeList_result[j][ 11] = unique1Data[6] changeInMetadataAttributeList_result[j][ 12] = unique1Data[7] else: changeInMetadataAttributeList_result[j].append( unique1Data[5]) changeInMetadataAttributeList_result[j].append( unique1Data[6]) changeInMetadataAttributeList_result[j].append( unique1Data[7]) j += 1 if not isSame: changeInMetadataAttributeList_result.append(unique1Data) print '**************' try: if self.path.split('.')[-1] == 'xlsx': book2 = load_workbook(self.path) additionsToTopologySheet = book2["ChangeInTopology"] changeInMetadataToTopologySheet = book2[ "ChangeInMetadata_Topology"] changeInMetavaluesTopologySheet = book2[ "ChangeInMetadata_Attributes"] changeInValuesSheet = book2["ChangeInValues"] additionsToTopologySheet.cell(row=3, column=2, value=firstScenarioCount) additionsToTopologySheet.cell(row=3, column=5, value=commonScenarioCount) additionsToTopologySheet.cell(row=3, column=8, value=secondScenarioCount) additionsToTopologySheet.cell( row=4, column=2, value=str( round( float(firstScenarioCount) / float(1 if totalcount == 0 else totalcount), 3) * 100.0) + "%") additionsToTopologySheet.cell( row=4, column=5, value=str( round( float(commonScenarioCount) / float(1 if totalcount == 0 else totalcount), 3) * 100.0) + "%") additionsToTopologySheet.cell( row=4, column=8, value=str( round( float(secondScenarioCount) / float(1 if totalcount == 0 else totalcount), 3) * 100.0) + "%") rowNumber = 7 for row_id, row in enumerate(unique2ResultData): for col_id, cell in enumerate(row): additionsToTopologySheet.cell(row=rowNumber, column=col_id + 1, value=cell) rowNumber += 1 for row_id, row in enumerate(unique1ResultData): for col_id, cell in enumerate(row): additionsToTopologySheet.cell(row=rowNumber, column=col_id + 7, value=cell) rowNumber += 1 for row_id, row in enumerate(commonResultData): for col_id, cell in enumerate(row): additionsToTopologySheet.cell(row=rowNumber, column=col_id + 4, value=cell) rowNumber += 1 i = 0 count_first_source = 0 count_second_source = 0 count_first_method = 0 count_second_method = 0 count_common_source = 0 count_common_method = 0 for row_id, row in enumerate(changeInMetadataList_result): # if row.__len__() < 10: # continue if row.__len__( ) > 10 and row[5] == row[10] and row[6] == row[11]: continue for col_id, cell in enumerate(row): if col_id < 4: changeInMetadataToTopologySheet.cell( row=i + 6, column=col_id + 1, value=cell) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=col_id + 1, value=cell) elif col_id == 4: if cell == selectedScenarioName1: changeInMetadataToTopologySheet.cell( row=i + 6, column=col_id + 1, value=row[5]) changeInMetadataToTopologySheet.cell( row=i + 6, column=7, value=row[6]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=col_id + 1, value=row[5]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=7, value=row[6]) if not row[5] is None and row[5] != '': count_first_source += 1 if not row[6] is None and row[6] != '': count_first_method += 1 else: changeInMetadataToTopologySheet.cell( row=i + 6, column=col_id + 2, value=row[5]) changeInMetadataToTopologySheet.cell( row=i + 6, column=8, value=row[6]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=col_id + 2, value=row[5]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=8, value=row[6]) if not row[5] is None and row[5] != '': count_second_method += 1 if not row[6] is None and row[6] != '': count_second_source += 1 # if len(row) < 10: # break elif col_id == 9: if cell == selectedScenarioName1: changeInMetadataToTopologySheet.cell( row=i + 6, column=5, value=row[10]) changeInMetadataToTopologySheet.cell( row=i + 6, column=7, value=row[11]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=5, value=row[10]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=7, value=row[11]) if not row[10] is None and row[10] != '': count_first_source += 1 if not row[11] is None and row[11] != '': count_first_method += 1 else: changeInMetadataToTopologySheet.cell( row=i + 6, column=6, value=row[10]) changeInMetadataToTopologySheet.cell( row=i + 6, column=8, value=row[11]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=6, value=row[10]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=8, value=row[11]) if not row[10] is None and row[10] != '': count_second_method += 1 if not row[11] is None and row[11] != '': count_second_source += 1 break if row.__len__() > 10 and row[5] == row[10]: changeInMetadataToTopologySheet.cell(row=i + 6, column=9, value=row[10]) changeInMetadataToTopologySheet.cell(row=i + 6, column=5, value="") changeInMetadataToTopologySheet.cell(row=i + 6, column=6, value="") # changeInMetavaluesTopologySheet.cell(row=i + 6, column=9, value=row[10]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=5, value="") # changeInMetavaluesTopologySheet.cell(row=i + 6, column=6, value="") count_common_source += 1 count_first_source -= 1 count_second_source -= 1 if row.__len__() > 10 and row[6] == row[11]: changeInMetadataToTopologySheet.cell(row=i + 6, column=10, value=row[11]) changeInMetadataToTopologySheet.cell(row=i + 6, column=7, value="") changeInMetadataToTopologySheet.cell(row=i + 6, column=8, value="") # changeInMetavaluesTopologySheet.cell(row=i + 6, column=10, value=row[11]) # changeInMetavaluesTopologySheet.cell(row=i + 6, column=7, value="") # changeInMetavaluesTopologySheet.cell(row=i + 6, column=8, value="") count_first_method -= 1 count_second_method -= 1 count_common_method += 1 i += 1 count_first_source_attr = 0 count_second_source_attr = 0 count_first_method_attr = 0 count_second_method_attr = 0 count_common_source_attr = 0 count_common_method_attr = 0 i = 0 ''' print the result to this excel sheet: ChangeInMetadata_Attributes ''' for row_id, row in enumerate( changeInMetadataAttributeList_result): # if row.__len__() < 10: # continue if row.__len__( ) > 10 and row[6] == row[11] and row[7] == row[12]: continue for col_id, cell in enumerate(row): if col_id < 4: # changeInMetadataToTopologySheet.cell(row=i + 6, column=col_id + 1, value=cell) changeInMetavaluesTopologySheet.cell( row=i + 6, column=col_id + 1, value=cell) elif col_id == 5: if cell == selectedScenarioName1: changeInMetavaluesTopologySheet.cell( row=i + 6, column=5, value=row[6]) changeInMetavaluesTopologySheet.cell( row=i + 6, column=7, value=row[7]) if not row[6] is None and row[6] != '': count_first_source_attr += 1 if not row[7] is None and row[7] != '': count_first_method_attr += 1 else: changeInMetavaluesTopologySheet.cell( row=i + 6, column=6, value=row[6]) changeInMetavaluesTopologySheet.cell( row=i + 6, column=8, value=row[7]) if not row[6] is None and row[6] != '': count_second_method_attr += 1 if not row[7] is None and row[7] != '': count_second_source_attr += 1 # if len(row) < 10: # break elif col_id == 10: if cell == selectedScenarioName1: # changeInMetadataToTopologySheet.cell(row=i + 6, column=5, value=row[10]) # changeInMetadataToTopologySheet.cell(row=i + 6, column=7, value=row[11]) changeInMetavaluesTopologySheet.cell( row=i + 6, column=5, value=row[11]) changeInMetavaluesTopologySheet.cell( row=i + 6, column=7, value=row[12]) if not row[11] is None and row[11] != '': count_first_source_attr += 1 if not row[12] is None and row[12] != '': count_first_method_attr += 1 else: # changeInMetadataToTopologySheet.cell(row=i + 6, column=6, value=row[11]) # changeInMetadataToTopologySheet.cell(row=i + 6, column=8, value=row[12]) changeInMetavaluesTopologySheet.cell( row=i + 6, column=6, value=row[11]) changeInMetavaluesTopologySheet.cell( row=i + 6, column=8, value=row[12]) if not row[11] is None and row[11] != '': count_second_method_attr += 1 if not row[12] is None and row[12] != '': count_second_source_attr += 1 break if row.__len__() > 10 and row[6] == row[11]: # changeInMetadataToTopologySheet.cell(row=i + 6, column=9, value=row[11]) # changeInMetadataToTopologySheet.cell(row=i + 6, column=5, value="") # changeInMetadataToTopologySheet.cell(row=i + 6, column=6, value="") changeInMetavaluesTopologySheet.cell(row=i + 6, column=9, value=row[11]) changeInMetavaluesTopologySheet.cell(row=i + 6, column=5, value="") changeInMetavaluesTopologySheet.cell(row=i + 6, column=6, value="") count_common_source_attr += 1 count_first_source_attr -= 1 count_second_source_attr -= 1 if row.__len__() > 10 and row[7] == row[12]: # changeInMetadataToTopologySheet.cell(row=i + 6, column=10, value=row[11]) # changeInMetadataToTopologySheet.cell(row=i + 6, column=7, value="") # changeInMetadataToTopologySheet.cell(row=i + 6, column=8, value="") changeInMetavaluesTopologySheet.cell(row=i + 6, column=10, value=row[12]) changeInMetavaluesTopologySheet.cell(row=i + 6, column=7, value="") changeInMetavaluesTopologySheet.cell(row=i + 6, column=8, value="") count_common_method_attr += 1 count_second_method_attr -= 1 count_first_method_attr -= 1 i += 1 first_scenario_value_count = 0 second_scenario_value_count = 0 list_changInValue = [] for row_id, row in enumerate(changeInMetadataValueList): macth_flag = False for row_i, result in enumerate(list_changInValue): if result[0] == row[0] and result[1] == row[ 1] and result[2] == row[2] and result[ 3] == row[3]: if row[5] == selectedScenarioName1: first_scenario_value_count += 1 list_changInValue[row_i][5] = row[9] else: second_scenario_value_count += 1 list_changInValue[row_i][6] = row[9] macth_flag = True break if not macth_flag: items = [] firstScenarioFlag = True for col_id, cell in enumerate(row): if col_id < 5: items.append(cell) else: if col_id == 5: if cell == selectedScenarioName2: firstScenarioFlag = False elif col_id == 9: if firstScenarioFlag: first_scenario_value_count += 1 items.append(cell) items.append('') else: second_scenario_value_count += 1 items.append('') items.append(cell) list_changInValue.append(items) for row_id, row in enumerate(list_changInValue): for col_id, cell in enumerate(row): changeInValuesSheet.cell(row=row_id + 6, column=col_id + 1, value=cell) # print the scenario names in F and G changeInValuesSheet.cell(row=4, column=6, value=selectedScenarioName1) changeInValuesSheet.cell(row=4, column=7, value=selectedScenarioName2) allValueCount = self.compareScenarios.AllValuesMapperCount( selectedDataset, selectedMasterNetworkName) # print values to column F: Unique to Scenario 1 changeInValuesSheet.cell(row=2, column=6, value=first_scenario_value_count) changeInValuesSheet.cell( row=3, column=6, value=str( round( float(first_scenario_value_count) * 100.0 / float(allValueCount), 2)) + '%') # print values to column G: Unique to Scenario 2 changeInValuesSheet.cell(row=2, column=7, value=second_scenario_value_count) changeInValuesSheet.cell( row=3, column=7, value=str( round( float(second_scenario_value_count) * 100 / float(allValueCount), 2)) + '%') common_count = allValueCount - first_scenario_value_count - second_scenario_value_count # print values to column H: Common to both changeInValuesSheet.cell(row=2, column=8, value=common_count) changeInValuesSheet.cell( row=3, column=8, value=str( round( float(common_count) * 100 / float(allValueCount), 2)) + '%') changeInValuesSheet.cell(row=2, column=9, value=allValueCount) changeInValuesSheet.cell(row=3, column=9, value='100%') additionsToTopologySheet.cell(row=2, column=2, value=selectedScenarioName1) additionsToTopologySheet.cell(row=2, column=8, value=selectedScenarioName2) changeInMetadataToTopologySheet.cell( row=4, column=5, value=selectedScenarioName1) changeInMetadataToTopologySheet.cell( row=4, column=6, value=selectedScenarioName2) changeInMetadataToTopologySheet.cell( row=4, column=7, value=selectedScenarioName1) changeInMetadataToTopologySheet.cell( row=4, column=8, value=selectedScenarioName2) changeInMetavaluesTopologySheet.cell( row=4, column=5, value=selectedScenarioName1) changeInMetavaluesTopologySheet.cell( row=4, column=6, value=selectedScenarioName2) changeInMetavaluesTopologySheet.cell( row=4, column=7, value=selectedScenarioName1) changeInMetavaluesTopologySheet.cell( row=4, column=8, value=selectedScenarioName2) allMetaValueCount = self.compareScenarios.AllTopologyMetadataCount( selectedDataset, selectedMasterNetworkName) changeInMetadataToTopologySheet.cell(row=2, column=5, value=count_first_source) changeInMetadataToTopologySheet.cell( row=3, column=5, value=str( round( float(count_first_source) * 100 / float(allMetaValueCount - count_common_source), 2)) + '%') changeInMetadataToTopologySheet.cell(row=2, column=6, value=count_second_source) changeInMetadataToTopologySheet.cell( row=3, column=6, value=str( round( float(count_second_source) * 100 / float(allMetaValueCount - count_common_source), 2)) + '%') changeInMetadataToTopologySheet.cell(row=2, column=7, value=count_first_method) changeInMetadataToTopologySheet.cell( row=3, column=7, value=str( round( float(count_first_method) * 100 / float(allMetaValueCount - count_common_method), 2)) + '%') changeInMetadataToTopologySheet.cell(row=2, column=8, value=count_second_method) changeInMetadataToTopologySheet.cell( row=3, column=8, value=str( round( float(count_second_method) * 100 / float(allMetaValueCount - count_common_method), 2)) + '%') changeInMetadataToTopologySheet.cell(row=2, column=9, value=count_common_source) rest_source_count = allMetaValueCount - count_first_source - count_second_source changeInMetadataToTopologySheet.cell( row=3, column=9, value=str( round( float(rest_source_count) * 100 / float(allMetaValueCount), 2)) + '%') rest_method_count = allMetaValueCount - count_first_method - count_second_method changeInMetadataToTopologySheet.cell(row=2, column=10, value=count_common_method) changeInMetadataToTopologySheet.cell( row=3, column=10, value=str( round( float(rest_method_count) * 100 / float(allMetaValueCount), 2)) + '%') changeInMetadataToTopologySheet.cell(row=2, column=11, value=allMetaValueCount) changeInMetadataToTopologySheet.cell(row=3, column=11, value='100%') allAttrVauleCount = self.compareScenarios.AllMetadataAttributesCount( selectedDataset, selectedMasterNetworkName) changeInMetavaluesTopologySheet.cell( row=2, column=5, value=count_first_source_attr) changeInMetavaluesTopologySheet.cell( row=3, column=5, value=str( round( float(count_first_source_attr) * 100 / float(allAttrVauleCount - count_common_source_attr), 2)) + '%') changeInMetavaluesTopologySheet.cell( row=2, column=6, value=count_second_source_attr) changeInMetavaluesTopologySheet.cell( row=3, column=6, value=str( round( float(count_second_source_attr) * 100 / float(allAttrVauleCount - count_common_source_attr), 2)) + '%') changeInMetavaluesTopologySheet.cell( row=2, column=7, value=count_first_method_attr) changeInMetavaluesTopologySheet.cell( row=3, column=7, value=str( round( float(count_first_method_attr) * 100 / float(allAttrVauleCount - count_common_method_attr), 2)) + '%') changeInMetavaluesTopologySheet.cell( row=2, column=8, value=count_second_method_attr) changeInMetavaluesTopologySheet.cell( row=3, column=8, value=str( round( float(count_second_method_attr) * 100 / float(allAttrVauleCount - count_common_method_attr), 2)) + '%') rest_source_att = allAttrVauleCount - count_first_source_attr - count_second_source_attr changeInMetavaluesTopologySheet.cell(row=2, column=9, value=count_common_source) changeInMetavaluesTopologySheet.cell( row=3, column=9, value=str( round( float(rest_source_att) * 100 / float(allAttrVauleCount), 2)) + '%') rest_method_attr = allAttrVauleCount - count_first_method_attr - count_second_method_attr changeInMetavaluesTopologySheet.cell(row=2, column=10, value=count_common_method) changeInMetavaluesTopologySheet.cell( row=3, column=10, value=str( round( float(rest_method_attr) * 100 / float(allAttrVauleCount), 2)) + '%') changeInMetavaluesTopologySheet.cell(row=2, column=11, value=allAttrVauleCount) changeInMetavaluesTopologySheet.cell(row=3, column=11, value='100%') try: book2.save(self.path) except Exception as e: raise Exception( "Permission denied!\nFileName : {}\nThis file is open or used by another application. Please close it first" .format(e.filename)) from Messages_forms.msg_successLoadDatabase import msg_successLoadDatabase instance = msg_successLoadDatabase(None) instance.m_staticText1.SetLabel( "\n \n The comparison and writing to Excel where successful. \n Check the excel file you provided to see the results" ) instance.ShowModal() self.Destroy() except Exception as e: print e messageDlg = msg_somethigWrong(None, msg=e.message) messageDlg.ShowModal()