From 7f17e72d613983d9a5161a884237b68831605299 Mon Sep 17 00:00:00 2001 From: Jonathan Herrewijnen Date: Sat, 5 Nov 2022 23:08:59 +0100 Subject: [PATCH] Bug in keeping checked/unchecked in check. --- __pycache__/main.cpython-39.pyc | Bin 861 -> 1994 bytes __pycache__/plots.cpython-39.pyc | Bin 570 -> 570 bytes main.py | 51 +++++++++++++----- .../9e7c2c5f-1011-43fc-827d-3e0c4120a1b2.png | Bin 0 -> 16667 bytes .../e159fb01-466c-4582-afe5-a9b7c963c1b9.png | Bin 0 -> 16667 bytes .../f60d0f3e-9e8b-4672-b43c-07e3be7da97d.png | Bin 0 -> 16667 bytes templates/index.html | 23 +++++--- 7 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 static/plots/9e7c2c5f-1011-43fc-827d-3e0c4120a1b2.png create mode 100644 static/plots/e159fb01-466c-4582-afe5-a9b7c963c1b9.png create mode 100644 static/plots/f60d0f3e-9e8b-4672-b43c-07e3be7da97d.png diff --git a/__pycache__/main.cpython-39.pyc b/__pycache__/main.cpython-39.pyc index 53d5feafe5177a99b26fe9f34f74ff75b30ce5bb..ff7b68650e1e2e4fee327ccc7fe4d2157b3cca5e 100644 GIT binary patch literal 1994 zcmZ`)OK%%D5GJ|Y)mpY>Cw?Spo1`&{wgOr?KrcmW1ZnfSsR8U>7EKrHB_*%CFO!s$ z7}CiG5}@#*K!1RJDUkjo0zLJVb8oq{GnAd!DY^iMv)Um!-^|BPNvqW)@ci~?KYbMt z@)y3Ge>l9{g`xidBZ#0miEw5)Em*_~FY*c=@xqUMiobh#P&A^@`81!2X55-)G%L99 zGaAiFCR+zIY7a;>F9OjxB+-Hh#SF}sL{rSdd|Awi7R-yXJzNrPF)tPdOk6r*;<8vg zB(Qo}w#3p7Q@_i_1K0=RR)jB>#mW(blj#QOTzL)ol3s^f|6!i!9os6B9T_XB>#Ee! zHk8~QNp0-BlBJL;HnOPm#K;b{^AEGZNXdIixtHkg1_SHgfAIZ}k2X`>^6bIFK*7j8 z7 zTUKe?$TMw3rfdk%^wZ32TULuGR5B4UYy?G_9jHXexS!=xTaHuIeD{;3*(;(J@wn@2 zs;bP|V^s}hYV=xfR7jPr6-ich>*s0#VlKhZm%$LqX`41_NEcwVX+Yig3uVJF#No;| z2M(6(gdkr4F70)g_3OMcI^sCFB+i*7SYd;{>(6!YHSR^IS^=AS=$}65`!I0UpMo*O z&==$d?K43II}EW2htQV$z^4OtKqufs27WK45PkNbkDbO^XaqY3dR-&OB3`E z#n{5`dS0bTuJ3>|jl7T>LPvNTFkEf}$nHsqy!(~y@{MT+-GNY5*1c`%@cmLY*YTjV zDr%R7x`A2T`rjxKOj&>`fCAwzcT89wykYQg0KxNvn$a6tMVw8QJ|w@=CX@sz7- z8CG{13dyEgU@Wf_xDtF=Wu^6!x{g}fBqmGaKD0?HM_S~e$xJTY^8b`AD>IWNdA2Vx zH;tJh`&X#yfcJ*3S?|$pOwZa<) zrMR4 z2gEU|P#kB!0MW2tLT-%)(A`Rz&K1{h>-SOo6|za;U2#xc+R@D-F(@&4w$5Yznmhkr;EID)DMg~yJZ2H3RS9xr!`K0dWAzyx(?x?-bjsxD?U)hysu~$N zMc}DXc@DX|E~m;+RAQ9NJD9g#1ryS%bPm9W9{-2)kZ~`Z3wh{=jRo4A4WT&y0*)ui A=>Px# delta 506 zcmYjNPiqrF6rVRcyP0gVn^dusq9ERuLVMJMcoPpo5h^`|!ZzlO$;9lA&d!2_RuAn- z%pvR-Xpj9WeuP24MNjRao!MTT!{hOO{Qk`E&){E_j*}!N?p?n;nj8k}^eOyU@4R}? zFqANg1r@zB81*s2&N&$+qCZcOV|NM|uPFAge@+}e5Is!3P`z~c5JOCHu%bW^4oEg! z+vDaN-RoWv-E~H~+dQK$c5L)nPHQa^cdDpQ0J`Vq4eZ(A-P?~D*iIqLOkvghX4^k^ z9foj93^^k}3|vqH^WcJ+a2_GOq?d3Crh~x=IRRv=z&VHe%k+a*b1^Z`_v=Dvsku{G z#GqcSt+dd2(TMztr_=w+pd6sFV z%+PI>Hz1Tj1e>5YJ;w9A7|Sxx<*&ztWX=%9r+Vsil{VRi-e~?t2c_rPXrfBjil>z0 zLgcxA;?8ZRQK(gI#Dip@>+-({ZJ0I(e_bf77vhaCwDR^GwxAC@V0Vmh%7YZ*M;z_} DcZqoi diff --git a/__pycache__/plots.cpython-39.pyc b/__pycache__/plots.cpython-39.pyc index 87e81568859404fcf40d320704b17563daed1710..a5218a001299a60d526d35a8c5fe2be66cc80ee6 100644 GIT binary patch delta 19 ZcmdnRvWtZ)k(ZZ?0SMeJHgXv-0RSjq19$)c delta 19 ZcmdnRvWtZ)k(ZZ?0SLrQHgXv-0RSf^1494+ diff --git a/main.py b/main.py index c9fed10..f28cd35 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ import os from flask import Flask, make_response, request, render_template from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas import plots +import pandas as pd config = { "DEBUG": True # run app in debug mode @@ -10,27 +11,49 @@ config = { app = Flask(__name__) +params = [] + + +def grade_files(): + grade_files = {} + for file in os.listdir('./'): + if file.endswith(".csv"): + grade_files[file] = {} + grade_file = pd.read_csv(file, skiprows=2, sep=';') + for i in grade_file: + grade_files[file][i] = 'checked' + break # Could add exam fle at some point here as well + return grade_files + + def figure(): plots.plot() -@app.route('/', methods=["GET"]) -def root(): + +def value_to_list(given_list, old_value, new_value): + given_list = list(map(lambda x: x[1].replace(old_value, new_value), [j for j in given_list])) + return given_list + + +def initialize(): title = "Project Numeri" - figure() plots = os.listdir(os.path.join(app.static_folder, "plots")) - return render_template('index.html', title=title, plots=plots) + return title, plots, grade_files() -# @app.route('/', methods=['POST']) -# def my_form_post(): -# text = request.form['text'] -# processed_text = text.upper() -# return processed_text - -# def grades(): -# grades_list = pd.read_csv("*.csv") -# print(grades_list) +# Renders template. All below is constantly executed by Flask +@app.route('/', methods=['GET', 'POST']) +def root(): + title, plots, grade_files = params + if request.method == 'POST': + form = request.form + for filename in grade_files: + grade_files_unchecked = grade_files[filename].keys() - form.keys() + for column_name in grade_files_unchecked: + grade_files[filename][column_name] = "unchecked" + return render_template('index.html', title=title, plots=plots, grade_files=grade_files) if __name__ == '__main__': - app.run(debug=True, port=5002) \ No newline at end of file + params = initialize() + app.run(debug=True, port=5003) \ No newline at end of file diff --git a/static/plots/9e7c2c5f-1011-43fc-827d-3e0c4120a1b2.png b/static/plots/9e7c2c5f-1011-43fc-827d-3e0c4120a1b2.png new file mode 100644 index 0000000000000000000000000000000000000000..51d512a92392f36d9e0533120603f72f318020a6 GIT binary patch literal 16667 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%0Ddi=IaEIan}Yn66HdA z;-vxwtU6fd2FuhJDwm%@DL=I_>_XHrn1NbTFZ16j?~cg=i=P-A!-lb839`YA$s5ZP zGhgyeCz|3||NFZr#ox}~f*#@s&FdRNEGlN`ZLX(JHGF)k&z?Q|`5APOhh)v3g^>jQ zHrfGl(Es-8-TG(!cdx%r2&rCVXTKzT2(l{;iII}*ZF5VST22)m9d@v91@WU_q-B7O z5$ej3%yl%C^oz6(6+c9e!L98)UQHd)py<%ozp}*=)A$H$o^+-=2zm7%g zt!S}Cw%)!=M`-EjIM~=^T`MrLlnqp)w0Q$_PlAK9+iO6K^|QZps#e7F;LI#TR-r{+ zON^@ej7@iRO{{L=Dth1WpEuNsU(|hV>q=K2cewKT*|*ML?|<-DV-t}dc<;k}=^PQo z!^eMrG0~DBG~%TWwqO+%mFMLyGbwOfccwRhGpm-^4bgxt0`j=&xss7p6}1KJm&Ln_ zb<{4OxJ%IcZICRfw8n@LHzr~|FJ-S~O!uy|3fg=*?d$7%o|U!BMv_If+r?ER+GBGn zwL43fAB5y$T(>;B9|Ai(ax-$4{m2f}u(0Gle|{8WH>iWUNtB{R#^Z~It^ThH!$@U- zrwN8{^zK5nXzz+&9J}f?0gl-+cjJ#AOhv&z(M9dqY`y&B1X&t=na{ zudmP|7>3U1y|s$@HZ~@9yeG)8MFig7RtgGvux6$f0~jLeq0jaj~!-j$rFMk`;W3Ui1Fl zL8O*`r^Gx?z{wF`&;c1e_(H7LlHUYawZ~-Pe_KUY+oY%&dJUWugUwcGH4SGDPkqTx zylmTFH2v&{I*(g)AT^8K)#cCp^{^W*;v?cRX11qNV;RBCT%WF64B1kdkxTRrhWCs55Hb7xUyJt zWv@ryz8kz4n&8bb)vX#D&mz`1RSa=(ae<#$Ls5F=P(($`LiJY8>cU7awAte<9qS-G zQwewO06`3ME0>RYXLutgMW_l1)fx&2K_mOAEE_fMq5p zzjAoiv1fCn3d}DYJUl&lCUv;83Cg8!T!t&$a$~%fu-W=0O1ryWOyx8Yg)M*U{b^oC zc)vOJlxgQ0>E+$JA3)8LQ&7OCsilP*t-T+~Z}IHHS^a}+@25Xd#bIp(2kwPX)~$cY z9}(HR-tbca7AF=>k;^7xIw9BYhE7C2nc(Mfi8kbkfMONKwqKywcA!W7rE0n*^UXQZ%G%8%CAR-RG&v?h^-FZohq4I!vdkqO~z3O?1fw8G&|=iKA8 z@b^`Dn~RAhf!(>r#y&niHS5?VxV~4j-uS};DkbHk8@s!^88C`qGooumVUL7EQO^JbgN@zQCj6 zldkntYIF^HR}pSTUJac11NQN+dX<)$xp~ai2{DhN{$lG?h)0Ir#O|0U^O`&pGaLQZ zx!vuFa+(?%&huYl#60hm4A8=UPrO&vJ)Y%+#Xg>0UA9k!IV0@a2U2K118m`+icsd7 zn}|5^3PL*+n5f1=yx6cvx5zQBF&pLmDe?UH%5Ny*G8md%oynCSpHdG&nOje z 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%0Ddi=IaEIan}Yn66HdA z;-vxwtU6fd2FuhJDwm%@DL=I_>_XHrn1NbTFZ16j?~cg=i=P-A!-lb839`YA$s5ZP zGhgyeCz|3||NFZr#ox}~f*#@s&FdRNEGlN`ZLX(JHGF)k&z?Q|`5APOhh)v3g^>jQ zHrfGl(Es-8-TG(!cdx%r2&rCVXTKzT2(l{;iII}*ZF5VST22)m9d@v91@WU_q-B7O z5$ej3%yl%C^oz6(6+c9e!L98)UQHd)py<%ozp}*=)A$H$o^+-=2zm7%g zt!S}Cw%)!=M`-EjIM~=^T`MrLlnqp)w0Q$_PlAK9+iO6K^|QZps#e7F;LI#TR-r{+ zON^@ej7@iRO{{L=Dth1WpEuNsU(|hV>q=K2cewKT*|*ML?|<-DV-t}dc<;k}=^PQo z!^eMrG0~DBG~%TWwqO+%mFMLyGbwOfccwRhGpm-^4bgxt0`j=&xss7p6}1KJm&Ln_ zb<{4OxJ%IcZICRfw8n@LHzr~|FJ-S~O!uy|3fg=*?d$7%o|U!BMv_If+r?ER+GBGn zwL43fAB5y$T(>;B9|Ai(ax-$4{m2f}u(0Gle|{8WH>iWUNtB{R#^Z~It^ThH!$@U- zrwN8{^zK5nXzz+&9J}f?0gl-+cjJ#AOhv&z(M9dqY`y&B1X&t=na{ zudmP|7>3U1y|s$@HZ~@9yeG)8MFig7RtgGvux6$f0~jLeq0jaj~!-j$rFMk`;W3Ui1Fl zL8O*`r^Gx?z{wF`&;c1e_(H7LlHUYawZ~-Pe_KUY+oY%&dJUWugUwcGH4SGDPkqTx zylmTFH2v&{I*(g)AT^8K)#cCp^{^W*;v?cRX11qNV;RBCT%WF64B1kdkxTRrhWCs55Hb7xUyJt zWv@ryz8kz4n&8bb)vX#D&mz`1RSa=(ae<#$Ls5F=P(($`LiJY8>cU7awAte<9qS-G zQwewO06`3ME0>RYXLutgMW_l1)fx&2K_mOAEE_fMq5p zzjAoiv1fCn3d}DYJUl&lCUv;83Cg8!T!t&$a$~%fu-W=0O1ryWOyx8Yg)M*U{b^oC zc)vOJlxgQ0>E+$JA3)8LQ&7OCsilP*t-T+~Z}IHHS^a}+@25Xd#bIp(2kwPX)~$cY z9}(HR-tbca7AF=>k;^7xIw9BYhE7C2nc(Mfi8kbkfMONKwqKywcA!W7rE0n*^UXQZ%G%8%CAR-RG&v?h^-FZohq4I!vdkqO~z3O?1fw8G&|=iKA8 z@b^`Dn~RAhf!(>r#y&niHS5?VxV~4j-uS};DkbHk8@s!^88C`qGooumVUL7EQO^JbgN@zQCj6 zldkntYIF^HR}pSTUJac11NQN+dX<)$xp~ai2{DhN{$lG?h)0Ir#O|0U^O`&pGaLQZ zx!vuFa+(?%&huYl#60hm4A8=UPrO&vJ)Y%+#Xg>0UA9k!IV0@a2U2K118m`+icsd7 zn}|5^3PL*+n5f1=yx6cvx5zQBF&pLmDe?UH%5Ny*G8md%oynCSpHdG&nOje z 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%0Ddi=IaEIan}Yn66HdA z;-vxwtU6fd2FuhJDwm%@DL=I_>_XHrn1NbTFZ16j?~cg=i=P-A!-lb839`YA$s5ZP zGhgyeCz|3||NFZr#ox}~f*#@s&FdRNEGlN`ZLX(JHGF)k&z?Q|`5APOhh)v3g^>jQ zHrfGl(Es-8-TG(!cdx%r2&rCVXTKzT2(l{;iII}*ZF5VST22)m9d@v91@WU_q-B7O z5$ej3%yl%C^oz6(6+c9e!L98)UQHd)py<%ozp}*=)A$H$o^+-=2zm7%g zt!S}Cw%)!=M`-EjIM~=^T`MrLlnqp)w0Q$_PlAK9+iO6K^|QZps#e7F;LI#TR-r{+ zON^@ej7@iRO{{L=Dth1WpEuNsU(|hV>q=K2cewKT*|*ML?|<-DV-t}dc<;k}=^PQo z!^eMrG0~DBG~%TWwqO+%mFMLyGbwOfccwRhGpm-^4bgxt0`j=&xss7p6}1KJm&Ln_ zb<{4OxJ%IcZICRfw8n@LHzr~|FJ-S~O!uy|3fg=*?d$7%o|U!BMv_If+r?ER+GBGn zwL43fAB5y$T(>;B9|Ai(ax-$4{m2f}u(0Gle|{8WH>iWUNtB{R#^Z~It^ThH!$@U- zrwN8{^zK5nXzz+&9J}f?0gl-+cjJ#AOhv&z(M9dqY`y&B1X&t=na{ zudmP|7>3U1y|s$@HZ~@9yeG)8MFig7RtgGvux6$f0~jLeq0jaj~!-j$rFMk`;W3Ui1Fl zL8O*`r^Gx?z{wF`&;c1e_(H7LlHUYawZ~-Pe_KUY+oY%&dJUWugUwcGH4SGDPkqTx zylmTFH2v&{I*(g)AT^8K)#cCp^{^W*;v?cRX11qNV;RBCT%WF64B1kdkxTRrhWCs55Hb7xUyJt zWv@ryz8kz4n&8bb)vX#D&mz`1RSa=(ae<#$Ls5F=P(($`LiJY8>cU7awAte<9qS-G zQwewO06`3ME0>RYXLutgMW_l1)fx&2K_mOAEE_fMq5p zzjAoiv1fCn3d}DYJUl&lCUv;83Cg8!T!t&$a$~%fu-W=0O1ryWOyx8Yg)M*U{b^oC zc)vOJlxgQ0>E+$JA3)8LQ&7OCsilP*t-T+~Z}IHHS^a}+@25Xd#bIp(2kwPX)~$cY z9}(HR-tbca7AF=>k;^7xIw9BYhE7C2nc(Mfi8kbkfMONKwqKywcA!W7rE0n*^UXQZ%G%8%CAR-RG&v?h^-FZohq4I!vdkqO~z3O?1fw8G&|=iKA8 z@b^`Dn~RAhf!(>r#y&niHS5?VxV~4j-uS};DkbHk8@s!^88C`qGooumVUL7EQO^JbgN@zQCj6 zldkntYIF^HR}pSTUJac11NQN+dX<)$xp~ai2{DhN{$lG?h)0Ir#O|0U^O`&pGaLQZ zx!vuFa+(?%&huYl#60hm4A8=UPrO&vJ)Y%+#Xg>0UA9k!IV0@a2U2K118m`+icsd7 zn}|5^3PL*+n5f1=yx6cvx5zQBF&pLmDe?UH%5Ny*G8md%oynCSpHdG&nOje z zpMe!SckW!>$B!Q`u`=*mvVTGg$|R zy!O(&reiUl^OqeR9k0IWukhL-_SS6fgnODa7cd;$>V#;d_1@`!AD{nUg!KQ9fAVUN Z+E+y60*fD29}Eh?$|y -
- - -
-

{{ title }}

+ {% for grade_file in grade_files %} +

+ {{ grade_file }} +
+ {% for key, value in grade_files[grade_file].items() %} + + + + {% endfor %} + +
+

+ {% endfor %}
{% for image in plots %} -
- {{ image }} +
+ img/ +

{{ image }}

{% endfor %}