Merge pull request #26 from tienthienhd/fixbug/delete-warehouse
fix:change-status-warehouse
This commit is contained in:
commit
a0a3426749
@ -797,6 +797,8 @@ class DocumentSerializer(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SavedViewFilterRuleSerializer(serializers.ModelSerializer):
|
class SavedViewFilterRuleSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SavedViewFilterRule
|
model = SavedViewFilterRule
|
||||||
@ -1796,11 +1798,33 @@ class WorkflowSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class WarehouseSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
class WarehouseSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
||||||
|
document_count = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Warehouse
|
model = Warehouse
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
def get_document_count(self, obj):
|
||||||
|
return self.get_total_document_count(obj)
|
||||||
|
|
||||||
|
def get_total_document_count(self, warehouse):
|
||||||
|
if warehouse.type == Warehouse.BOXCASE:
|
||||||
|
return Document.objects.filter(warehouse=warehouse).count()
|
||||||
|
elif warehouse.type == Warehouse.SHELF:
|
||||||
|
child_warehouses = Warehouse.objects.filter(parent_warehouse=warehouse)
|
||||||
|
total_count = 0
|
||||||
|
for child_warehouse in child_warehouses:
|
||||||
|
total_count += self.get_total_document_count(child_warehouse)
|
||||||
|
return total_count
|
||||||
|
elif warehouse.type == Warehouse.WAREHOUSE:
|
||||||
|
child_warehouses = Warehouse.objects.filter(parent_warehouse=warehouse)
|
||||||
|
total_count = 0
|
||||||
|
for child_warehouse in child_warehouses:
|
||||||
|
total_count += self.get_total_document_count(child_warehouse)
|
||||||
|
return total_count
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1850,18 +1850,51 @@ class WarehouseViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
parent_warehouse = Warehouse.objects.filter(id=parent_warehouse.id if parent_warehouse else 0).first()
|
parent_warehouse = Warehouse.objects.filter(id=parent_warehouse.id if parent_warehouse else 0).first()
|
||||||
|
|
||||||
if serializer.validated_data.get("type") == Warehouse.WAREHOUSE and not parent_warehouse:
|
if serializer.validated_data.get("type") == Warehouse.WAREHOUSE and not parent_warehouse:
|
||||||
serializer.save()
|
warehouse = serializer.save()
|
||||||
|
warehouse.path = str(warehouse.id)
|
||||||
|
warehouse.save()
|
||||||
elif serializer.validated_data.get("type", "") == Warehouse.SHELF and getattr(parent_warehouse, 'type', "") == Warehouse.WAREHOUSE :
|
elif serializer.validated_data.get("type", "") == Warehouse.SHELF and getattr(parent_warehouse, 'type', "") == Warehouse.WAREHOUSE :
|
||||||
serializer.save(type = Warehouse.SHELF, parent_warehouse = parent_warehouse)
|
warehouse = serializer.save(type=Warehouse.SHELF, parent_warehouse=parent_warehouse)
|
||||||
|
warehouse.path = f"{parent_warehouse.path}/{warehouse.id}"
|
||||||
|
warehouse.save()
|
||||||
elif serializer.validated_data.get("type", "") == Warehouse.BOXCASE and getattr(parent_warehouse, 'type', "") == Warehouse.SHELF :
|
elif serializer.validated_data.get("type", "") == Warehouse.BOXCASE and getattr(parent_warehouse, 'type', "") == Warehouse.SHELF :
|
||||||
serializer.save(type = Warehouse.BOXCASE, parent_warehouse = parent_warehouse)
|
warehouse = serializer.save(type=Warehouse.BOXCASE, parent_warehouse=parent_warehouse)
|
||||||
|
warehouse.path = f"{parent_warehouse.path}/{warehouse.id}"
|
||||||
|
warehouse.save()
|
||||||
else:
|
else:
|
||||||
return Response({'status':400,
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||||
'message':'misplaced'},status=status.HTTP_400_BAD_REQUEST)
|
|
||||||
|
|
||||||
return Response({'status':201,
|
return Response(serializer.data,status=status.HTTP_201_CREATED)
|
||||||
'message':'created successfully',
|
|
||||||
'data':serializer.data},status=status.HTTP_201_CREATED)
|
def update(self, request, *args, **kwargs):
|
||||||
|
partial = kwargs.pop('partial', False)
|
||||||
|
instance = self.get_object()
|
||||||
|
serializer = self.get_serializer(instance, data=request.data, partial=partial)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
|
||||||
|
|
||||||
|
old_parent_warehouse = instance.parent_warehouse
|
||||||
|
|
||||||
|
self.perform_update(serializer)
|
||||||
|
|
||||||
|
if old_parent_warehouse != instance.parent_warehouse:
|
||||||
|
|
||||||
|
if instance.type == Warehouse.SHELF:
|
||||||
|
instance.path = f"{instance.parent_warehouse.path}/{instance.id}"
|
||||||
|
elif instance.type == Warehouse.BOXCASE:
|
||||||
|
instance.path = f"{instance.parent_warehouse.path}/{instance.id}"
|
||||||
|
else:
|
||||||
|
|
||||||
|
instance.path = str(instance.id)
|
||||||
|
instance.save()
|
||||||
|
|
||||||
|
boxcase_warehouses = Warehouse.objects.filter(type=Warehouse.BOXCASE, parent_warehouse=instance)
|
||||||
|
for boxcase_warehouse in boxcase_warehouses:
|
||||||
|
boxcase_warehouse.path = f"{instance.path}/{boxcase_warehouse.id}"
|
||||||
|
boxcase_warehouse.save()
|
||||||
|
|
||||||
|
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
def destroy(self, request, pk, *args, **kwargs):
|
def destroy(self, request, pk, *args, **kwargs):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user