add management command for products and orders app
This commit is contained in:
52
core/apps/orders/management/commands/import_orders.py
Normal file
52
core/apps/orders/management/commands/import_orders.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from core.apps.orders.models import Order
|
||||
from core.apps.products.models import Unity, Product
|
||||
from core.apps.projects.models import ProjectFolder
|
||||
from core.apps.wherehouse.models import WhereHouse
|
||||
from core.apps.accounts.models import User
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Import orders from JSON file"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("file_path", type=str, help="Path to JSON file")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
file_path = options['file_path']
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
for item in data['data']['data']:
|
||||
product_name = item['product']['name']['uz']
|
||||
unit_name = item['unit']['name']['uz']
|
||||
warehouse_name = item['warehouse']['name']
|
||||
project_name = item['project']['name']
|
||||
creator_name = item['creator']['full_name']
|
||||
|
||||
product = Product.objects.filter(name=product_name).first()
|
||||
unity = Unity.objects.filter(value=unit_name).first()
|
||||
wherehouse = WhereHouse.objects.filter(name=warehouse_name).first()
|
||||
project_folder = ProjectFolder.objects.filter(name=project_name).first()
|
||||
user = User.objects.filter(full_name=creator_name).first()
|
||||
|
||||
delivery_date = datetime.strptime(item['delivery_date'], "%d.%m.%Y").date()
|
||||
created_at = datetime.strptime(item['created_at'], "%d.%m.%Y %H:%M")
|
||||
|
||||
Order.objects.update_or_create(
|
||||
status=item['status'].upper(),
|
||||
product=product,
|
||||
unity=unity,
|
||||
wherehouse=wherehouse,
|
||||
project_folder=project_folder,
|
||||
employee=user,
|
||||
quantity=item['quantity'],
|
||||
currency=item['currency']['symbol'].lower(),
|
||||
created_at=created_at,
|
||||
date=delivery_date
|
||||
)
|
||||
|
||||
self.stdout.write(self.style.SUCCESS("Orders imported successfully ✅"))
|
||||
Reference in New Issue
Block a user