def create_valid_post_values(self):
        self.new_driving_dataset = DrivingDataset()
        self.new_driving_dataset.name = "new_driving_dataset"
        self.new_driving_dataset.description = "description"
        self.new_driving_dataset.geographic_region = "geographic_region"
        self.new_driving_dataset.spatial_resolution = "spatial_resolution"
        self.new_driving_dataset.temporal_resolution = "temporal_resolution"
        self.new_driving_dataset.boundary_lat_north = 30
        self.new_driving_dataset.boundary_lat_south = -30
        self.new_driving_dataset.boundary_lon_east = 30
        self.new_driving_dataset.boundary_lon_west = -30

        self.new_driving_dataset.view_order_index = 1
        self.new_driving_dataset.usage_order_index = 1

        self.new_driving_dataset.is_restricted_to_admins = True

        self.new_driving_dataset.time_start = datetime.datetime(2010, 1, 1, 10, 00)
        self.new_driving_dataset.time_end = datetime.datetime(2010, 2, 1, 10, 00)

        self.drive_var = ['drive var 1', 'drive var 2']
        jules_params = DrivingDatasetJulesParams(
            driving_dateset=self.new_driving_dataset,
            data_start="2010-01-01 10:00",
            data_end="2010-02-01 10:00",
            dataperiod=1800,
            drive_file="jules_param_drive_file",
            drive_var=self.drive_var,
            var_names=['name1', 'name2'],
            var_templates=['template1', 'template2'],
            var_interps=['interp1', 'interp2'],
            nx=10,
            ny=20,
            x_dim_name='jules_param_x_dim_name',
            y_dim_name='jules_param_y_dim_name',
            time_dim_name='jules_param_time_dim_name',
            latlon_file='latlon_file',
            latlon_lat_name='latlon_lat_name',
            latlon_lon_name='latlon_lon_name',
            land_frac_file='land_frac_file',
            land_frac_frac_name='land_frac_frac_name',
            frac_file='frac_file_file_name',
            frac_frac_dim_name='frac_frac_dim_name',
            frac_type_dim_name='frac_type_dim_name',
            soil_props_file='soil_props_file',
            extra_parameters={1: self.extra_parameter},
            post_processing_script_id=0
            )
        valid_params = jules_params.create_values_dict({})
        return valid_params
Пример #2
0
    def create_driving_dataset(self, driving_dataset_id, results, locations, model_run_service, land_cover_service):

        """
        Create a driving dataset object from a results dictionary
        :param driving_dataset_id: id of the driving dataset to edit (None for create new)
        :param locations: locations list to use
        :param results: the results
        :param model_run_service: model run service
        :param land_cover_service: land cover service
        :return: nothing
        """

        with self.transaction_scope() as session:
            if driving_dataset_id is None:
                driving_dataset = DrivingDataset()
                session.add(driving_dataset)
            else:
                session\
                    .query(DrivingDatasetParameterValue)\
                    .filter(DrivingDatasetParameterValue.driving_dataset_id == driving_dataset_id)\
                    .delete()
                session\
                    .query(DrivingDatasetLocation)\
                    .filter(DrivingDatasetLocation.driving_dataset_id == driving_dataset_id)\
                    .delete()
                driving_dataset = self._get_driving_dataset_by_id_in_session(driving_dataset_id, session)

            driving_dataset_jules_params = DrivingDatasetJulesParams()

            driving_dataset_jules_params.update_driving_dataset_from_dict(
                driving_dataset,
                session,
                model_run_service,
                land_cover_service,
                results,
                locations)
Пример #3
0
                for parameter_index in range(int(values["params_count"])):
                    parameter_id = values.get("param-{}.id".format(str(parameter_index)))
                    if str(parameter.id) == parameter_id:
                        values["param_names"].append("{}::{}".format(parameter.namelist.name, parameter.name))
            helpers.error_flash("Some of the values entered below are incorrect, please correct them")
        else:
            if id is None:
                driving_dataset = DrivingDataset()
                driving_dataset.is_restricted_to_admins = True
                c.regions = []

            else:
                driving_dataset = self._dataset_service.get_driving_dataset_by_id(id)
                c.regions = self._landcover_service.get_land_cover_regions(id)

            jules_params = DrivingDatasetJulesParams()
            jules_params.set_from(driving_dataset, c.regions)

            values = jules_params.create_values_dict(c.namelist)

        c.masks = int(values['mask_count'])
        c.mask_can_be_deleted = []
        for mask_index in range(c.masks):
            mask_id = values['region-{}.id'.format(mask_index)]
            c.mask_can_be_deleted.append(mask_id is None or mask_id == "")

        try:
            c.nvar = int(values['drive_nvars'])
        except (ValueError, KeyError):
            c.nvar = 0