feature/pedimentos-correccion-partidas
This commit is contained in:
@@ -1321,11 +1321,13 @@ class DocumentViewSet(viewsets.ModelViewSet, DocumentosFiltradosMixin):
|
||||
nombre="Documento General",
|
||||
defaults={'descripcion': "Documento general sin tipo específico"}
|
||||
)
|
||||
|
||||
|
||||
uploaded_documents = []
|
||||
failed_files = []
|
||||
errors = []
|
||||
total_space_used = 0
|
||||
created_count = 0
|
||||
replaced_count = 0
|
||||
|
||||
try:
|
||||
with transaction.atomic():
|
||||
@@ -1410,6 +1412,8 @@ class DocumentViewSet(viewsets.ModelViewSet, DocumentosFiltradosMixin):
|
||||
else:
|
||||
raise Exception(f"Error al guardar archivo: {file.name}")
|
||||
document = existing_doc
|
||||
replaced_count += 1
|
||||
was_replaced = True
|
||||
else:
|
||||
# Crear nuevo documento
|
||||
document = Document.objects.create(
|
||||
@@ -1431,6 +1435,8 @@ class DocumentViewSet(viewsets.ModelViewSet, DocumentosFiltradosMixin):
|
||||
else:
|
||||
document.delete()
|
||||
raise Exception(f"Error al guardar archivo: {file.name}")
|
||||
created_count += 1
|
||||
was_replaced = False
|
||||
|
||||
# Actualizar espacio usado
|
||||
espacio_usado_temp += file.size
|
||||
@@ -1441,7 +1447,8 @@ class DocumentViewSet(viewsets.ModelViewSet, DocumentosFiltradosMixin):
|
||||
"filename": file.name,
|
||||
"size": file.size,
|
||||
"extension": extension,
|
||||
"document_type": document.document_type.nombre if document.document_type else None
|
||||
"document_type": document.document_type.nombre if document.document_type else None,
|
||||
"replaced": was_replaced,
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
@@ -1463,27 +1470,36 @@ class DocumentViewSet(viewsets.ModelViewSet, DocumentosFiltradosMixin):
|
||||
space_used_mb = round(total_space_used / (1024 * 1024), 2)
|
||||
|
||||
# Preparar respuesta
|
||||
partes = []
|
||||
if created_count:
|
||||
partes.append(f"{created_count} documento(s) creado(s) exitosamente")
|
||||
if replaced_count:
|
||||
partes.append(f"{replaced_count} documento(s) reemplazado(s) exitosamente")
|
||||
mensaje_exito = " y ".join(partes) if partes else "Sin cambios"
|
||||
|
||||
response_data = {
|
||||
"uploaded_count": len(uploaded_documents),
|
||||
"created_count": created_count,
|
||||
"replaced_count": replaced_count,
|
||||
"uploaded_documents": uploaded_documents,
|
||||
"space_used_mb": space_used_mb,
|
||||
"pedimento_id": str(pedimento_id),
|
||||
"document_type": document_type.nombre
|
||||
"document_type": document_type.nombre,
|
||||
}
|
||||
|
||||
|
||||
if failed_files:
|
||||
response_data.update({
|
||||
"message": "Algunos documentos no pudieron ser subidos",
|
||||
"message": f"Algunos documentos no pudieron ser subidos. {mensaje_exito}",
|
||||
"failed_files": failed_files,
|
||||
"errors": errors
|
||||
"errors": errors,
|
||||
})
|
||||
response_status = status.HTTP_207_MULTI_STATUS
|
||||
else:
|
||||
response_data["message"] = "Documentos subidos exitosamente"
|
||||
response_data["message"] = mensaje_exito
|
||||
response_status = status.HTTP_201_CREATED
|
||||
|
||||
|
||||
return Response(response_data, status=response_status)
|
||||
|
||||
|
||||
@action(detail=False, methods=['post'], url_path='bulk-upload-vu', parser_classes=[MultiPartParser])
|
||||
def bulk_upload_vu(self, request):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user