generate_data()   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
c 0
b 0
f 0
rs 9.4285
cc 3
1
# coding=utf-8
2
import json
3
from random import randrange
4
5
import arrow
6
from faker import Factory
7
8
from .faces import faces
9
10
fake = Factory.create()
11
12
13
def generate_user():
14
    email = fake.email()
15
    username = email.split("@")[0]
16
17
    return {
18
        'username': username,
19
        'email': email
20
    }
21
22
23
def generate_product():
24
    return {
25
        'id': randrange(1, 999999),
26
        'face': faces[randrange(0, len(faces))],
27
        'price': randrange(1, 1234),
28
        'size': randrange(12, 40)
29
    }
30
31
32
def generate_purchases(users, products, max_purchases_per_user):
33
    num_products = len(products)
34
35
    def generate_purchase(user):
36
        date = arrow.utcnow().replace(seconds=-randrange(100, 999999))
37
38
        return {
39
            'id': randrange(1, 999999),
40
            'username': user['username'],
41
            'product_id': products[randrange(0, num_products)]['id'],
42
            'date': date.isoformat()
43
        }
44
45
    purchases = []
46
    n = randrange(0, max_purchases_per_user)
47
    for user in users:
48
        purchases.extend([generate_purchase(user) for _ in range(0, n)])
49
50
    return purchases
51
52
    # return list(map(gen, users))
53
54
55
def generate_data():
56
    num_users = 10
57
    num_products = 20
58
    max_purchases_per_user = 10
59
    users = [generate_user() for _ in range(0, num_users)]
60
    products = [generate_product() for _ in range(0, num_products)]
61
    purchases = generate_purchases(users, products, max_purchases_per_user)
62
63
    return {
64
        'users': users,
65
        'products': products,
66
        'purchases': purchases
67
    }
68
69
70
if __name__ == '__main__':
71
    print(json.dumps(generate_data()))
72