Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from lfs.order.models import Order
- def json_serial(obj):
- from datetime import datetime
- if isinstance(obj, datetime):
- serial = obj.isoformat()
- return serial
- print(obj)
- raise TypeError("Type not serializable")
- orders_data = []
- for o in Order.objects.order_by('id'):
- print(o.number)
- orders_data.append({
- 'number': 'YUK' + o.number,
- 'price': o.price,
- 'created': o.created,
- 'user_data': {
- 'username': o.customer_email,
- 'email': o.customer_email,
- 'phone': o.customer_phone,
- 'full_name': o.customer_data.get('full_name'),
- 'first_name': o.customer_data.get('first_name'),
- 'last_name': o.customer_data.get('last_name'),
- },
- 'shipping': {
- 'method': o.shipping_method.name,
- 'data': o.shipping_data
- },
- 'items': [
- {
- 'product': item.product.slug if item.product else '',
- 'product_name': item.product_name,
- 'product_price': item.product_price,
- 'product_amount': item.product_amount
- }
- for item in o.items.all()
- ]
- })
- import json
- with open('orders.json.1', 'w') as f:
- json.dump(orders_data, f, default=json_serial)
- # import
- from users.models import User, Email, Phone
- from catalog.models import Product
- from checkout.models import OrderStatus, Order, ShippingMethod
- import json
- with open('orders.json', 'r') as f:
- orders_data = json.load(f)
- order_status = OrderStatus.objects.create(
- name_ru='Подан',
- name_uk='Поданий',
- slug='podan',
- css_class='order-created'
- )
- for o_data in orders_data:
- user_data = o_data['user_data']
- print(o_data)
- o_data['extra_data'] = o_data.pop('number')
- shipping_data = o_data.pop('shipping')
- user = User.objects.get_user(form_data=user_data)
- items = o_data.pop('items')
- print(user)
- if not user:
- first_name = user_data.pop('first_name')
- last_name = user_data.pop('last_name')
- User.objects.filter(username=user_data['username']).delete()
- if not first_name or not last_name:
- first_name = user_data['full_name'].split(' ')[0]
- last_name = user_data['full_name'].split(' ')[1:]
- user = User(
- username=user_data.pop('username'),
- first_name=first_name,
- last_name=last_name
- )
- user.set_unusable_password()
- user.save()
- Email.objects.get_or_create(user=user, email=user_data['email'])
- if user_data.get('phone'):
- Phone.objects.get_or_create(user=user, number=user_data['phone'])
- shipping_method = ShippingMethod.objects.get_or_create(
- name=shipping_data['method'])
- order = Order.objects.create(
- status=order_status,
- **o_data
- )
- for item in items:
- try:
- product = Product.objects.get(slug=item.pop('product'))
- except Product.DoesNotExist:
- product = None
- order.items.create(
- product=product,
- **item
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement