add: add users field for warehouse model

This commit is contained in:
behruz-dev
2025-09-25 17:40:50 +05:00
parent dc079480e6
commit e8e22fe478
5 changed files with 52 additions and 11 deletions

View File

@@ -3,16 +3,17 @@ from django.db import transaction
from rest_framework import serializers
from core.apps.wherehouse.models.wherehouse import WhereHouse
from core.apps.wherehouse.serializers.inventory import InventoryListSerializer
from core.apps.company.serializers.branch import BranchListSerializer
from core.apps.company.models import Branch
from core.apps.accounts.models import User
from core.apps.accounts.serializers.user import UserListSerializer
class WhereHouseListSerializer(serializers.ModelSerializer):
users = UserListSerializer(many=True)
class Meta:
model = WhereHouse
fields = [
'id', 'name', 'address',
'id', 'name', 'address', 'users'
]
@@ -27,24 +28,34 @@ class WhereHouseDetailSerializer(serializers.ModelSerializer):
class WhereHouseCreateSerializer(serializers.Serializer):
name = serializers.CharField()
address = serializers.CharField()
user_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False)
def create(self, validated_data):
with transaction.atomic():
return WhereHouse.objects.create(
user_ids = validated_data.pop('user_ids', [])
wherehouse = WhereHouse.objects.create(
name=validated_data.get('name'),
address=validated_data.get('address'),
)
if user_ids:
users = User.objects.filter(id__in=user_ids)
wherehouse.users.set(users)
return wherehouse
class WhereHouseUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = WhereHouse
fields = [
'name', 'address',
'name', 'address', 'users'
]
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.address = validated_data.get('address', instance.address)
users = validated_data.pop('users', None)
if users is not None:
instance.users.set(users)
instance.save()
return instance