Пример #1
0
    def __init__(self, run_node, parent_widget=None):
        QDialog.__init__(self, parent_widget)
        self.setupUi(self)
        self.run_node = run_node
        self.changed_cache_dir = None

        run_name = run_node.get('name')

        # We don't have a results manager in the unit tests
        results_manager = get_manager_instance('results_manager')
        if results_manager is not None:
            #this is to work around that results_manager_functions.add_simulation_run function
            #isn't able to update existing runs, for example, in case a run being restarted
            project = results_manager.project
            start_year, end_year = get_years_range_for_simulation_run(
                project, run_node=self.run_node)
        else:
            # fallback, fill in existing values...
            start_year = run_node.find('start_year').text
            end_year = run_node.find('end_year').text

        scenario_name = run_node.find('scenario_name').text
        cache_directory = run_node.find('cache_directory').text
        self.original_cache_dir = cache_directory.strip()
        run_id = run_node.get('run_id', 'not available')

        self.lblRun_name.setText(run_name)
        self.lblYears_run.setText('%s - %s' % (start_year, end_year))

        if scenario_name is None:
            scenario_name = ''
        self.lblScenario_name.setText(scenario_name)
        self.lblCache_directory.setText(cache_directory)
        self.lblRunId.setText(run_id)
Пример #2
0
    def __init__(self, run_node, parent_widget=None):
        QDialog.__init__(self, parent_widget)
        self.setupUi(self)
        self.run_node = run_node
        self.changed_cache_dir = None

        run_name = run_node.get("name")

        # We don't have a results manager in the unit tests
        results_manager = get_manager_instance("results_manager")
        if results_manager is not None:
            # this is to work around that results_manager_functions.add_simulation_run function
            # isn't able to update existing runs, for example, in case a run being restarted
            project = results_manager.project
            start_year, end_year = get_years_range_for_simulation_run(project, run_node=self.run_node)
        else:
            # fallback, fill in existing values...
            start_year = run_node.find("start_year").text
            end_year = run_node.find("end_year").text

        scenario_name = run_node.find("scenario_name").text
        cache_directory = run_node.find("cache_directory").text
        self.original_cache_dir = cache_directory.strip()
        run_id = run_node.get("run_id", "not available")

        self.lblRun_name.setText(run_name)
        self.lblYears_run.setText("%s - %s" % (start_year, end_year))

        if scenario_name is None:
            scenario_name = ""
        self.lblScenario_name.setText(scenario_name)
        self.lblCache_directory.setText(cache_directory)
        self.lblRunId.setText(run_id)
    def on_pbnStartModel_clicked(self):
        self.diagnostic_go_button.setEnabled(True)

        if self.running and not self.paused:
            # Take care of pausing a run
            success = self.runThread.pause()
            if success:
                self.paused = True
                self.timer.stop()
                self.pbnStartModel.setText(QString("Resume simulation run"))
        elif self.running and self.paused:
            # Need to resume a paused run
            success = self.runThread.resume()
            if success:
                self.paused = False
                self.timer.start(1000)
                self.pbnStartModel.setText(QString("Pause simulation run"))
        elif not self.running:
            # this is to work around that results_manager_functions.add_simulation_run function
            # isn't able to update existing runs and years information in simulation_runs/run
            # node may not be correct
            original_start_year, original_end_year = get_years_range_for_simulation_run(self.project, self.run_name)

            # #ask for first and last year of the run to be restarted
            run_manager = get_run_manager()
            years_config = self.config["years"]  # = (original_start_year, end_year)
            base_year = self.config["base_year"]

            dlg_years = InputRestartYearsDialog(self.mainwindow)
            dlg_years.lblBaseYear.setText(str(base_year))
            if original_end_year is not None:
                dlg_years.lblEndYear.setText(str(original_end_year))
                proposed_start_year = original_end_year + 1
            else:
                proposed_start_year = base_year + 1
            proposed_end_year = years_config[1] if years_config[1] > proposed_start_year else proposed_start_year + 1
            dlg_years.leFirstYear.setText(str(proposed_start_year))
            dlg_years.leLastYear.setText(str(proposed_end_year))

            if dlg_years.exec_() == QDialog.Rejected:
                return

            self.start_year = int(dlg_years.leFirstYear.text())
            self.end_year = int(dlg_years.leLastYear.text())
            assert self.end_year >= self.start_year
            self.config["years"] = (self.start_year, self.end_year)
            #            run_manager._create_seed_dictionary(self.config)
            #            run_manager.add_row_to_history(self.run_id,
            #                                           self.config,
            #                                           status='restarted',
            #                                           run_name=self.run_name,
            #                                           scenario_name=self.scenario_name)

            # Update the XML
            self.project.update_xml_config()
            # self.updateConfigAndGuiForRun()

            #            # Fire up a new thread and run the model
            self._init_run(self.run_name)
            self.runThread.setup_restart_run(self.run_id, self.config, self.start_year, self.end_year)
            self.runThread.start()
        else:
            print "Unexpected state in the model run..."
    def on_pbnStartModel_clicked(self):
        self.diagnostic_go_button.setEnabled(True)

        if self.running and not self.paused:
            # Take care of pausing a run
            success = self.runThread.pause()
            if success:
                self.paused = True
                self.timer.stop()
                self.pbnStartModel.setText(QString("Resume simulation run"))
        elif self.running and self.paused:
            # Need to resume a paused run
            success = self.runThread.resume()
            if success:
                self.paused = False
                self.timer.start(1000)
                self.pbnStartModel.setText(QString("Pause simulation run"))
        elif not self.running:
            #this is to work around that results_manager_functions.add_simulation_run function
            #isn't able to update existing runs and years information in simulation_runs/run 
            #node may not be correct
            original_start_year, original_end_year = get_years_range_for_simulation_run(self.project,
                                                                                        self.run_name)
            
            # #ask for first and last year of the run to be restarted
            run_manager = get_run_manager()
            years_config = self.config['years'] # = (original_start_year, end_year)
            base_year = self.config['base_year']
            
            dlg_years = InputRestartYearsDialog(self.mainwindow)
            dlg_years.lblBaseYear.setText(str(base_year))
            if original_end_year is not None:
                dlg_years.lblEndYear.setText(str(original_end_year))
                proposed_start_year = original_end_year + 1
            else:
                proposed_start_year = base_year + 1
            proposed_end_year = years_config[1] if years_config[1] > proposed_start_year \
                                else proposed_start_year + 1
            dlg_years.leFirstYear.setText(str(proposed_start_year))
            dlg_years.leLastYear.setText(str(proposed_end_year))
                
            if dlg_years.exec_() == QDialog.Rejected:
                return
            
            self.start_year = int(dlg_years.leFirstYear.text())
            self.end_year = int(dlg_years.leLastYear.text())
            assert self.end_year >= self.start_year
            self.config['years'] = (self.start_year, self.end_year)
#            run_manager._create_seed_dictionary(self.config)
#            run_manager.add_row_to_history(self.run_id, 
#                                           self.config, 
#                                           status='restarted', 
#                                           run_name=self.run_name, 
#                                           scenario_name=self.scenario_name)            

                    
            # Update the XML
            self.project.update_xml_config()
            #self.updateConfigAndGuiForRun()

#            # Fire up a new thread and run the model
            self._init_run(self.run_name)
            self.runThread.setup_restart_run(self.run_id,
                                             self.config,
                                             self.start_year,
                                             self.end_year
                                             )
            self.runThread.start()
        else:
            print "Unexpected state in the model run..."