Перейти к содержанию

check_carriers_resources

check_resources_are_same

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)

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