add: add users field for warehouse model
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user