From ec08eea910d22a89935250b40f897e1e84ecfe95 Mon Sep 17 00:00:00 2001 From: Marcel Gansfusz Date: Wed, 30 Jul 2025 11:17:19 +0200 Subject: [PATCH] moves graphics folder --- app/__pycache__/main.cpython-313.pyc | Bin 28280 -> 28869 bytes app/graphics/empty.pdf | Bin 0 -> 2130 bytes app/graphics/empty.svg | 65 +++++++++ app/graphics/greeting.pdf | Bin 0 -> 41399 bytes app/graphics/greeting.svg | 193 +++++++++++++++++++++++++++ app/graphics/text2.pdf | Bin 0 -> 10013 bytes app/graphics/unsupported.pdf | Bin 0 -> 3263 bytes app/graphics/unsupported.svg | 89 ++++++++++++ app/main.py | 69 ++++++++-- static/app.js | 14 +- static/autocomplete.js | 12 ++ static/style.css | 9 ++ 12 files changed, 436 insertions(+), 15 deletions(-) create mode 100644 app/graphics/empty.pdf create mode 100644 app/graphics/empty.svg create mode 100644 app/graphics/greeting.pdf create mode 100644 app/graphics/greeting.svg create mode 100644 app/graphics/text2.pdf create mode 100644 app/graphics/unsupported.pdf create mode 100644 app/graphics/unsupported.svg diff --git a/app/__pycache__/main.cpython-313.pyc b/app/__pycache__/main.cpython-313.pyc index bc800ae7a5a48d4dcca879a63448ccc5b94e3e8d..ce6523c8c0c096b3f0050435849af50567ae840e 100644 GIT binary patch delta 6162 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 diff --git a/app/graphics/empty.pdf b/app/graphics/empty.pdf new file mode 100644 index 0000000000000000000000000000000000000000..00d9972e43d12cd89ca85456cd4f09b9b22157bc GIT binary patch literal 2130 zcmY!laBGd1jBpQODSC29^yxd*Ro*_z{Kg71ZeJ19yBXylnjQA|%Qn?Z)6Qxs zoGSgH5_B>*VAY-C@Xl79;;jx^Tl<%G3b;-QEsbB1rp$I^W4pe~OrH&_lNNToy2-^j zAxEC$(sVwlIiWTg)q5X)JMMO}zU~*xKaoGiD}y$E;a~ETaesZ@{y($4^j?1Vz106Q zdr`oeCx$r_jxl(h%Qg<$@#>o0B&*WR>UZ6;SLf~B-krymD|R#LxvQD<)tB=&T|JXJ zHMeJVUe||>FRtD0&9mM<|MGM7=No$NY%I@J4nL?Oc2-R+k?B_c%16QxDrOu}w#~Op zSLd@co1EV*mDsOqqV!}Qi#E@OvTYpN zyj@%7T|K$a?)jgbj{jC4EVpp$)>wZ$wEbG))76S6w+Y{Sf9a68<Bh^S|C{u=+imm2sfp#3x(N&^r>mN6xBz$ZZ$DtHwMn>bSncjqJl_va=oJ z!*(icu-%lf`Hu2o(TR+wMDOXp63Stm!YIt0xagPP;Z*jZJJ;qcDYj7Gl%M(V6O*9J zUx5Oh9a2Ka^?2t8+?H9H`X)P~oBPp@{>Ll}m`_QYy`6Nk_LQEUBco$rvvtjzGH#{1 z^n%~+Uu#`ivfmqP>CHWV;qUK5w@W21Ki}9db*bO*=G#wkP8qiq?>V}P?-6IBMQJZ%BSaF-)R#aa(8zp5;vkSg1v^ajaJnqSt%$ko6 zA6w0}vzgfbI>0S|;^p?U{pH^jlht?s5D2~0YyMNtiqa7ZF-xA$@EowXN zUX;;u+Y;M!vLk7;;BNnzo)wQx7D<;ICGn_FfAjcqhi%1u-FgW@fwOLNoDOxo7CU?U zXQom7#Y@|m^!^CDT! z;(FV*A7O7=7PweNK8Ekfp`~y2Cv|q8^SnZJ9bKsQXL8>itgq1T)bED z*lanayGfV!@*b;pdbmLCcuu|D1IN(2N7;`oW_Leo>~&M$Jh}0rjN{Y}@u~Y~bF7Va z<5YHCUE}q%-iEI);uI_Y>Sng6;{5@Rc}v8#s*kjuVzyfOV6WJwb0InP#WEou?0J4y zP43J7U-?@+T`YMTS884gv^W5=Km`e?^Z?Po^25-;$O5DQ#5IPOGvJcNwW7p5xCB_L zDA?G51b{$4(E!L%(06uJFjUY_P6U#`vIZt+2$M6=GcqwZH!ue)fpZ`#fg}(?Z8V45 zsGuKGS&*ur@1K+vT#^g6A6nE|z>7LR1w*ieTV_#liGm4~jlcLa4mNnu^{neD69bzC zV=QJ+fJ}!4g&E9QmP9zq5L7BdieNtlGbDEzn-k@*&`JK;ha3cszW*swtm&(vVx9fR z`@@1Jk4(Y03)fafTvKh^c5}mS&9Ar1%?z)_IX#gCe|y_QawvpVS%nSRpka%p1r;{L56Y)+b7iy4z;j>;UGTs(EIil=k2 z@~U9P+%>*(u4|a_$5=&8;5X!m%}@yPrM zeR2}_jKxaR{+ltCPr3E_`XP<|Oz-zI`oD_knE7v^@6Uk09~XGueY?8kN}l50Z~DFK zv`-kt|JXJ6;sw6kPN~3Kr_N7$&bR)+%&5|1WdC9s%Fr3Vf}^a)#8%GqLPXtpf3z9EX}!8RbBnvxB%L9Z>0bL literal 0 HcmV?d00001 diff --git a/app/graphics/empty.svg b/app/graphics/empty.svg new file mode 100644 index 0000000..f4e3004 --- /dev/null +++ b/app/graphics/empty.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + diff --git a/app/graphics/greeting.pdf b/app/graphics/greeting.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8142378043720bdaee1d1ee3dc0d4ecc89186230 GIT binary patch literal 41399 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 + + +Servus, + Sie sind auf der Uploadseite für Unterlagen der Fachschaft Elektrotechnik gelandet. Sie haben noch keine Unterlage ausgewählt, die Sie hochladen möchten. Um Unterlagen hochzuladen betätigen Sie bitte den Knopf "Browse" in der linken oberen Ecke des Bildschirms oder Ziehen Sie Unterlagen auf das Graue Feld, auf dem sich der besagte Knopf befindet, und lassen sie diese dort fallen. Ist dies erledigt, kann der Knopf "Upload" betätigt werden. Danach werden die Unterlagen, falls sie ein unterstütztes Format aufweisen statt dieser Seite angezeigt. Zensieren Sie alle Namen, indem Sie Rechtecke über diese Ziehen. Wählen Sie danach in der linken Bildschirmhälfte alle auf die Unterlagen zutreffenden Parameter aus und drücken Sie auf Senden. Danach wird die Fertige Unterlage in einem neuen Tab geöffnet. Tipp: Die Checkbox "Zensieren" ist standardmäßig ausgewählt. Wenn in dem Dokument nichts zu zensieren ist, können Sie diese abwählen, das erlaubt, das Dokument eventuell in besserer Qualität zu speichern. diff --git a/app/graphics/text2.pdf b/app/graphics/text2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c89c950c740cebd3f67983d759760e5580837b4b GIT binary patch literal 10013 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 literal 0 HcmV?d00001 diff --git a/app/graphics/unsupported.pdf b/app/graphics/unsupported.pdf new file mode 100644 index 0000000000000000000000000000000000000000..11d66a1978daeec738deaf50a5c7c75e44ddc98f GIT binary patch literal 3263 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 + + + + + + + + + + + + + + + + + + + diff --git a/app/main.py b/app/main.py index d6c9858..856eee7 100644 --- a/app/main.py +++ b/app/main.py @@ -3,6 +3,10 @@ from typing import List, Dict, Tuple from annotated_types import IsDigit from fastapi import FastAPI, File, HTTPException, UploadFile, Request, Form from fastapi.responses import FileResponse +# import multiprocessing +# import threading +# import concurrent.futures +# import asyncio # import fastapi from fastapi.staticfiles import StaticFiles @@ -48,6 +52,9 @@ EX_DATE_CATEGORIES = ["Prüfungen", "Klausuren"] EX_DATE_CATEGORIES_I = [0, 1] UNIZEUG_PATH = "./app/dest/" FILES_IN_PROGRESS = "./app/files/" +EMPTYFILE = "./app/graphics/empty.pdf" +UNSUPPORTEDFILE = "./app/graphics/unsupported.pdf" +GREETINGFILE = "./app/graphics/greeting.pdf" # cur = db.cursor() @@ -66,10 +73,12 @@ async def get_file(file_id: str): """returns the file that cooorosponds with the given ID""" if file_id == "unsupported": error("File is unsupported") - return FileResponse(FILES_IN_PROGRESS + "unsupported.pdf") + return FileResponse(UNSUPPORTEDFILE) if file_id == "empty": error("File Id empty") - return FileResponse(FILES_IN_PROGRESS + "empty.pdf") + return FileResponse(EMPTYFILE) + if file_id == "greeting": + return FileResponse(GREETINGFILE) cur = db.cursor() try: cur.execute("Select filename from FIP where id=?", (file_id,)) @@ -308,7 +317,7 @@ async def get_submission( pagescales: Annotated[ str, Form() ], # Scales of Pages # Annotated[List[Dict[str, float]], Form()], - censor: Annotated[str, Form()] | bool = False, + censor: Annotated[str, Form()], ): """handles submission""" print( @@ -333,13 +342,15 @@ async def get_submission( except ValueError as e: error(f"Error creating savepath: f{e}") raise HTTPException(status_code=400, detail=str(e)) - censor_pdf(filepath, dest, rects_p, scales_p, False if censor is False else True) + await censor_pdf( + filepath, dest, rects_p, scales_p, False if censor == "False" else True + ) # return {"done": "ok"} print(dest) return FileResponse(dest, content_disposition_type="inline") -def censor_pdf( +async def censor_pdf( path: str, destpath: str, rects: List[List[List[float]]], @@ -360,10 +371,13 @@ def censor_pdf( doc = pymupdf.open(path) output = pymupdf.open() page = doc[0] - width = page.rect.width - height = page.rect.height - print(width, height) - for i in range(doc.page_count): + # width = page.rect.width + # height = page.rect.height + # print(width, height) + npage = doc.page_count + # pages = [] + # tasks = [] + for i in range(npage): page = doc[i] if i < len(rects) and rects[i] != []: print(i) @@ -382,18 +396,53 @@ def censor_pdf( fill=(0, 0, 0), ) if secure: + # pages.append(page) bitmap = page.get_pixmap(dpi=400) pdf_bytes = bitmap.pdfocr_tobytes( language="deu", tessdata="/usr/share/tessdata/", # tesseract needs to be installed; this is the path to thetesseract files ) output.insert_pdf(pymupdf.Document(stream=pdf_bytes)) - print(f" Page {i}/{doc.page_count} CENSORING DONE") + # tasks.append(asyncio.create_task(censor_page(page))) + print(f"Page {i + 1}/{npage}: CENSORING DONE") else: output.insert_pdf(doc, i, i) + + # if secure: + # pages_bytes: List[bytes] = [] + # censor_page(pages[0]) + # with multiprocessing.Pool(npage) as p: + # pages_bytes = p.map(censor_page, pages) + # pages_bytes = p.map(test_function, [1, 2, 3, 4]) + # for pdf_bytes in pages_bytes: + # output.insert_pdf(pymupdf.Document(stream=pdf_bytes)) + # with concurrent.futures.ThreadPoolExecutor() as executor: + # futures = [] + # for page in pages: + # futures.append(executor.submit(censor_page, page)) + # for future in futures: + # output.insert_pdf(pymupdf.Document(stream=future.result())) + # + # for task in tasks: + # output.insert_pdf(pymupdf.Document(stream=await task)) + # print("CENSORING DONE") output.save(destpath) +def test_function(i: int) -> bytes: + return b"\x00\x66\x99" + + +async def censor_page(page: pymupdf.Page) -> bytes: + bitmap = page.get_pixmap(dpi=400) + pdf_bytes = bitmap.pdfocr_tobytes( + language="deu", + tessdata="/usr/share/tessdata/", # tesseract needs to be installed; this is the path to thetesseract files + ) + # print(pdf_bytes) + return pdf_bytes + + # def save_without_censoring(dest) diff --git a/static/app.js b/static/app.js index 9e75402..db14387 100644 --- a/static/app.js +++ b/static/app.js @@ -273,6 +273,9 @@ function submitPdf(eve) { formdata.append("fileId", doc.fID); //formdata.append("filename", doc.filename); formdata.append("ftype", doc.filetype); + if (!formdata.has("censor")) { + formdata.append("censor", "False"); + } console.log(formdata); submitForm(formdata); } @@ -361,12 +364,13 @@ function initListeners() { }); } const startPdf = () => { - doc = new PDFDocument( - "./files/b78c869f-e0bb-11ef-9b58-84144d05d665", - "b78c869f-e0bb-11ef-9b58-84144d05d665", - "pdf", - ); + // doc = new PDFDocument( + // "./files/b78c869f-e0bb-11ef-9b58-84144d05d665", + // "b78c869f-e0bb-11ef-9b58-84144d05d665", + // "pdf", + // ); //pdf = new PDFView("./VO_Mathematik_3.pdf"); + doc = new PDFDocument("./files/greeting", "greeting", "pdf"); initDraw(); initUpload(); initListeners(); diff --git a/static/autocomplete.js b/static/autocomplete.js index 74d6fbd..c1f0c4f 100644 --- a/static/autocomplete.js +++ b/static/autocomplete.js @@ -170,9 +170,21 @@ function autocomplete(inp, type) { closeAllLists(e.target); }); } +function enter_current_semeseter() { + var semField = document.getElementById("sem"); + var today = new Date(); + var year = today.getFullYear(); + var month = today.getMonth(); + if (month < 9 && month > 1) { + semField.value = String(year) + "S"; + } else { + semField.value = String(year) + "W"; + } +} function init() { autocomplete(document.getElementById("lva"), "lva"); autocomplete(document.getElementById("prof"), "prof"); autocomplete(document.getElementById("subcat"), "subcat"); + enter_current_semeseter(); } window.addEventListener("load", init); diff --git a/static/style.css b/static/style.css index 03f4764..1593cbb 100644 --- a/static/style.css +++ b/static/style.css @@ -39,6 +39,15 @@ span { justify-content: space-between; } +button { + background-color: #0872a9; + /* border-radius: 20px; */ + border-top-left-radius: 10px; + border-top-right-radius: 10px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + .main { height: 100vh; width: 100vw;