add: add new field for warehouse create api

This commit is contained in:
behruz-dev
2025-10-01 13:30:36 +05:00
parent 5791533170
commit 653e9d0230

View File

@@ -5,6 +5,7 @@ from rest_framework import serializers
from core.apps.wherehouse.models.wherehouse import WhereHouse from core.apps.wherehouse.models.wherehouse import WhereHouse
from core.apps.accounts.models import User from core.apps.accounts.models import User
from core.apps.accounts.serializers.user import UserListSerializer from core.apps.accounts.serializers.user import UserListSerializer
from core.apps.projects.models.project import Project
class WhereHouseListSerializer(serializers.ModelSerializer): class WhereHouseListSerializer(serializers.ModelSerializer):
@@ -29,10 +30,12 @@ class WhereHouseCreateSerializer(serializers.Serializer):
name = serializers.CharField() name = serializers.CharField()
address = serializers.CharField() address = serializers.CharField()
user_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False) user_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False)
project_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False)
def create(self, validated_data): def create(self, validated_data):
with transaction.atomic(): with transaction.atomic():
user_ids = validated_data.pop('user_ids', []) user_ids = validated_data.pop('user_ids', [])
project_ids = validated_data.pop('project_ids', [])
wherehouse = WhereHouse.objects.create( wherehouse = WhereHouse.objects.create(
name=validated_data.get('name'), name=validated_data.get('name'),
address=validated_data.get('address'), address=validated_data.get('address'),
@@ -40,6 +43,13 @@ class WhereHouseCreateSerializer(serializers.Serializer):
if user_ids: if user_ids:
users = User.objects.filter(id__in=user_ids) users = User.objects.filter(id__in=user_ids)
wherehouse.users.set(users) wherehouse.users.set(users)
if project_ids:
projects = Project.objects.filter(id__in=project_ids)
for project in projects:
project.wherehouse.add(wherehouse)
project.save()
return wherehouse return wherehouse