def updater(self, obj, action): parcels: typing.List[types.ParcelDraft] = getattr(action, "parcels") delivery = types.Delivery( id=str(uuid.uuid4()), created_at=datetime.datetime.now(datetime.timezone.utc), parcels=[ types.Parcel( id=str(uuid.uuid4()), created_at=datetime.datetime.now(datetime.timezone.utc), measurements=parcel_draft.measurements, tracking_data=parcel_draft.tracking_data, items=parcel_draft.items, ) for parcel_draft in parcels ], ) if not obj["shippingInfo"]: obj["shippingInfo"] = schemas.ShippingInfoSchema().dump( types.ShippingInfo(deliveries=[])) elif not obj["shippingInfo"]["deliveries"]: obj["shippingInfo"]["deliveries"] = [] value = schemas.DeliverySchema().dump(delivery) if value not in obj["shippingInfo"]["deliveries"]: new = copy.deepcopy(obj) new["shippingInfo"]["deliveries"].append(value) return new return obj
def updater(self, obj, action): parcels: typing.List[types.ParcelDraft] = getattr(action, "parcels") delivery = types.Delivery( id=str(uuid.uuid4()), created_at=datetime.datetime.now(datetime.timezone.utc), items=[], parcels=[ types.Parcel( id=str(uuid.uuid4()), created_at=datetime.datetime.now(datetime.timezone.utc), measurements=parcel_draft.measurements, tracking_data=parcel_draft.tracking_data, items=parcel_draft.items, ) for parcel_draft in parcels ], ) if not obj["shippingInfo"]: obj["shippingInfo"] = ShippingInfoSchema().dump( types.ShippingInfo( shipping_method_name="dummy", price=types.CentPrecisionMoney(fraction_digits=0, cent_amount=0, currency_code="EUR"), shipping_rate=types.ShippingRate( price=types.CentPrecisionMoney(fraction_digits=0, cent_amount=0, currency_code="EUR"), tiers=[], ), shipping_method_state=types.ShippingMethodState( value=None), deliveries=[], )) elif not obj["shippingInfo"]["deliveries"]: obj["shippingInfo"]["deliveries"] = [] value = DeliverySchema().dump(delivery) if value not in obj["shippingInfo"]["deliveries"]: new = copy.deepcopy(obj) new["shippingInfo"]["deliveries"].append(value) return new return obj