예제 #1
0
 def validate(self, data):
     validate_field(
         data,
         "is_shipped_waybill_or_lading",
         strings.Applications.Generic.RouteOfGoods.
         IS_SHIPPED_AIR_WAY_BILL_OR_LADING,
     )
     if data.get("is_shipped_waybill_or_lading") is False:
         validate_field(
             data, "non_waybill_or_lading_route_details",
             strings.Applications.Generic.RouteOfGoods.SHIPPING_DETAILS)
     return super().validate(data)
예제 #2
0
def _validate_linked_fields(data, linked_field, error):
    linked_boolean_field_name = "is_" + linked_field
    linked_boolean_field = validate_field(data, linked_boolean_field_name,
                                          error)

    if linked_boolean_field:
        linked_reference_field_name = linked_field + "_ref"

        validate_field(
            data,
            linked_reference_field_name,
            strings.Generic.EndUseDetails.Error.MISSING_DETAILS,
            required=True,
        )
예제 #3
0
    def validate(self, data):
        _validate_linked_fields(
            data, "military_end_use_controls",
            strings.Generic.EndUseDetails.Error.INFORMED_TO_APPLY)
        _validate_linked_fields(
            data, "informed_wmd",
            strings.Generic.EndUseDetails.Error.INFORMED_WMD)
        _validate_linked_fields(
            data, "suspected_wmd",
            strings.Generic.EndUseDetails.Error.SUSPECTED_WMD)
        validate_field(data, "intended_end_use",
                       strings.Generic.EndUseDetails.Error.INTENDED_END_USE)

        return super().validate(data)
    def validate(self, data):
        validate_field(
            data, "temp_export_details", strings.Generic.
            TemporaryExportDetails.Error.TEMPORARY_EXPORT_DETAILS)
        is_temp_direct_control_value = validate_field(
            data, "is_temp_direct_control", strings.Generic.
            TemporaryExportDetails.Error.PRODUCTS_UNDER_DIRECT_CONTROL)

        # Only validate temp_direct_control_details if its parent is_temp_direct_control is False
        if is_temp_direct_control_value is False:
            if not data.get("temp_direct_control_details"):
                raise serializers.ValidationError({
                    "temp_direct_control_details":
                    strings.Generic.TemporaryExportDetails.Error.
                    PRODUCTS_UNDER_DIRECT_CONTROL_MISSING_DETAILS
                })

        # Validate temp_direct_control_details if its parent is_temp_direct_control is False and exists on the instance
        if (self.instance.is_temp_direct_control is False
                and not self.instance.temp_direct_control_details
                and not data.get("temp_direct_control_details")):
            raise serializers.ValidationError({
                "temp_direct_control_details":
                strings.Generic.TemporaryExportDetails.Error.
                PRODUCTS_UNDER_DIRECT_CONTROL_MISSING_DETAILS
            })

        validated_data = super().validate(data)

        today = timezone.now().date()
        if "proposed_return_date" in validated_data:
            if validated_data.get("proposed_return_date"):
                if validated_data["proposed_return_date"] <= today:
                    raise serializers.ValidationError({
                        "proposed_return_date":
                        strings.Generic.TemporaryExportDetails.Error.
                        PROPOSED_DATE_NOT_IN_FUTURE
                    })
                validated_data["proposed_return_date"] = str(
                    validated_data["proposed_return_date"])
            else:
                raise serializers.ValidationError({
                    "proposed_return_date":
                    strings.Generic.TemporaryExportDetails.Error.
                    PROPOSED_RETURN_DATE_BLANK
                })

        return validated_data
예제 #5
0
 def validate(self, data):
     validate_field(data, "intended_end_use",
                    strings.Generic.EndUseDetails.Error.INTENDED_END_USE)
     return super().validate(data)