|
import uuid |
|
|
|
from validation_submission.get_json import get_json_tmp, get_json_one_individual |
|
from circumstances.class_circumstance import Circumstances |
|
from behavior.class_behavior import Behaviors |
|
from physical.class_physical import PhysicalAnomalies |
|
from follow_up.class_follow_up import FollowUpEvents |
|
from classes import Report, Wounded, Dead, ImageBase64 |
|
from validation_submission.processing import process_circumstance, process_behaviors, process_physical, process_followup |
|
|
|
def get_fields(data_dict, keyword): |
|
extract = {} |
|
for key, val in data_dict.items(): |
|
if keyword in key: |
|
extract[key] = val |
|
return extract |
|
|
|
def validate_individual(): |
|
data = get_json_one_individual() |
|
data["identifier"] = str(uuid.uuid4()) |
|
if "wounded_state" not in data or "dead_state" not in data: |
|
data["wounded_state"] = "No" |
|
data["dead_state"] = "No" |
|
if (data["wounded_state"] == "Yes") or (data["dead_state"] == "Yes"): |
|
data_wounded_dead = get_json_tmp("wounded_dead") |
|
circumstance = validate_circumstance(data_wounded_dead) |
|
physical = validate_physical(data_wounded_dead) |
|
followup = validate_follow_up(data_wounded_dead) |
|
|
|
if data["wounded_state"]=="Yes": |
|
behavior = validate_behavior(data_wounded_dead) |
|
individual = Report(identifier = data["identifier"], |
|
image = ImageBase64.to_base64(data["image"]), |
|
geolocalisation = data["geolocalisation"], |
|
wounded_state = data["wounded_state"], |
|
wounded = Wounded(circumstances = circumstance, |
|
behaviors = behavior, |
|
physical_anomalies = physical, |
|
follow_up_events = followup), |
|
dead_state = data["dead_state"]) |
|
elif data["dead_state"]=="Yes": |
|
individual = Report(identifier = data["identifier"], |
|
image = ImageBase64.to_base64(data["image"]), |
|
geolocalisation = data["geolocalisation"], |
|
wounded_state = data["wounded_state"], |
|
dead_state = data["dead_state"], |
|
dead = Dead(circumstances = circumstance, |
|
physical_anomalies = physical, |
|
follow_up_events = followup) |
|
) |
|
else: |
|
data["image"] = ImageBase64.to_base64(data["image"]) |
|
if not Report(**data).validate(): |
|
print("Validation failed for creating the individual report.") |
|
else: |
|
individual = Report(**data) |
|
return individual |
|
|
|
|
|
|
|
|
|
def validate_circumstance(data): |
|
circumstance_raw = get_fields(data, "circumstance") |
|
circumstance_formatted = process_circumstance(circumstance_raw) |
|
if not Circumstances.model_validate(circumstance_formatted): |
|
print("Validation failed for the circumstance.") |
|
else: |
|
return Circumstances(**circumstance_formatted) |
|
|
|
def validate_behavior(data): |
|
behaviors_raw = get_fields(data, "behaviors") |
|
behaviors_formatted = process_behaviors(behaviors_raw) |
|
try: |
|
Behaviors.model_validate(behaviors_formatted) |
|
return Behaviors(**behaviors_formatted) |
|
except: |
|
print("Validation failed for the behaviors.") |
|
|
|
|
|
def validate_physical(data): |
|
physical_raw = get_fields(data, "physical") |
|
physical_formatted = process_physical(physical_raw) |
|
try: |
|
PhysicalAnomalies.model_validate(physical_formatted) |
|
return PhysicalAnomalies(**physical_formatted) |
|
except: |
|
print("Validation failed for the physical anomalies.") |
|
|
|
def validate_follow_up(data): |
|
followup_raw = get_fields(data, "followup") |
|
followup_formatted = process_followup(followup_raw) |
|
try: |
|
FollowUpEvents.model_validate(followup_formatted) |
|
return FollowUpEvents(**followup_formatted) |
|
except: |
|
print("Validation failed for the follow-up events.") |
|
|
|
|
|
|
|
|