in datasets/thelook_ecommerce/pipelines/_images/run_thelook_kub/fake.py [0:0]
def __post_init__(self, user=None):
self.parent = user
self.user_id = user.id
self.gender = user.gender
self.status = self.random_item(
population=["Complete", "Cancelled", "Returned", "Processing", "Shipped"],
distribution=[0.25, 0.15, 0.1, 0.2, 0.3],
)
self.created_at = self.child_created_at()
# add random generator for days it takes to ship, deliver, return etc.
if self.status == "Returned":
self.shipped_at = self.created_at + datetime.timedelta(
minutes=random.randrange(MINUTES_IN_DAY * 3)
) # shipped between 0-3 days after order placed
self.delivered_at = self.shipped_at + datetime.timedelta(
minutes=random.randrange(MINUTES_IN_DAY * 5)
) # delivered between 0-5 days after ship date
self.returned_at = self.delivered_at + datetime.timedelta(
minutes=random.randrange(MINUTES_IN_DAY * 3)
) # returned 0-3 days after order is delivered
elif self.status == "Complete":
self.shipped_at = self.created_at + datetime.timedelta(
minutes=random.randrange(MINUTES_IN_DAY * 3)
) # shipped between 0-3 days after order placed
self.delivered_at = self.shipped_at + datetime.timedelta(
minutes=random.randrange(MINUTES_IN_DAY * 5)
) # delivered between 0-5 days after ship date
self.returned_at = None
elif self.status == "Shipped":
self.shipped_at = self.created_at + datetime.timedelta(
minutes=random.randrange(MINUTES_IN_DAY * 3)
) # shipped between 0-3 days after order placed
self.delivered_at = None
self.returned_at = None
else:
self.shipped_at = None
self.delivered_at = None
self.returned_at = None
self.user = user # pass person object to order_items
# randomly generate number of items in an order
num_of_items = self.random_item(
population=[1, 2, 3, 4], distribution=[0.7, 0.2, 0.05, 0.05]
)
self.num_of_item = num_of_items
for _ in range(num_of_items):
order_items.append(dataclasses.asdict(OrderItem(order=self)))