Ejemplo n.º 1
0
    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