Used to prevent update execution.
Doesn't encounter cases of similarity
which are thrown away by resource
validation in different places
(generate_draft_document and top of caller)
Source code in api/utils/check_carriers_resources.py
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142 | def check_resources_are_same(order_data, update_data) -> bool:
"""
Used to prevent update execution.
Doesn't encounter cases of similarity
which are thrown away by resource
validation in different places
(generate_draft_document and top of caller)
"""
order = OrderDBModel(**order_data)
update = OrderDBModel(**update_data)
same_truck = same_driver = False
if order.truck and update.truck:
if order.truck.id == update.truck.id:
same_truck = True
if order.driver and update.driver:
if order.driver.id == update.driver.id:
same_driver = True
truck = update.truck or order.truck
if truck is None:
raise BadParameterHTTPError("нет тягача")
if truck.truck_type == TruckType.van_truck:
if same_truck and same_driver:
return True
if order.trailer and update.trailer:
if order.trailer.id == update.trailer.id:
return same_truck and same_driver
return False
|