Corregir Duplicados en respuestas 1.0.24 Backend
This commit is contained in:
@@ -880,14 +880,40 @@ def create_answer(
|
|||||||
elif answer.status == "warning":
|
elif answer.status == "warning":
|
||||||
points_earned = int(question.points * 0.5)
|
points_earned = int(question.points * 0.5)
|
||||||
|
|
||||||
db_answer = models.Answer(
|
# Buscar si ya existe una respuesta para esta inspección y pregunta
|
||||||
**answer.dict(),
|
existing_answer = db.query(models.Answer).filter(
|
||||||
points_earned=points_earned
|
models.Answer.inspection_id == answer.inspection_id,
|
||||||
)
|
models.Answer.question_id == answer.question_id
|
||||||
db.add(db_answer)
|
).first()
|
||||||
db.commit()
|
if existing_answer:
|
||||||
db.refresh(db_answer)
|
# Actualizar la respuesta existente
|
||||||
return db_answer
|
# Si status es pass/fail, no poner valor por defecto en answer_value
|
||||||
|
if answer.status in ["pass", "fail"] and not answer.answer_value:
|
||||||
|
existing_answer.answer_value = None
|
||||||
|
else:
|
||||||
|
existing_answer.answer_value = answer.answer_value
|
||||||
|
existing_answer.status = answer.status
|
||||||
|
existing_answer.comment = getattr(answer, "comment", None)
|
||||||
|
existing_answer.ai_analysis = getattr(answer, "ai_analysis", None)
|
||||||
|
existing_answer.is_flagged = getattr(answer, "is_flagged", False)
|
||||||
|
existing_answer.points_earned = points_earned
|
||||||
|
existing_answer.updated_at = datetime.utcnow()
|
||||||
|
db.commit()
|
||||||
|
db.refresh(existing_answer)
|
||||||
|
return existing_answer
|
||||||
|
else:
|
||||||
|
# Si status es pass/fail y no hay valor, no poner valor por defecto en answer_value
|
||||||
|
answer_data = answer.dict()
|
||||||
|
if answer.status in ["pass", "fail"] and not answer.answer_value:
|
||||||
|
answer_data["answer_value"] = None
|
||||||
|
db_answer = models.Answer(
|
||||||
|
**answer_data,
|
||||||
|
points_earned=points_earned
|
||||||
|
)
|
||||||
|
db.add(db_answer)
|
||||||
|
db.commit()
|
||||||
|
db.refresh(db_answer)
|
||||||
|
return db_answer
|
||||||
|
|
||||||
|
|
||||||
@app.put("/api/answers/{answer_id}", response_model=schemas.Answer)
|
@app.put("/api/answers/{answer_id}", response_model=schemas.Answer)
|
||||||
|
|||||||
Reference in New Issue
Block a user