Exemplo n.º 1
0
    def clean_number(self):
        data = self.cleaned_data[self.NUMBER]
        name_and_method = "SimulationDemandForm.clean_number"
        drifter_type = self.cleaned_data[self.DRIFTER_TYPE]

        try:
            VHelper.validating_number(drifter_type=drifter_type, data=data)
        except CValidationError as cv_err:
            raise forms.ValidationError(cv_err.message)

        return data
Exemplo n.º 2
0
def validating_initial_conditions(json_data):
    logger.info("SimulationDemand validating_initial_conditions, start")

    sim_init_cond = json_data[MemorySimulationDemand.INITIAL_CONDITION]
    sim_drifter = json_data[MemorySimulationDemand.DRIFTER]

    list_keys = sim_init_cond.keys()

    if MemorySimulationDemand.GEOMETRY not in list_keys:
        raise ValidationError("No '{}' in '{}' part".format(
            MemorySimulationDemand.GEOMETRY,
            MemorySimulationDemand.INITIAL_CONDITION))

    VHelper.validating_geometry(sim_init_cond[MemorySimulationDemand.GEOMETRY])
    as_lats = sim_init_cond[MemorySimulationDemand.LAT]
    lats_float_list = []
    if isinstance(as_lats, str):
        split_str = as_lats.split(",")
        for an_element in split_str:
            try:
                a_float = float(an_element.strip())
                lats_float_list.append(a_float)
            except ValueError as verr:
                msg = "Error in value {} for lats".format(an_element)
                logger.error(msg)
                raise ValidationError(msg)

    if isinstance(as_lats, list):
        if isinstance(as_lats[0], str):
            for a_str_element in as_lats:
                split_str = a_str_element.split(",")
                for an_element in split_str:
                    try:
                        a_float = float(an_element.strip())
                        lats_float_list.append(a_float)
                    except ValueError as verr:
                        msg = "Error in value {} for lats".format(an_element)
                        logger.error(msg)
                        raise ValidationError(msg)
        elif isinstance(as_lats[0], float):
            lats_float_list.extend(as_lats)

    if isinstance(as_lats, float):
        lats_float_list.append(as_lats)

    VHelper.validating_float_coord(lat_or_lon=MemorySimulationDemand.LAT,
                                   coordinate_values=lats_float_list)

    as_lons = sim_init_cond[MemorySimulationDemand.LON]
    lon_float_list = []
    if isinstance(as_lons, str):
        split_str = as_lons.split(",")
        for an_element in split_str:
            try:
                a_float = float(an_element.strip())
                lon_float_list.append(a_float)
            except ValueError as verr:
                msg = "Error in value {} for lons".format(an_element)
                logger.error(msg)
                raise ValidationError(msg)

    if isinstance(as_lons, list):
        if isinstance(as_lons[0], str):
            for a_str_element in as_lons:
                split_str = a_str_element.split(",")
                for an_element in split_str:
                    try:
                        a_float = float(an_element.strip())
                        lon_float_list.append(a_float)
                    except ValueError as verr:
                        msg = "Error in value {} for lons".format(an_element)
                        logger.error(msg)
                        raise ValidationError(msg)
        elif isinstance(as_lons[0], float):
            lon_float_list.extend(as_lons)

    if isinstance(as_lons, float):
        lon_float_list.append(as_lons)

    VHelper.validating_float_coord(lat_or_lon=MemorySimulationDemand.LON,
                                   coordinate_values=lon_float_list)
    VHelper.validating_coordinates_consistency(
        geometry_type=sim_init_cond[MemorySimulationDemand.GEOMETRY],
        lats_list=lats_float_list,
        lons_list=lon_float_list)

    if MemorySimulationDemand.RADIUS in list_keys:
        VHelper.validating_radius(sim_init_cond[MemorySimulationDemand.RADIUS])

    if MemorySimulationDemand.NUMBER not in list_keys:
        raise ValidationError("No '{}' in '{}' part".format(
            MemorySimulationDemand.NUMBER,
            MemorySimulationDemand.INITIAL_CONDITION))
    VHelper.validating_number(
        drifter_type=sim_drifter[MemorySimulationDemand.DRIFTER_TYPE],
        data=sim_init_cond[MemorySimulationDemand.NUMBER])

    # Here I just check if the txt content of release times can be converted into a list of timestamps
    # Coherence is checked elsewhere
    validating_release_times(json_data)
    logger.info("SimulationDemand validating_initial_conditions, end")