From 09e1e74af2e67c76e951d1fdea9bf6e87c2aa26c Mon Sep 17 00:00:00 2001 From: Marcel Gansfusz Date: Sun, 7 Sep 2025 21:16:42 +0200 Subject: [PATCH] improved logging; improved error handeling; made FIP entrys delete --- app/__pycache__/main.cpython-313.pyc | Bin 28730 -> 30997 bytes app/main.py | 99 ++++++++++++++++++++------- static/app.js | 3 + static/autocomplete.js | 6 +- 4 files changed, 84 insertions(+), 24 deletions(-) diff --git a/app/__pycache__/main.cpython-313.pyc b/app/__pycache__/main.cpython-313.pyc index e4ebe8cb6583aae0b7f135edcae80fa48125bdab..9bc14bc4696898ee1a35037d30be1ea2215360ec 100644 GIT binary patch delta 8879 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 delta 7098 zcma)AYgAiTcD_gVO6Y|iAP{e3W5D7iUUncc#uzXd8yRyT#zqbnARabI_(<3ZX)7}0 zHg+;iaLy!yCzFQEbXq(8lT>ZjtTb(2Zac|py3i!eP>r+3Gi%zZ+fGJ~ooSj`O}h7y zguymz^@{u5efQaC@3SB0ae4Mr^4c|Gx|y1)m*A>A^u)yQ)CE%(>3Ox(OG4C`Be4>9 z$rfolHp5jYxplYSSgE_T_fWiLEz(qX+7^kLsJW3)3$-@N(C^-oX+knxNZJyT_TFBh zjsI1pIYcvPCbiQnn%$_dGN(jy4iQ!k&s=y`z%vh?l{B9gI905QN^}!EowSfu)6J}g zZeg{wh}F@ptezIT?Y$?~jx$cv688>T>Q>x4-1k+cND|#vuTn#kcneAH9fIj_tLnA1 zEJr$_u!aJO`Znw)l8{4&kboHuqjeAGEiq@j`WVTteJ9KX&b;)kvho9C%0Jp=PA|eH0 z6h6!7S3G+0fF>NcFYdsqk=+{%tpRO>(3e#sjiCB&BZ<7NGjjhOMp`y7^1y9J3cwEj z=!|eEZYzWZv3=F-&Q)rymv;}qNSp2$z#bUD{(UP>Lw6&)9pDLj|y$ufZx6We{X^xS}mc3qK*wZbZ)@kw*kLv1OEQ? ze8_*o@PYLWtNiW__^x~N>$B*=bv52jd!Td=!F>S2kH5W`g2Ww?XfLp^miOK+FiIgm zdfJDISO@JF72gRNdr)xp(ZlZa-f!L`+YUEM4G5|I^avPrh)f?9oC9<)VQaObLdmhL zPN~(VWD6*Ci|*aD6%@9?y%X+zaCgAn1$R5#`{8!L98aUigtSXYJ7C>|Ng8(zG(9BR z4hk(e148QsG;~M^^a%Ah8*px*;CeYdJuc)9Q4g3M7N*x4($Epn-Yfco4lq3`IFx$b zouI8VKG8$aFeV!M=y<{dg-!@gKRqRQlVCo+DxiNFdIDQvk$rH@gu)huo)rBK(hCF>ueZJgrmODs7eqjXdYRyrU_S zCts3$>OpI=8zuc}lT@d=?fhW+YMYA6RB2Rs357l_>M=4VHOZT#G2&3W=FHt5Ht881 zE^KGa&-nLJTZx|kGIcYzno0&VtPZrWdIVemqp5LMhL|@nI~9zoM?FDLAWFOe4YU@D zi(yKlhM~Zzsi9M|9>yMFoxtgVJ8%JDUbec!ct?6mgdDFt_#n}(F#m|_F zjSJ=_vKUx46@94P%6FS{w}GS5-)?JhNN<%AM2Brpj{H_r)}9Rc?F=>0tQ{mqWD(ol z{9#L(RUX7?DXxL)fwb)kkC^lJMOCB2ad&VymzCRI2@O$sWR?XKXhJXIPRQT`!+}r0 z9oP&2gV*pTi#_!NL&LJtAZlZ+?a*Dep%YwNp-fzTtP4nX0Ko-thcyMP^)Wnl`LQu+ zPBNrE?KtmP44!i=>$lFgUNvMc1eV&?3?NFJ$;rV>tOx7nj8)D_->CQDs)^wA6f>i} zECj6NxM#X?Z*WM+uzp~k4S(M{pdwEGW%|L?MwG&8cIa3eKWeKZJ^U$KQTc;@bf8%6LUcmSfRxibOG5%f>SS|9Lw z*vQ1t)M*c!f~N0>E3$8>$T%;^3urL@bLITdCL8~CkCnfkXX?N>F+52+)J&L|M#icM zb`oCiv|&uxm|_000Gk1ckHXgc-%*hX{?w*JVC&kZh6W72BV~QYj8`F z>RqLh97*aeh6Ny}AUU(^Won>CJk1Z5B!zk%D8jRfA0XwtuXu!1@?UxK_=m+Ac4t!N z_OoBrTk}jwd%9CAbr9E8fn4ATK2WlhhxvC!6_?-VW!OC`&y0>m<F!Xn`fPELEHvd@2pbt6wR z;-8+L3_^YVaN9xR;aQHIMPl7Z8)04$ADW$+@_R<(CA9=SiV39ieE5umll*-vI_ozB z-)Z=9Zbc-w;>Wqwk=*JJa%(@Z*DY)7xuyJHLsjIhEu_n;yj9ea(N#s>ZXjJY&D)JF z26(xmkS@FCin<)>YSNXXxl+@X4KMHN)4KBIck^}t{ho~=+6Cqa%-467r@U910{l6x zGcY?0<99}7sMn~11;t(zj^QNW!HUDGVO9A3ibg`Rc}i6w|81IKlUaO+;X0hwZ=&fq z0peH*l+VonyDC3q8O(qearK+~Ed%fO8>s#M0ZHdi!UJL*sl^5ux-^#~Hkd+@ z-$~ziVZd|RJL3sX++R30m)YvUy*}RPEu@JiS5&>%GZpae?c@JmQ(R(XBMCxY3wCreHYUNXjtESvb@^U?mnEIBreJketC3&gkCC$>Qmvj-cW4<$HQq(STc{pO&y{zp1{FYTRX5N%kY8SbxOU8=cMv}~&SQ0q*nJ`gc= zFKfGh8&jju7dJF2wdQ{UJ77#-+tb|UB=4w9ZL;)^B^zl6X{%J;DMR{-tZyrmucT(R z70XwO)mnThQ`(&2|Jc5wHsE5wsu61V`wuWe`R<)NGDXy10WL0zBSH2C3cSg`v9mkl zuaOiHe;uj6LHIWRWal>WPu$*AXT}-N{xS*S@R6p=gsgD6xw0AeD+ggK@Caa4CwAo2 zAY@}`Y}Pjt#3=t1T2xS7VxgaxRt!1uJ?8l7I1FYZD3?p7&z|V$eJmX&WGicU?Yj*D^IX_3q+e2cL*c~CAKiBeQ(+fbsz|Y}B zVZVe&RGx$i^&kZ&K|D9D-}uEYCLoVT_Rw71rAM>?$qTm`nCH^Xl5lhDn?zM4ak;&U zr14$t`EWdRx96xFM*gGrGZv8{3Zi1lu?c=;Z&eBl0mEV7O&z6V7x#7ymg85E!?tE} zh~4c^u-_je{3*hV2$%R59nEI;3D8m1^fa8IMgunP>a=HwvS(owLMX#5)bU3fm*L#5vno=>YAxZ-^l|#3?s?(Pz?@Ee3=oa5X?3E76Jwl)+nE6`mQ4~yMY1-!{Jkh z%3-4jztC$ST_P6{O{`U6P^eckksi?~4kW9F?l|PITc{S{cloEZ9ke#|U6M5^Fh-{E ze>>c)sX+k^FCVBD=PLFI_YCYJYQ8kE8BTz251a`#fW%ySe7!z18Js9=gJb@%C*Wmb zO*f&gRCLi9;x}U}uC^`E_@(24^C>7`7cdO2~WM|4=RYfPeR) zx>_-8tOF>uizxGLgbsl9mG%e7M)*NEW#}l`C#L5dGUoy2lqxt_feKMXA|4#rFt~Jh zM3pi4c3L;O$AQfde#T!u-V2%i-{aTGI4ZsV0L)F)D7l(orP7A%l0v^T~ zT3}CMyCTf6a&*~)+%llgkhkWMs#Y)_HxikTy8ji6bF<5}526gtGuJ)LEp_?f7^ws8Q9JkNpu4cYa$k{dp8b zP=#&dxr96$uAT^y`2IAHZ4>;p$^6FExPq_GB0CY+;3G5la`yL81R;Z4P8`{W$#;-G z$Pc>fVonGTd~1joSK^hp97lMz|GE5EvF|Ss(08^6;W31#0eHlJEQDv4c)jEQ8KSah zW(Gp!pY;W!DIgPIeX1cO>xNb$+OxWU(WHKT za$dg1TUe!iMQwb1=xakOI@{vTS1Nv(eM44hRP!qCV|z0)hHu zc=Nt)@w}$iohyE9@G~`ZjamNRY6|Y9XX|4}<9f=%?*(2XC+kTIS<$5})Lm4b*DO2` z(QS&!$h)RbUueB(dp>hve?(sxQzI{?k&GD&^y1d%OBMzrhRv}Q!PQEsnF}Kq>!07T za57@t64ME;UIGnkv>NL9uV*ttqRn(i53}G}B$ItbYdGKc List: datas: Tuple[str | int, ...] if type(data) is str or type(data) is int: @@ -90,29 +92,37 @@ def _sql_quarry( datas = data try: cursor.execute(querry, datas) + if commit: + db.commit() if return_result: return cursor.fetchall() else: return [] except mariadb.Error as e: - error(f"Mariadb Error: {e}") + error(f"Mariadb Error: '{e}' from Querry: '{querry}' with variables: {data}") raise HTTPException( status_code=500, detail="Somethings wrong with the database" ) def sql( - querry: str, data: Tuple[str | int, ...] | str | int, return_result: bool = True + querry: str, + data: Tuple[str | int, ...] | str | int = (), + return_result: bool = True, + commit: bool = False, ) -> List[Tuple]: cur = db.cursor(dictionary=False) - return _sql_quarry(cur, querry, data, return_result) + return _sql_quarry(cur, querry, data, return_result, commit) def sqlT( - querry: str, data: tuple[str | int, ...] | str | int, return_result: bool = True + querry: str, + data: tuple[str | int, ...] | str | int = (), + return_result: bool = True, + commit: bool = False, ) -> List[Dict]: cur = db.cursor(dictionary=True) - return _sql_quarry(cur, querry, data, return_result) + return _sql_quarry(cur, querry, data, return_result, commit) # datas:Tuple[str|int,...] # if type(data) is str or type(data) is int: @@ -340,8 +350,8 @@ async def create_upload_file(files: List[UploadFile], c2pdf: bool = True): # cur = db.cursor() # try: sql( - "INSERT INTO FIP (filename,filetype,initTimeStamp) Values(?,?,?)", - (filename, ft, str(datetime.datetime.now())), + "INSERT INTO FIP (filename,filetype,initTimeStamp) Values(?,?,NOW())", + (filename, ft), # str(datetime.datetime.now()) return_result=False, ) # except mariadb.Error as e: @@ -411,7 +421,14 @@ async def get_submission( res = sql("Select filename from FIP where id=?", (fileId,)) if len(res) < 1: error(f"Submited file ID {fileId} dose not exist in database") + if fileId == "greeting": + raise HTTPException(400, "You need to upload a file before submitting") raise HTTPException(status_code=400, detail="Submited file dose not exist.") + for th in [(lva, "LVA"), (prof, "Prof"), (fname, "Filename"), (sem, "Semmester")]: + if th[0] == "": + error(f"User tried to upload a file without specifying the {th[1]}") + raise HTTPException(400, f"You need to specify a {th[1]}") + filepath = "./app/files/" + res[0][0] # except mariadb.Error as e: # print(f"Mariadb Error: {e}") @@ -422,13 +439,15 @@ async def get_submission( try: dest = make_savepath(lva, prof, stype, subcat, sem, ex_date, fname, ftype) except ValueError as e: - error(f"Error creating savepath: f{e}") - raise HTTPException(status_code=400, detail="Cannot create Savepath") + error(f"Error creating savepath: {e}") + raise HTTPException(status_code=400, detail=f"Error creation savepath: {e}") await censor_pdf( filepath, dest, rects_p, scales_p, False if censor == "False" else True ) # return {"done": "ok"} - print(dest) + # print(dest) + info(f"Saved file {fileId} as {dest}") + delete_from_FIP(fileId) return FileResponse(dest, content_disposition_type="inline") @@ -578,8 +597,17 @@ def make_savepath( os.makedirs(savepath, exist_ok=True) filename = sem + "_" if int(cat) in EX_DATE_CATEGORIES_I: - _, mm, dd = ex_date.split("-") - filename += mm + "_" + dd + "_" + try: + yyyy, mm, dd = ex_date.split("-") + except ValueError as e: + error( + f"ValueError: f{e}. Probably caused by user not specifying a date where a date is required" + ) + raise HTTPException( + 400, + "You have not specified a date for an upload that requires a date like an exam.", + ) + filename += yyyy + "_" + mm + "_" + dd + "_" filename += fname + "." + ftype return savepath + filename @@ -795,3 +823,28 @@ def guess_filetype(content: bytes, filename: str) -> str: if len(farr) > 1: return filename.split(".")[-1] return "" + + +@app.get("/remove_old") +async def remove_old_FIP_entrys(): + files = sqlT( + "SELECT id,filename FROM FIP WHERE HOUR(TIMEDIFF(NOW(),initTimeStamp)) > 24 " + ) + info(f"Remove Files: {files}") + for file in files: + sql("DELETE FROM FIP WHERE id=?", (file["id"]), return_result=False) + os.remove(FILES_IN_PROGRESS + file["filename"]) + # sql( + # "DELETE FROM FIP WHERE HOUR(TIMEDIFF(NOW(),initTimeStamp)) > 24", + # return_result=False, + # ) + db.commit() + return FileResponse("./index.html") + + +def delete_from_FIP(uuid: str): + res = sqlT("SELECT filename FROM FIP WHERE id=?", (uuid,)) + if len(res) < 1: + raise HTTPException(500, "I am trying to delete a file that dose not exist") + sql("DELETE FROM FIP WHERE id=?", (uuid,), return_result=False, commit=True) + os.remove(FILES_IN_PROGRESS + res[0]["filename"]) diff --git a/static/app.js b/static/app.js index db14387..03c8f07 100644 --- a/static/app.js +++ b/static/app.js @@ -288,6 +288,7 @@ async function submitForm(formData) { //let responseJSON=await response.json(); if (response.ok) { console.log("Submit OK"); + doc = new PDFDocument("./files/greeting", "greeting", "pdf"); // console.log(response); // window.open(response); // console.log(URL.createObjectURL(response.body)); @@ -300,6 +301,7 @@ async function submitForm(formData) { window.open(blobURL, "_blank"); } else { console.log("Submit failed"); + window.alert("Error: " + (await response.json())["detail"]); } } catch (error) { console.error("Error" + error); @@ -339,6 +341,7 @@ async function uploadFile(formData) { ); } else { console.log("upload failed"); + window.alert("Error: " + (await response.json())["detail"]); } } catch (error) { console.error("Error: " + error); diff --git a/static/autocomplete.js b/static/autocomplete.js index c1f0c4f..6824849 100644 --- a/static/autocomplete.js +++ b/static/autocomplete.js @@ -8,7 +8,11 @@ function autocomplete(inp, type) { the text field element and an array of possible autocompleted values:*/ var currentFocus; /*execute a function when someone writes in the text field:*/ - inp.addEventListener("focus", updateAutocomplete); + inp.addEventListener("focus", (e) => { + e.target.select(); + // this.select(); + updateAutocomplete(); + }); inp.addEventListener("input", updateAutocomplete); async function updateAutocomplete() { activeAutocompletion = type;