fix: fix some api issue in fronted
This commit is contained in:
@@ -32,38 +32,25 @@ class ItemSerializer(serializers.ModelSerializer):
|
||||
item=obj, is_returned=False
|
||||
).first()
|
||||
if current_usage:
|
||||
return UserSerializer(current_usage.user).data
|
||||
return {
|
||||
'username': current_usage.user,
|
||||
'contact': current_usage.borrower_contact
|
||||
}
|
||||
return None
|
||||
|
||||
|
||||
class ItemUsageSerializer(serializers.ModelSerializer):
|
||||
user = UserSerializer(read_only=True)
|
||||
user_id = serializers.IntegerField(write_only=True)
|
||||
item = ItemSerializer(read_only=True)
|
||||
item_id = serializers.IntegerField(write_only=True)
|
||||
item_name = serializers.CharField(source='item.name', read_only=True)
|
||||
item_serial = serializers.CharField(source='item.serial_number', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = ItemUsage
|
||||
fields = [
|
||||
'id', 'item', 'item_id', 'user', 'user_id', 'start_time', 'end_time',
|
||||
'purpose', 'notes', 'is_returned', 'condition_before', 'condition_after',
|
||||
'created_at'
|
||||
'id', 'item', 'item_name', 'item_serial', 'user', 'borrower_contact',
|
||||
'start_time', 'end_time', 'purpose', 'notes', 'is_returned',
|
||||
'condition_before', 'condition_after', 'expected_return_time', 'created_at'
|
||||
]
|
||||
|
||||
def create(self, validated_data):
|
||||
# 当创建新的使用记录时,更新物品状态为使用中
|
||||
item = Item.objects.get(id=validated_data['item_id'])
|
||||
item.status = 'in_use'
|
||||
item.save()
|
||||
return super().create(validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
# 当归还物品时,更新物品状态为可用
|
||||
if validated_data.get('is_returned', False) and not instance.is_returned:
|
||||
item = instance.item
|
||||
item.status = 'available'
|
||||
item.save()
|
||||
return super().update(instance, validated_data)
|
||||
read_only_fields = ['created_at']
|
||||
|
||||
|
||||
class ItemDetailSerializer(ItemSerializer):
|
||||
|
||||
+11
-17
@@ -32,29 +32,23 @@ class ItemViewSet(viewsets.ModelViewSet):
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
user_id = request.data.get('user_id')
|
||||
user_name = request.data.get('user_name')
|
||||
user_contact = request.data.get('user_contact', '')
|
||||
purpose = request.data.get('purpose', '')
|
||||
notes = request.data.get('notes', '')
|
||||
condition_before = request.data.get('condition_before', '')
|
||||
|
||||
if not user_id:
|
||||
if not user_name:
|
||||
return Response(
|
||||
{'error': '请指定使用者'},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
try:
|
||||
user = User.objects.get(id=user_id)
|
||||
except User.DoesNotExist:
|
||||
return Response(
|
||||
{'error': '用户不存在'},
|
||||
{'error': '请输入使用者姓名'},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
# 创建使用记录
|
||||
usage = ItemUsage.objects.create(
|
||||
item=item,
|
||||
user=user,
|
||||
user=user_name,
|
||||
borrower_contact=user_contact,
|
||||
start_time=timezone.now(),
|
||||
purpose=purpose,
|
||||
notes=notes,
|
||||
@@ -125,13 +119,13 @@ class ItemUsageViewSet(viewsets.ModelViewSet):
|
||||
|
||||
@action(detail=False)
|
||||
def by_user(self, request):
|
||||
"""根据用户ID获取使用记录"""
|
||||
user_id = request.query_params.get('user_id')
|
||||
if user_id:
|
||||
usages = self.queryset.filter(user_id=user_id)
|
||||
"""根据用户姓名获取使用记录"""
|
||||
user_name = request.query_params.get('user_name')
|
||||
if user_name:
|
||||
usages = self.queryset.filter(user__icontains=user_name)
|
||||
serializer = self.get_serializer(usages, many=True)
|
||||
return Response(serializer.data)
|
||||
return Response({'error': '请提供用户ID'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({'error': '请提供用户姓名'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class CategoryViewSet(viewsets.ModelViewSet):
|
||||
|
||||
Reference in New Issue
Block a user