Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. from lfs.order.models import Order
  2.  
  3. def json_serial(obj):
  4. from datetime import datetime
  5.  
  6. if isinstance(obj, datetime):
  7. serial = obj.isoformat()
  8. return serial
  9. print(obj)
  10. raise TypeError("Type not serializable")
  11.  
  12. orders_data = []
  13.  
  14. for o in Order.objects.order_by('id'):
  15. print(o.number)
  16. orders_data.append({
  17. 'number': 'YUK' + o.number,
  18. 'price': o.price,
  19. 'created': o.created,
  20. 'user_data': {
  21. 'username': o.customer_email,
  22. 'email': o.customer_email,
  23. 'phone': o.customer_phone,
  24. 'full_name': o.customer_data.get('full_name'),
  25. 'first_name': o.customer_data.get('first_name'),
  26. 'last_name': o.customer_data.get('last_name'),
  27. },
  28. 'shipping': {
  29. 'method': o.shipping_method.name,
  30. 'data': o.shipping_data
  31. },
  32. 'items': [
  33. {
  34. 'product': item.product.slug if item.product else '',
  35. 'product_name': item.product_name,
  36. 'product_price': item.product_price,
  37. 'product_amount': item.product_amount
  38. }
  39. for item in o.items.all()
  40. ]
  41. })
  42.  
  43. import json
  44. with open('orders.json.1', 'w') as f:
  45. json.dump(orders_data, f, default=json_serial)
  46.  
  47.  
  48.  
  49. # import
  50.  
  51. from users.models import User, Email, Phone
  52. from catalog.models import Product
  53. from checkout.models import OrderStatus, Order, ShippingMethod
  54. import json
  55. with open('orders.json', 'r') as f:
  56. orders_data = json.load(f)
  57.  
  58.  
  59. order_status = OrderStatus.objects.create(
  60. name_ru='Подан',
  61. name_uk='Поданий',
  62. slug='podan',
  63. css_class='order-created'
  64. )
  65.  
  66. for o_data in orders_data:
  67. user_data = o_data['user_data']
  68. print(o_data)
  69. o_data['extra_data'] = o_data.pop('number')
  70. shipping_data = o_data.pop('shipping')
  71. user = User.objects.get_user(form_data=user_data)
  72. items = o_data.pop('items')
  73. print(user)
  74. if not user:
  75. first_name = user_data.pop('first_name')
  76. last_name = user_data.pop('last_name')
  77. User.objects.filter(username=user_data['username']).delete()
  78. if not first_name or not last_name:
  79. first_name = user_data['full_name'].split(' ')[0]
  80. last_name = user_data['full_name'].split(' ')[1:]
  81. user = User(
  82. username=user_data.pop('username'),
  83. first_name=first_name,
  84. last_name=last_name
  85. )
  86. user.set_unusable_password()
  87. user.save()
  88. Email.objects.get_or_create(user=user, email=user_data['email'])
  89. if user_data.get('phone'):
  90. Phone.objects.get_or_create(user=user, number=user_data['phone'])
  91.  
  92. shipping_method = ShippingMethod.objects.get_or_create(
  93. name=shipping_data['method'])
  94.  
  95. order = Order.objects.create(
  96. status=order_status,
  97. **o_data
  98. )
  99. for item in items:
  100. try:
  101. product = Product.objects.get(slug=item.pop('product'))
  102. except Product.DoesNotExist:
  103. product = None
  104. order.items.create(
  105. product=product,
  106. **item
  107. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement