JairoDanielMT commited on
Commit
01bbbdd
1 Parent(s): 60c0f1e

mejoras con los metodos para boleta ver y descargar PDF

Browse files
app.py CHANGED
@@ -1151,9 +1151,8 @@ def obtener_pdf_prescripcion(id_prescripcion: int):
1151
  nombre_archivo = (
1152
  f"{directorio_pdf}prescripcion_{id_prescripcion}_{fecha_hoy}.pdf"
1153
  )
1154
-
1155
  obj_datos_prescripcion.generar_pdf(f"{nombre_archivo}")
1156
- return FileResponse(f"{nombre_archivo}")
1157
  else:
1158
  raise HTTPException(status_code=404, detail="Prescripción no encontrada")
1159
 
@@ -1896,7 +1895,7 @@ def obtener_productos_por_boleta(id_boleta):
1896
  for resultado_montura in resultados_monturas:
1897
  producto_montura = {
1898
  "cantidad": resultado_montura[0],
1899
- "descripcion": f"Código:{resultado_montura[1]}, \nNombre: {resultado_montura[2]}, \nMarca: {resultado_montura[3]}, \nColor: {resultado_montura[4]}, \nMaterial: {resultado_montura[5]}",
1900
  "precio": resultado_montura[6],
1901
  "importe": resultado_montura[7],
1902
  }
@@ -1940,9 +1939,9 @@ def generar_boleta_desde_bd(id_boleta, adelanto):
1940
  print(f"No se encontraron datos para la boleta con ID {id_boleta}.")
1941
 
1942
 
1943
- # ruta para generar boleta en pdf con idboleta y adelanto, tipo get retorna ruta del archivo pdf
1944
- @app.get("/boleta/pdf/{id_boleta}/{adelanto}")
1945
- def generar_boleta_pdf(id_boleta: int, adelanto: float):
1946
  try:
1947
  directorio_pdf = "pdf/boleta/"
1948
  now = datetime.now()
@@ -1950,8 +1949,9 @@ def generar_boleta_pdf(id_boleta: int, adelanto: float):
1950
  nombre_archivo = f"{directorio_pdf}boleta_{formatted_date_time}.pdf"
1951
  # crear pdf
1952
  generar_boleta_desde_bd(id_boleta, adelanto)
1953
- # validacion si existe el archivo o no
1954
  if os.path.exists(nombre_archivo):
 
1955
  return FileResponse(
1956
  nombre_archivo,
1957
  media_type="application/pdf",
@@ -1966,24 +1966,16 @@ def generar_boleta_pdf(id_boleta: int, adelanto: float):
1966
  return []
1967
 
1968
 
1969
- # endpoint retorna el pdf de la boleta con idboleta y adelanto
1970
- @app.get("/boleta/pdf/{id_boleta}/{adelanto}")
1971
- def obtener_pdf_boleta(id_boleta: int, adelanto: float):
1972
  try:
1973
  directorio_pdf = "pdf/boleta/"
1974
- now = datetime.now()
1975
- formatted_date_time = now.strftime("%Y%m%d%H%M%S")
1976
  nombre_archivo = f"{directorio_pdf}boleta_{formatted_date_time}.pdf"
1977
- # crear pdf
1978
  generar_boleta_desde_bd(id_boleta, adelanto)
1979
- # validacion si existe el archivo o no y retorna el archivo pdf
1980
  if os.path.exists(nombre_archivo):
1981
- # return nombre_archivo
1982
- return FileResponse(
1983
- nombre_archivo,
1984
- media_type="application/pdf",
1985
- filename=nombre_archivo,
1986
- )
1987
  else:
1988
  raise HTTPException(
1989
  status_code=404, detail="No se encontró la boleta solicitada"
@@ -2000,8 +1992,8 @@ class BoletaPDF(BaseModel):
2000
 
2001
 
2002
  # ruta para generar boleta en pdf con manejo de errores en caso no se encuentre la boleta
2003
- @app.post("/boleta/pdf")
2004
- def generar_boleta_pdf(boleta_pdf: BoletaPDF):
2005
  try:
2006
  directorio_pdf = "pdf/boleta/"
2007
  now = datetime.now()
 
1151
  nombre_archivo = (
1152
  f"{directorio_pdf}prescripcion_{id_prescripcion}_{fecha_hoy}.pdf"
1153
  )
 
1154
  obj_datos_prescripcion.generar_pdf(f"{nombre_archivo}")
1155
+ return FileResponse(path=nombre_archivo)
1156
  else:
1157
  raise HTTPException(status_code=404, detail="Prescripción no encontrada")
1158
 
 
1895
  for resultado_montura in resultados_monturas:
1896
  producto_montura = {
1897
  "cantidad": resultado_montura[0],
1898
+ "descripcion": f"Código: {resultado_montura[1]}, \nNombre: {resultado_montura[2]}, \nMarca: {resultado_montura[3]}, \nColor: {resultado_montura[4]}, \nMaterial: {resultado_montura[5]}",
1899
  "precio": resultado_montura[6],
1900
  "importe": resultado_montura[7],
1901
  }
 
1939
  print(f"No se encontraron datos para la boleta con ID {id_boleta}.")
1940
 
1941
 
1942
+ # endpoint retorna el pdf de la boleta con idboleta y adelanto
1943
+ @app.get("/boleta/descargarPDF/{id_boleta}/{adelanto}")
1944
+ def descargar_pdf_boleta_get(id_boleta: int, adelanto: float):
1945
  try:
1946
  directorio_pdf = "pdf/boleta/"
1947
  now = datetime.now()
 
1949
  nombre_archivo = f"{directorio_pdf}boleta_{formatted_date_time}.pdf"
1950
  # crear pdf
1951
  generar_boleta_desde_bd(id_boleta, adelanto)
1952
+ # validacion si existe el archivo o no y retorna el archivo pdf
1953
  if os.path.exists(nombre_archivo):
1954
+ # return nombre_archivo
1955
  return FileResponse(
1956
  nombre_archivo,
1957
  media_type="application/pdf",
 
1966
  return []
1967
 
1968
 
1969
+ # crear endpoint retornando la url del PDF con los datos de la prescripción
1970
+ @app.get("/boleta/verPDF/{id_boleta}/{adelanto}")
1971
+ def ver_pdf_boleta_get(id_boleta: int, adelanto: float):
1972
  try:
1973
  directorio_pdf = "pdf/boleta/"
1974
+ formatted_date_time = datetime.now().strftime("%Y%m%d%H%M%S")
 
1975
  nombre_archivo = f"{directorio_pdf}boleta_{formatted_date_time}.pdf"
 
1976
  generar_boleta_desde_bd(id_boleta, adelanto)
 
1977
  if os.path.exists(nombre_archivo):
1978
+ return FileResponse(path=nombre_archivo)
 
 
 
 
 
1979
  else:
1980
  raise HTTPException(
1981
  status_code=404, detail="No se encontró la boleta solicitada"
 
1992
 
1993
 
1994
  # ruta para generar boleta en pdf con manejo de errores en caso no se encuentre la boleta
1995
+ @app.post("/boleta/descargarPDF")
1996
+ def descargar_boleta_pdf_post(boleta_pdf: BoletaPDF):
1997
  try:
1998
  directorio_pdf = "pdf/boleta/"
1999
  now = datetime.now()
pdf/boleta/{boleta_20231211202519.pdf → boleta_20231211230525.pdf} RENAMED
@@ -288,7 +288,7 @@ endobj
288
  endobj
289
  14 0 obj
290
  <<
291
- /Author (anonymous) /CreationDate (D:20231211202519+05'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20231211202519+05'00') /Producer (ReportLab PDF Library - www.reportlab.com)
292
  /Subject (unspecified) /Title (untitled) /Trapped /False
293
  >>
294
  endobj
@@ -302,7 +302,7 @@ endobj
302
  /Filter [ /ASCII85Decode /FlateDecode ] /Length 1325
303
  >>
304
  stream
305
- Gatm;gN)%,&:N/3m%]bF&8hVA]fDCL`a^AkXBltG!`>1T%n/GlQ#ulq=jWBbWF!Z;<#h$j"jZ(5%[NafNeciDq%DWA'Ll^:KS8RkKOu."(N;DUTO%1g"m9:`5@*8Jq$RGH_dm>qe>)'$/`;\1[<C(>R,5[Om2fNU/\".Bm^%p;I[V=qj:nal-Qa\-BF^4q3,U!*JNs+Oo/n1\(sh_2"rD^l^EK4_I'EaJjRAV/ZV.aGpiV+sN_qu:-5Me*(nLJ7q3R_YL"=@.:D7<Mb85=cbG@d8AnPh?B)-fY'0l9)j-N<P(tu0Pb@/9,O=,>WR7W0go:Zpk,[1khZQfG(NU`\e+\.\g'hO^gBs%ifP4[#DOh5lpL@_gRiMoOUnSa(XdYsBq.It,>%TSSK`)Te<a#JopY_t;(G>_E+au*\M;JQoIA4./([a!8-4Kp!PeBKHJo)e>!5@<TU?]G)8)H>3%MmOttl0Ek.d5*"Ts4Z6<C7Hk3$Q<+,:g.N>=M.(gE,:7\h[K,TnL_L-PA((ReV**5Y&;FnRhJXL_b:b/.9:^mhY2/@Sjd7C.2sG@@_^N+l^H6d:S=e$M2f(9@<q=H=)Gd!LYY[Z<6U$%,$66"8^0ZE!d4VhM]qqBH0`LD?ao@@M-o4e/o)<H'r4S1WfMThCPjiO'Qo<cW\/0.lrgBpL7)sV@:d,#0Mr;P!22@[^61cg\gGH%nU?IUOX?478n='9MV(uO(LQ>HaWaSFTklh9I;(DQ=,l1QEiZXm#m&+@1+d!5?&tA7S8h:QkU-Z^iXH/\.6pf\:eY7(6q/MD?TO?D-Pt"d]0oaNSU9)4I1:&`:EYXr7>j]A]is8ur^g0O@jXRP&k^RkXglC$GI/m!(<qt3e&pLF`T9PSg&kfXK/tCr_8HAe:(M)n;^IK<7Ab;Qo=-Fg7HG.$Xq%HF<%=O/13qR6iMB_ZkTXF_<fu$\]hEh@(YGSp240Vknn\)[V8`>[p7aTdkch;N=^3Z7*5F'<<K+c]"Taogp^+8`W\84u.9RHC7u(t;RKX^m-p=q;(%EFuZrku:qcHcgMnG'+bVk<i=P%F*[UQ_EjRSdEd@k38a.r5t/G,Q#G6O>_lAQLK7(oVY,g2)Q*^_#%37Zmre=2''Y1s`7MlQ^_E7jfTj8Y.pkC7c<_quR1qTEb<+7:Vgm]=(1nK#gHS;5Ml,/Z?*Dm`ASan<Z2G8mSZBl=H))lo7;&T9S9A-5W!d)tu=]Qn%8,i%l8%rN`K?3\`-0jL?PWh6<"k'l`Y]oTGSS_W(grk,3!]>fm4$PV:E-#oMl=3VgX7'(b$"#Ns6L3HHaZbNqVn,k,/o@j~>endstream
306
  endobj
307
  xref
308
  0 17
@@ -326,7 +326,7 @@ xref
326
  trailer
327
  <<
328
  /ID
329
- [<850cfe3e02b835b633e0a0bfc37136b6><850cfe3e02b835b633e0a0bfc37136b6>]
330
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
331
 
332
  /Info 14 0 R
 
288
  endobj
289
  14 0 obj
290
  <<
291
+ /Author (anonymous) /CreationDate (D:20231211230525+05'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20231211230525+05'00') /Producer (ReportLab PDF Library - www.reportlab.com)
292
  /Subject (unspecified) /Title (untitled) /Trapped /False
293
  >>
294
  endobj
 
302
  /Filter [ /ASCII85Decode /FlateDecode ] /Length 1325
303
  >>
304
  stream
305
+ Gatm;gN)%,&:N/3m%]bF&8hVA]fDCL`a^AkXBltG!`>1T%n/GlQ#ulq=jWBbWF!Z;<#h$j"jZ(5%[NafNeciDq%DWA'Ll^:KS8RkKOu."(N;DUTO%1g"m9:`5@*8Jq$RGH_dm>qe>)'$/`;\1[<C(>R,5[Om2fNU/\".Bm^%p;I[V=qj:nal-Qa\-BF^4q3,U!*JNs+Oo/n1\(sh_2"rD^l^EK4_I'EaJjRAV/ZV.aGpiV+sN_qu:-5Me*(nLJ7q3R_YL"=@.:D7<Mb85=cbG@d8AnPh?B)-fY'0l9)j-N<P(tu0Pb@/9,O=,>WR7W0go:Zpk,[1khZQfG(NU`\e+\.\g'hO^gBs%ifP4[#DOh5lpL@_gRiMoOUnSa(XdYsBq.It,>%TSSK`)Te<a#JopY_t;(G>_E+au*\M;JQoIA4./([a!8-4Kp!PeBKHJo)e>!5@<TU?]G)8)H>3%MmOttl0Ek.d5*"Ts4Z6<C7Hk3$Q<+,:g.N>=M.(gE,:7\h[K,TnL_L-PA((ReV**5Y&;FnRhJXL_b:b/.9:^mhY2/@Sjd7C.2sG@@_^N+l^H6d:S=e$M2f(9@<q=H=)Gd!LYY[Z<6U$%,$66"8^0ZE!d4VhM]qqBH0`LD?ao@@M-o4e/o)<H'r4S1WfMThCPjiO'Qo<cW\/0.lrgBpL7)sV@:d,#0Mr;P!22@[^61cg\gGH%nU?IUOX?478n='9MV(uO(LQ>HaWaSFTklh9I;(DQ=,l1QEiZXm#m&+@1+d!5?&tA7S8h:QkU-Z^iXH/\.6pf\:eY7(6q/MD?TO?D-Pt"d]0oaNSU9)4I1:&`:EYXr7>j]A]is8ur^g0O@jXRP&k^RkXglC$GI/m!(<qt3e&pLF`T9PSg&kfXK/tCr_8HAe:(M)n;^IK<7Ab;Qo=-Fg7HG.$Xq%HF<%=O/13qR6iMB_ZkTXF_<fu$\]hEh@(YGSp240Vknn\)[V8`>[p7aTdkch;N=^3Z7*5F'<<K+c]"Taogp^+8`W\84u.9RHC7u(t;RKX^m-p=q;(%EFuZrku:qcHcgMnG'+bVk<i=P%F*[UQ_EjRSdEd@k38a.r5t/G,Q#G6O>_lAQLK7(oVY,g2)Q*^_#%37Zmre=2''Y1s`7MlQ^_E7jfTj8Y.pkC7c<_quR1qTEb<+7:Vgm]=(1nK#gHS;5Ml,/Z?*Dm`ASan<Z2G8mSZBl=H))lo7;&T9S9A-5W!d)tu=]Qn%8,i%l8%rN`K?3\`-0jL?PWh6<"k'l`Y]oTGSS_W(grk,3!]>fo*.ni?l8Y#"u<V$H]1pSP%!LB^'_`K9J%CJt6K-)V4oAf~>endstream
306
  endobj
307
  xref
308
  0 17
 
326
  trailer
327
  <<
328
  /ID
329
+ [<112f1def649e5ce676f4ac4b97986280><112f1def649e5ce676f4ac4b97986280>]
330
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
331
 
332
  /Info 14 0 R
pdf/boleta/boleta_20231211230615.pdf ADDED
The diff for this file is too large to render. See raw diff
 
pdf/prescripcion/{prescripcion_1_2023-12-09.pdf → prescripcion_1_2023-12-11.pdf} RENAMED
Binary files a/pdf/prescripcion/prescripcion_1_2023-12-09.pdf and b/pdf/prescripcion/prescripcion_1_2023-12-11.pdf differ