From aea31c80c6d84577ab22c216a27d6d01a135d841 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 19 Aug 2025 17:19:31 +0500 Subject: [PATCH] fix --- .../0007_alter_order_project_folder.py | 20 ++++++++++++ core/apps/orders/models/order.py | 2 +- core/apps/orders/serializers/order.py | 31 ++++++------------- 3 files changed, 31 insertions(+), 22 deletions(-) create mode 100644 core/apps/orders/migrations/0007_alter_order_project_folder.py diff --git a/core/apps/orders/migrations/0007_alter_order_project_folder.py b/core/apps/orders/migrations/0007_alter_order_project_folder.py new file mode 100644 index 0000000..0de5d2b --- /dev/null +++ b/core/apps/orders/migrations/0007_alter_order_project_folder.py @@ -0,0 +1,20 @@ +# Generated by Django 5.2.4 on 2025-08-19 17:19 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0006_offer_price_type'), + ('projects', '0016_estimatework_employee_estimatework_end_date_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='project_folder', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='order', to='projects.projectfolder'), + ), + ] diff --git a/core/apps/orders/models/order.py b/core/apps/orders/models/order.py index 4c79c84..ec66d11 100644 --- a/core/apps/orders/models/order.py +++ b/core/apps/orders/models/order.py @@ -22,7 +22,7 @@ class Order(BaseModel): Unity, on_delete=models.CASCADE, related_name='orders' ) project_folder = models.ForeignKey( - ProjectFolder, on_delete=models.CASCADE, related_name='order', null=True + ProjectFolder, on_delete=models.SET_NULL, related_name='order', null=True, blank=True ) project = models.ForeignKey( Project, on_delete=models.SET_NULL, related_name='orders', null=True, blank=True diff --git a/core/apps/orders/serializers/order.py b/core/apps/orders/serializers/order.py index facc559..2f530f0 100644 --- a/core/apps/orders/serializers/order.py +++ b/core/apps/orders/serializers/order.py @@ -22,14 +22,13 @@ class OrderCreateSerializer(serializers.Serializer): quantity = serializers.IntegerField() wherehouse_id = serializers.UUIDField() project_id = serializers.UUIDField(required=False) - project_folder_id = serializers.UUIDField() + project_folder_id = serializers.UUIDField(required=False) def validate(self, data): try: product = Product.objects.get(id=data['product_id']) unity = Unity.objects.get(id=data['unity_id']) wherehouse = WhereHouse.objects.get(id=data['wherehouse_id']) - project_folder = ProjectFolder.objects.get(id=data['project_folder_id']) if data.get('project_id'): Project.objects.get( id=data['project_id'] @@ -40,34 +39,24 @@ class OrderCreateSerializer(serializers.Serializer): raise serializers.ValidationError("Unity not found") except WhereHouse.DoesNotExist: raise serializers.ValidationError("Where House not found") - except ProjectFolder.DoesNotExist: - raise serializers.ValidationError("Project Folder not found") try: if data.get('project_id'): data['project'] = Project.objects.get(id=data['project_id']) except Project.DoesNotExist: raise serializers.ValidationError("Project not found") - + if data.get('project_folder_id'): + try: + project_folder = ProjectFolder.objects.get(id=data['project_folder_id']) + + except ProjectFolder.DoesNotExist: + raise serializers.ValidationError("Project Folder not found") + data['project_folder'] = project_folder + data['product'] = product data['unity'] = unity data['wherehouse'] = wherehouse - data['project_folder'] = project_folder return data - # def create(self, validated_data): - # with transaction.atomic(): - # order = Order.objects.create( - # product=validated_data.get('product'), - # unity=validated_data.get('unity'), - # wherehouse=validated_data.get('wherehouse'), - # project_folder=validated_data.get('project_folder'), - # project=validated_data.get('project'), - # quantity=validated_data.get('quantity'), - # date=validated_data.get('date'), - # employee=self.context.get('user'), - # ) - # return order - class MultipleOrderCreateSerializer(serializers.Serializer): resources = OrderCreateSerializer(many=True) @@ -84,7 +73,7 @@ class MultipleOrderCreateSerializer(serializers.Serializer): product=resource['product'], unity=resource['unity'], wherehouse=resource['wherehouse'], - project_folder=resource['project_folder'], + project_folder=resource.get('project_folder'), project=resource.get('project'), quantity=resource['quantity'], date=common_date,