JairoDanielMT commited on
Commit
3983883
·
verified ·
1 Parent(s): 9751fbe

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +41 -50
main.py CHANGED
@@ -377,67 +377,58 @@ def guardar_transaccion():
377
  flash(f"Error al guardar la transacción: {str(e)}", "error")
378
  return redirect(url_for("home")) # Redirigir al formulario principal
379
 
380
-
381
- # Modelos Pydantic
382
  class SubcategoriaCreate(BaseModel):
383
  nombre_categoria: str
384
  subcategorias: List[str]
385
 
386
-
387
- @app.post("/subcategorias")
388
- def insertar_subcategorias(datos: SubcategoriaCreate):
389
- db = SessionLocal()
390
  try:
391
- # Verificar si la categoría ya existe
392
- categoria = db.query(Categoria).filter(Categoria.nombre_categoria == datos.nombre_categoria).first()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
393
 
394
- # Crear la categoría si no existe
395
- if not categoria:
396
- categoria = Categoria(nombre_categoria=datos.nombre_categoria)
397
- db.add(categoria)
398
  db.commit()
399
- db.refresh(categoria)
400
-
401
- # Insertar subcategorías
402
- subcategorias_nuevas = []
403
- for nombre_subcategoria in datos.subcategorias:
404
- # Verificar si ya existe una subcategoría con el mismo nombre
405
- subcategoria_existente = (
406
- db.query(Subcategoria)
407
- .filter(
408
- Subcategoria.id_categoria == categoria.id_categoria,
409
- Subcategoria.nombre_subcategoria == nombre_subcategoria,
410
- )
411
- .first()
412
- )
413
- if not subcategoria_existente:
414
- nueva_subcategoria = Subcategoria(
415
- id_categoria=categoria.id_categoria,
416
- nombre_subcategoria=nombre_subcategoria,
417
- )
418
- db.add(nueva_subcategoria)
419
- subcategorias_nuevas.append(nombre_subcategoria)
420
-
421
- db.commit()
422
 
 
423
  if subcategorias_nuevas:
424
- return JSONResponse(
425
- status_code=201,
426
- content={
427
- "message": "Subcategorías añadidas exitosamente",
428
- "nuevas_subcategorias": subcategorias_nuevas,
429
- },
430
- )
431
  else:
432
- return JSONResponse(
433
- status_code=200,
434
- content={
435
- "message": "No se añadieron subcategorías nuevas (ya existían).",
436
- },
437
- )
438
  except Exception as e:
439
- db.rollback()
440
- return JSONResponse(status_code=500, content={"error": str(e)})
441
  finally:
442
  db.close()
443
 
 
377
  flash(f"Error al guardar la transacción: {str(e)}", "error")
378
  return redirect(url_for("home")) # Redirigir al formulario principal
379
 
 
 
380
  class SubcategoriaCreate(BaseModel):
381
  nombre_categoria: str
382
  subcategorias: List[str]
383
 
384
+ @app.route("/subcategorias", methods=["POST"])
385
+ def insertar_subcategorias():
 
 
386
  try:
387
+ # Obtener los datos de la solicitud
388
+ datos = SubcategoriaCreate.parse_obj(request.get_json())
389
+
390
+ db = SessionLocal()
391
+ with db.begin(): # Manejo automático de transacciones
392
+ # Verificar si la categoría ya existe
393
+ categoria = db.query(Categoria).filter(Categoria.nombre_categoria == datos.nombre_categoria).first()
394
+
395
+ # Crear la categoría si no existe
396
+ if not categoria:
397
+ categoria = Categoria(nombre_categoria=datos.nombre_categoria)
398
+ db.add(categoria)
399
+ db.commit()
400
+ db.refresh(categoria)
401
+
402
+ # Insertar subcategorías
403
+ subcategorias_existentes = {sub.nombre_subcategoria for sub in categoria.subcategorias}
404
+ subcategorias_nuevas = []
405
+
406
+ for nombre_subcategoria in datos.subcategorias:
407
+ if nombre_subcategoria not in subcategorias_existentes:
408
+ nueva_subcategoria = Subcategoria(
409
+ id_categoria=categoria.id_categoria,
410
+ nombre_subcategoria=nombre_subcategoria,
411
+ )
412
+ db.add(nueva_subcategoria)
413
+ subcategorias_nuevas.append(nombre_subcategoria)
414
 
 
 
 
 
415
  db.commit()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
 
417
+ # Respuesta final
418
  if subcategorias_nuevas:
419
+ return jsonify({
420
+ "message": "Subcategorías añadidas exitosamente",
421
+ "nuevas_subcategorias": subcategorias_nuevas,
422
+ }), 201
 
 
 
423
  else:
424
+ return jsonify({
425
+ "message": "No se añadieron subcategorías nuevas (ya existían).",
426
+ }), 200
427
+
428
+ except ValidationError as e:
429
+ return jsonify({"error": e.errors()}), 400
430
  except Exception as e:
431
+ return jsonify({"error": str(e)}), 500
 
432
  finally:
433
  db.close()
434