Times POST no longer raises a ValidationError when the provided time is in the past.
This commit is contained in:
parent
7a97cd7d95
commit
c90b002806
@ -85,10 +85,13 @@ class InputValidationTimes():
|
|||||||
# 2.) datasets may only be created, if the respective participant type did not already create one.
|
# 2.) datasets may only be created, if the respective participant type did not already create one.
|
||||||
InputValidationTimes.check_if_entry_already_exists_for_participant_type(user_data, loadedModel, content)
|
InputValidationTimes.check_if_entry_already_exists_for_participant_type(user_data, loadedModel, content)
|
||||||
|
|
||||||
# 3.) Reference checking
|
# 3.) only users who are *not* of type BSMD may post times datasets.
|
||||||
|
InputValidationTimes.check_user_is_not_bsmd_type(user_data)
|
||||||
|
|
||||||
|
# 4.) Reference checking
|
||||||
InputValidationTimes.check_dataset_references(content)
|
InputValidationTimes.check_dataset_references(content)
|
||||||
|
|
||||||
# 4.) Value checking
|
# 5.) Value checking
|
||||||
InputValidationTimes.check_dataset_values(user_data, loadedModel, content)
|
InputValidationTimes.check_dataset_values(user_data, loadedModel, content)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -140,7 +143,6 @@ class InputValidationTimes():
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def check_user_is_not_bsmd_type(user_data:dict):
|
def check_user_is_not_bsmd_type(user_data:dict):
|
||||||
"""a new dataset may only be created by a user who is *not* belonging to participant group BSMD"""
|
"""a new dataset may only be created by a user who is *not* belonging to participant group BSMD"""
|
||||||
# this method is deprecated for /times POST requests. As the function may be used elsewhere, it will, for now, not be removed
|
|
||||||
is_bsmd = check_if_user_is_bsmd_type(user_data)
|
is_bsmd = check_if_user_is_bsmd_type(user_data)
|
||||||
if is_bsmd:
|
if is_bsmd:
|
||||||
raise ValidationError({"participant_type":f"current user belongs to BSMD. Cannot post 'times' datasets. Found user data: {user_data}"})
|
raise ValidationError({"participant_type":f"current user belongs to BSMD. Cannot post 'times' datasets. Found user data: {user_data}"})
|
||||||
@ -171,7 +173,6 @@ class InputValidationTimes():
|
|||||||
if not time_end_after_time_start:
|
if not time_end_after_time_start:
|
||||||
raise ValidationError({"etd":f"The provided time interval for the estimated departure time is invalid. The interval end takes place before the interval start. Found interval data: {loadedModel['etd_berth']} to {loadedModel['etd_interval_end']}"})
|
raise ValidationError({"etd":f"The provided time interval for the estimated departure time is invalid. The interval end takes place before the interval start. Found interval data: {loadedModel['etd_berth']} to {loadedModel['etd_interval_end']}"})
|
||||||
|
|
||||||
|
|
||||||
if (loadedModel["eta_interval_end"] is not None) and (loadedModel["eta_berth"] is not None):
|
if (loadedModel["eta_interval_end"] is not None) and (loadedModel["eta_berth"] is not None):
|
||||||
time_end_after_time_start = loadedModel["eta_interval_end"] >= loadedModel["eta_berth"]
|
time_end_after_time_start = loadedModel["eta_interval_end"] >= loadedModel["eta_berth"]
|
||||||
if not time_end_after_time_start:
|
if not time_end_after_time_start:
|
||||||
|
|||||||
@ -19,9 +19,9 @@ def validate_time_is_in_future(value:datetime.datetime):
|
|||||||
|
|
||||||
def validate_time_is_in_not_too_distant_future(raise_validation_error:bool, value:datetime.datetime, seconds:int=60, minutes:int=60, hours:int=24, days:int=30, months:int=12)->bool:
|
def validate_time_is_in_not_too_distant_future(raise_validation_error:bool, value:datetime.datetime, seconds:int=60, minutes:int=60, hours:int=24, days:int=30, months:int=12)->bool:
|
||||||
"""
|
"""
|
||||||
combines two boolean operations. Returns True when both conditions are met.
|
A time entry is considerd valid, when it meets the following condition(s):
|
||||||
a) value is in the future
|
a) value is not too distant (e.g., at max. 1 year in the future)
|
||||||
b) value is not too distant (e.g., at max. 1 year in the future)
|
Previous variants of this function also included validating that a time must be in the future. This is deprecated.
|
||||||
|
|
||||||
When the value is 'None', the validation will be skipped. A ValidationError is never issued, but the method returns 'False'.
|
When the value is 'None', the validation will be skipped. A ValidationError is never issued, but the method returns 'False'.
|
||||||
|
|
||||||
@ -31,17 +31,17 @@ def validate_time_is_in_not_too_distant_future(raise_validation_error:bool, valu
|
|||||||
if value is None:
|
if value is None:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
is_in_future = validate_time_is_in_future(value)
|
# is_in_future = validate_time_is_in_future(value)
|
||||||
is_too_distant = validate_time_exceeds_threshold(value, seconds, minutes, hours, days, months)
|
is_too_distant = validate_time_exceeds_threshold(value, seconds, minutes, hours, days, months)
|
||||||
|
|
||||||
if raise_validation_error:
|
if raise_validation_error:
|
||||||
if not is_in_future:
|
#if not is_in_future:
|
||||||
raise ValidationError({"any_date":f"The provided value must be in the future. Current Time: {datetime.datetime.now()}, Value: {value}"})
|
#raise ValidationError({"any_date":f"The provided value must be in the future. Current Time: {datetime.datetime.now()}, Value: {value}"})
|
||||||
|
|
||||||
if is_too_distant:
|
if is_too_distant:
|
||||||
raise ValidationError({"any_date":f"The provided value is in the too distant future and exceeds a threshold for 'reasonable' entries. Found: {value}"})
|
raise ValidationError({"any_date":f"The provided value is in the too distant future and exceeds a threshold for 'reasonable' entries. Found: {value}"})
|
||||||
|
|
||||||
return is_in_future & (not is_too_distant)
|
return (not is_too_distant) # & is_in_future
|
||||||
|
|
||||||
class TimeLogic():
|
class TimeLogic():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user