Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. # to generate fixtures
  2. # run from app root: docker exec -it kdata_web_1 python utils/generate_fixtures.py
  3.  
  4. # Set the path
  5. import os, sys
  6. sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
  7.  
  8. from datetime import datetime
  9. from faker import Factory
  10. import csv
  11. from random import randrange
  12.  
  13. from application import create_app, db
  14. from customer.models import Customer
  15.  
  16. app_factory = create_app()
  17. fake = Factory.create()
  18.  
  19. with app_factory.app_context():
  20.  
  21. with open('customer/fixtures/customers.csv', 'w+') as csvfile:
  22. fieldnames = ['first_name', 'last_name', 'email', 'ntf_datetime']
  23. writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
  24. writer.writeheader()
  25.  
  26. # create 50 customers for the month of january
  27. create_customers(writer, 50, 2017, 1)
  28.  
  29. with open('order/fixtures/orders.csv', 'w+') as csvfile:
  30. fieldnames = ['customer_id', 'amount', 'datetime']
  31. writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
  32. writer.writeheader()
  33.  
  34. # create 80 orders for the month of january
  35. create_orders(writer, 80, 50, 2017, 1)
  36.  
  37. def create_customers(writer, number, year, month):
  38. for i in range(1, number):
  39. first_name = fake.first_name()
  40. last_name = fake.last_name()
  41. email = fake.email()
  42. ntf_datetime = fake.date_time_between_dates(
  43. datetime_start=datetime(year,month,1),
  44. datetime_end=datetime(year,month,31)
  45. )
  46. writer.writerow(
  47. {
  48. 'first_name': first_name,
  49. 'last_name': last_name,
  50. 'email': email,
  51. 'ntf_datetime': ntf_datetime}
  52. )
  53.  
  54. def create_orders(writer, number, customer_range, year, month):
  55. for i in range(1, number):
  56. customer_id = randrange(1, customer_range)
  57. amount = fake.pydecimal(
  58. left_digits=3,
  59. right_digits=2,
  60. positive=True
  61. )
  62. order_datetime = fake.date_time_between_dates(
  63. datetime_start=datetime(year,month,1),
  64. datetime_end=datetime(year,month,31)
  65. )
  66. writer.writerow(
  67. {
  68. 'customer_id': customer_id,
  69. 'amount': amount,
  70. 'datetime': order_datetime}
  71. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement