-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathfactories.py
70 lines (62 loc) · 2.06 KB
/
factories.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# factories.py
import factory
from faker import Faker
from django.utils import timezone
from datetime import timedelta
import uuid
from typing import List
import random
from bill.models import *
fake = Faker()
def generate_users(batch_size: int = 10000) -> List[ExtendUser]:
users = []
for _ in range(batch_size):
users.append(
ExtendUser(email=fake.email(), password=make_password("password123"))
)
return ExtendUser.objects.bulk_create(users)
def generate_billings(
users: List[ExtendUser], batch_size: int = 10000
) -> List[Billing]:
billings = []
for user in users:
for _ in range(random.randint(1, 3)):
billings.append(
Billing(
id=uuid.uuid4(),
full_name=fake.name(),
contact=fake.phone_number()[:15],
address=fake.street_address(),
state=fake.state(),
city=fake.city(),
user=user,
)
)
return Billing.objects.bulk_create(billings)
def generate_payments(batch_size: int = 10000) -> List[Payment]:
payments = []
for _ in range(batch_size):
payments.append(
Payment(
id=uuid.uuid4(),
amount=random.uniform(10, 1000),
email=fake.email(),
name=fake.name(),
phone=fake.phone_number()[:15],
verified=random.choice([True, False]),
used=random.choice([True, False]),
)
)
return Payment.objects.bulk_create(payments)
def generate_coupons(batch_size: int = 1000) -> List[Coupon]:
coupons = []
for _ in range(batch_size):
coupons.append(
Coupon(
id=uuid.uuid4(),
value=random.randint(5, 50),
valid_until=timezone.now() + timedelta(days=random.randint(1, 365)),
user_list=[fake.email() for _ in range(random.randint(1, 5))],
)
)
return Coupon.objects.bulk_create(coupons)