From 35acf7a64ba1b67b9ac9b6d31cfe99d80eee99e8 Mon Sep 17 00:00:00 2001 From: Aaron Lee Date: Tue, 26 Oct 2021 22:29:39 +0800 Subject: [PATCH] Finish edit functionality (limit admin) --- .gitignore | 5 +-- functions.py | 7 +++ manage.py | 67 +++++++++++++++++++++-------- static/pagejs/admin.js | 52 ++++++++++++++++++++++ static/pagejs/homeroom.js | 1 - static/stud_affairs.png | Bin 0 -> 25575 bytes static/stud_affairs.xcf | Bin 0 -> 50979 bytes templates/admin.html | 88 ++++++++++++++++++++++++++++---------- templates/homeroom.html | 32 ++------------ 9 files changed, 178 insertions(+), 74 deletions(-) create mode 100644 static/stud_affairs.png create mode 100644 static/stud_affairs.xcf diff --git a/.gitignore b/.gitignore index 02ebca1..8ed1e58 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ *.DS_Store *.env -test.py -demoData/* -dummyData/* -users.txt +test*.* __pycache__/* \ No newline at end of file diff --git a/functions.py b/functions.py index c918d56..2be0eb9 100644 --- a/functions.py +++ b/functions.py @@ -76,3 +76,10 @@ def addZeroesUntil(str, number): else: str = str + '0' return addZeroesUntil(str, number) + + +# MANAGE +def removeprefix(s, prefix): + if s.startswith(prefix): + return s[len(prefix):] + return s diff --git a/manage.py b/manage.py index e5d60b4..12f6b95 100644 --- a/manage.py +++ b/manage.py @@ -3,12 +3,6 @@ from functions import * manage = Blueprint('manage', __name__) -def removeprefix(s, prefix): - if s.startswith(prefix): - return s[len(prefix):] - return s - - def manageProcess(fCommand, fData): if (check_login_status()): return redirect('/logout') @@ -134,8 +128,8 @@ def manageProcess(fCommand, fData): absData[p][h[0]][h[1]][num] = { "name": hrData[num]['name'], "eng_name": hrData[num]['eng_name'], - "alr_fill": ('signature' in tmpAbsData[currDate][p] and - cclass['class_id'] in tmpAbsData[currDate][p]['signature']), + "alr_fill": (('signature' in tmpAbsData[currDate][p]) and + (cclass['class_id'] in tmpAbsData[currDate][p]['signature'] or 'STUD_AFFAIR_OFFICE' in tmpAbsData[currDate][p]['signature'])), "absent": False if not num in tmpAbsData[currDate][p] else tmpAbsData[currDate][p][num] } return render_template('group_teach.html', dateKeys=sorted(tmpAbsData.keys()), cclass=cclass, absData=absData, dow=dow, currDate=currDate, tmpAbsData=tmpAbsData, confirmed=confirmed) @@ -254,8 +248,6 @@ def group_teach_publish(): else: db.child("Homerooms").child(h[0]).child(h[1]).child( "Absent").child(date).child(period).update({'notes': notes}, session['token']) - - # upload notes os.remove(os.path.join('temp', rand)) return redirect('/manage') @@ -269,15 +261,6 @@ def homeroom_abs_publish(): homeroom = request.form['homeroom'].split('^') period = request.form['period'] signature = request.form['signatureData'] - if (request.form['stype'] == 'edit'): - oldData = list(db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child( - "Absent").child(date).child(period).shallow().get(session['token']).val()) - print(oldData, type(oldData)) - for k in oldData: - if k == 'name' or k == 'teacher': - continue - db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child( - "Absent").child(date).child(period).child(k).remove(session['token']) formData = request.form.to_dict() notes = "" if "confirm" in db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child("Absent").child(date).get(session['token']).val(): @@ -310,6 +293,52 @@ def homeroom_abs_publish(): return redirect('/manage') +@manage.route('/manage/edit_abs', methods=['POST']) +def edit_abs(): + if (check_login_status() or not check_permission()): + return redirect('/logout') + refresh_token() + date = request.form['date'] + homeroom = request.form['homeroom'].split('^') + period = request.form['period'] + signature = "https://firebasestorage.googleapis.com/v0/b/attendance-be176.appspot.com/o/stud_affairs.png?alt=media" + formData = request.form.to_dict() + notes = "" + oldData = list(db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child( + "Absent").child(date).child(period).shallow().get(session['token']).val()) + for k in oldData: + if k == 'name' or k == 'teacher': + continue + db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child( + "Absent").child(date).child(period).child(k).remove(session['token']) + cfrmstatus = db.child("Homerooms").child(homeroom[0]).child( + homeroom[1]).child("Absent").child(date).get(session['token']).val() + if "confirm" in cfrmstatus: + db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child( + "Absent").child(date).update({'notes': cfrmstatus['notes'] + '; (確認後學務處有更改)'}, session['token']) + if 'notes' in request.form: + notes = request.form['notes'] + formData.pop('notes') + formData.pop('date') + formData.pop('homeroom') + formData.pop('period') + for i in formData: + i = i.split('^') + db.child("Homerooms").child(homeroom[0]).child( + homeroom[1]).child("Absent").child(date).child(period).update({i[1]: int(i[0])}, session['token']) + db.child("Homerooms").child(homeroom[0]).child(homeroom[1]).child( + "Absent").child(date).child(period).update({'notes': notes}, session['token']) + if cfrmstatus[period]['name'] == 'GP': + db.child("Homerooms").child(homeroom[0]).child( + homeroom[1]).child("Absent").child(date).child(period).child("signature").set({'STUD_AFFAIR_OFFICE': signature}, session['token']) + db.child("Homerooms").child(homeroom[0]).child( + homeroom[1]).child("Absent").child(date).child(period).child("names").set({'STUD_AFFAIR_OFFICE': "學務處已編輯"}, session['token']) + else: + db.child("Homerooms").child(homeroom[0]).child( + homeroom[1]).child("Absent").child(date).child(period).child("signature").set(signature, session['token']) + return redirect('/manage/admin/'+homeroom[0]+'/'+homeroom[1]+'/'+date) + + @manage.route('/manage/homeroom_confirm', methods=['POST']) def homeroom_confirm(): if (check_login_status()): diff --git a/static/pagejs/admin.js b/static/pagejs/admin.js index 4ca9ea8..67f68ef 100644 --- a/static/pagejs/admin.js +++ b/static/pagejs/admin.js @@ -24,3 +24,55 @@ function redirAdmin() { $('.container').hide(); $('#loading').show(); } + +function edit(string) { + $('.view-' + string).each(function (i, obj) { + var num = $(this.firstElementChild).attr('class').split(' ')[2].replace('view-n-', ''); + if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-1") { + $(this).html("") + $(this).append(""); + $(this).append("\n"); + } else if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-2") { + $(this).html("") + $(this).append(""); + $(this).append("\n"); + } else if ($(this.firstElementChild).attr('class').split(' ')[1] == "n-3") { + $(this).html("") + $(this).append(""); + $(this).append("\n"); + } + }); + $('#btns-' + string).html("") + $('.afterSelButton').attr('disabled', 'disabled'); + $('#btns-' + string).append(""); +} + +function unCheckLate(string) { + document.getElementById('late^' + string).checked = false; +} +function unCheckAbs(string) { + document.getElementById('absent^' + string).checked = false; +} + +function afterSelAbs(period) { + $('#postHomeroomAbs #HR-period').attr('value', period); + $('.tobeform').attr('disabled', 'disabled'); + $('.afterSelButton').attr('disabled', 'disabled'); + $('.tobeform').each(function (i, obj) { + if ($(this).attr('class').split(' ')[1].split('^')[1] == period && + $(this).is(":checked")) { + $('#postHomeroomAbs').append(''); + } + }); + $('#finalCheck').modal('show'); +} + +function submitForm() { + $('#HR-notes').attr('value', $('#subjectNotes').val()); + $('#postHomeroomAbs').submit(); + $('#finalCheck').modal('hide'); + $('.container').hide(); + $('#loading').show(); +} \ No newline at end of file diff --git a/static/pagejs/homeroom.js b/static/pagejs/homeroom.js index 3394142..5a8de85 100644 --- a/static/pagejs/homeroom.js +++ b/static/pagejs/homeroom.js @@ -57,7 +57,6 @@ function showSignaturePad() { resizeCanvas(); } function afterSelAbs(period) { - var tobeformArr = []; $('#postHomeroomAbs #HR-period').attr('value', period); $('.tobeform').attr('disabled', 'disabled'); $('.afterSelButton').attr('disabled', 'disabled'); diff --git a/static/stud_affairs.png b/static/stud_affairs.png new file mode 100644 index 0000000000000000000000000000000000000000..106f40ad8500fe3f21918d0961ac42543c818d83 GIT binary patch literal 25575 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�An?RE#739jf+D$Nyvvq91|Ub>TkAZkQF= z>4*LyFau_);%5|VI8vt)(cRYvV>xe|cqnSURK{xO>i8oJHN_LIw<6F87yTD0*C9>4ENA7?k)_{i+rT8B5idV#soGdy*yc;NK@xpPNK+pRRk_-o;uwxnbjTqe~EgU@7i9yklaMQEU8l#)H+ppGe>4u>t=?if;xZ zBcq_Fp4JDaVcCUePeP&|9ra2?r2g>`k6{{P#p0d-NrQ8rOm9!fno?L@x#hk~vbt{La&7;A9OT#v4mskB%L7ly z?=w)URypM<{CmSE{&_wqDk^aSH%_IyXCylQ`Q(a8~j%X-(cf=2@owmBp852 zTv#9sjeZOMupj^zcmUj%xPWLMd!m=_{RC;+x?Ye-qHkzeCO_!2F$vpU<5F*(CmV*2 z`z&O)m7X8urROLp_<7EXn_QjGSe{;+uO0`ODq~75oJk~|*1CWgR~6|aHMNuNO5U&m zfI&}Y=2zcRzd2i7idglzn$hT1b_S$ieI4DavA{{YyjQWxt;5=Vak=;XWFR?>)~-yD zo*c&S_w4_O51*VJTD%BCE9{FYcCDINL@We6ebvh!)bIT{|7S4WP88W@3TqIkG-O}k z=FM%u_jM`sy?&>=IWgt#x&f0gk{@0xty<1&#wXLxos^dspOLZJ4d6A;_}v1@<$@-R z0Q+vv&!w-a7_{>L3J@iiU4L~bnPI7%MLX`()iUk|_A(TShXZ5v765J!h`C|UA8-h; zQ>hji`Q9EOeg@&8(3~%}=g+ij#0_YIm=n$)P5>fw+bI13`xSht)y!+NQk@N))e=uQ z3B?i&ObME`>(?7E(?4V+!X?bYiPbO9x)qNkid&2ja>oeNQrBhO-2sE<^I{K}Asy{Y z#%V&0(iWE~On@l&$+B`i?%&6|o&8y=DRTvdl$G{00}@WX;y)wn{2Dyl~l zA)m)*AtCQD4dW{&Dfl5ZV6qI2e7}9agZ_YIjkfETyHYHC-cSDXwtO3x@oF6QoRV9J z{D9|v*bykavABKM03%dfQGJTDB(R!x0@{$sNpoZAcT!ei_!s`t+cuVoHc6N5Iau{-JV!@)EzV=)`&QTgv z)o9@NeM8Oggo5$mY}PvdQ(=2+b=+7x;vL>i^r|T&BNK&bP4J;6uORkx8aFAIB>#EI3j~U$l+OjGK$>p6pOu|B-not6RBE{~zY# zTQkA?s;6Aly8s2B@0-8tIsc}{46ZhuFV#Z?D)78i@_-p)u(?VM_1j#6N{y@PPyqwXU>MpkDU@_c z|74qnw{Dd?>D3eMrogDQmZ5D0se%GM#7JZ$f}>YkrixA<)JTXR{U4KvVE-Sg+fXX# zrc-%;C>R-0fT?;w!Hj7lv=0r75*fW$_j)D>pn!#^pRc&%^^MWKK6d*X=!N#V_(O?VPau3_}*s9^FiXSQU%}pe`XN)2SFvQNJ{6GyT zHI*@eugK&c`! z&5Bl?iZ)8j!59D&F0fDHj@$rht;%g&{^4otuL7>M4riSJCNWA___*0mO@PC@1Z`tJ(;5tyA>5_@7gUz&R=RY9s6lG4huh;LEQEb0zj=uLT32_ zo~?SzXZ>xS#ZK*jLTAzG?^ow4pt=(;X=$t2=C${ynt{r{EY628g55JGuapxrB`k&xczVtEOrk5I@E8GKlIVR=G$r^^ zch@fs#T}p`R5r%OIxt#2TAa*cLH^O&yJ?|@!_79K(j(yJ#zY(! zuN*(X7GC4(-(F>#ZGuYeFoAF2_YPE-TE|;`lr?_UunoH^$ z%~&s7^}*HEM5)dxnHHlpiJ4q3Z+y7H!8NobWqEml1gl)xakbz`cs$YDzM|hwavl<& z07Hv>VFA1*TO~4JLwR)2Jv@Tx9GtgZ!AMiAtO^4Vq)#s<9EkmzY2uP}`1w94#IaeW zIN^AL9LSA^=zUV?AqVerSm-22I`Ob*sw&{TdLe zJaQ{AB&zAR}obanv3$_8HH3qtO$ks)$g89rOyArbH7>;g} zhXc09lbq;6Z>1gE^uS#dv%XRMHLNEfb;~dI!}`UeAFnX6e0jUozi48m&``w9%v6yt zF&+|RM`B~UgRanNjqc7(5>FSNUGL-tWOK(GyrfDPv-zqC6AUzTbo4sgBdTe|^8hZl zY~`W27yYE%VLJ3rf63Kd>S=;-bdjp)Y@v*{9T-?B;Cb8sP0r5xMavdPUf;xci#fFE z1BQ<8!zeN`h>--G0-MoNq^Jh#9VF(=`ptc>s&eQ406EJv@4Gdl2NYiEcsp0AbUH2m zr{n}M(1(iA&`>_IGwF<;oc=B$`wwmaZ}{udo0!4L?p%72|HDk^`&Y3HVJXt*O~;W{ zK`NG$OC6kpy5Yn~n+nG{ON&A;so^JMv7&V|z*R*Z>2i7i{+6$0&pKWmj-5~FSH^A4 z^}Ii>Omxt0bKO$ zn_a&C;{}~=)ooqHvZd^pY-oqnAJPCc`&3;{X`Lu zjdxtx7$yhnx~4>)c%JVW68;D;rPncoKkq(}A8R$9Z>`~8O3AWYDpJeohUD3gY$-d{ z?S~Ymo7^Ag0)+v~t@AH$Nb2O&gn*o!w~1d(b#zWnPT2(o!=lDj(jv3R^XH2&i+@W` zKE)97_ohGoSg^YQ^}PZP;qD!YUchJW&o7rH1pOX#u&{ugn0~5nW8)7r=42PDL2+@B zDF{lz7Z+PRJh9^JzqJHTDY3!KEmv3IM@A0sx<3b=@KLZm|6PB&Iik3{1i)`-Xp`S# z1e>__(X%b$N+e317aSm*=<8SEY-13huG|At2Dl=jBQ-+~g>Z6OVxY@t#y;wKpg-XU zu+stH_itL{%MS&KuwJGzHMxyYKsT@=YgUd}d~~ zUJJ$RyYqY5;L;N6(b19nU8b^A*)NX@Q4Z|KyQEfKXy=Pxwi!o2CE^F(Q)&)y@5$tY z=K9%LhhA?_w7PcvV*q_zRkyXn=S~f58UP0g>BykZ&FwKTG6i<{5!~DiXV+CANrGsK z<(nVFfJTS-4_o4Xhm=*Qm9Q9mWpLr2xYzuzXlM~SM9+W}Z`tt71}NCWCVtqQi5XN& zB!KKHEvSupj@bLQRkJABDmR94L{%Np|B62g< zOgH%SXEDM1cj}ZVyftK#TS+ON;7B743^*Eim8R>`lqAl(bJ+1|E)`{E2C{5I*@l!C zDVI!&Cv#{dkJYtx|;ooVH0KnpbQ5CD=sbu6ku@GvZX+?EHpBo&9@_; zmj}NMRxOATsU(c?MjZ6p&*ZY1y^$iV`NMmY^|2%vW5|E8=)k}R21L!bEWR_=r?aGw z)hVo!+Ya&$47_#yt#$;Mwpy_enq^c}R6E)isJRN{*yOw8PK;>Fpii$Jf;z8RiRa;% z^wGM!uliMrz%7Y{GTw@8^1d1F;z>Ed7%WST;#w;}K`}g6(1^Djr z%L4szBT1DP8{KGl-0r#s8e?d$-i)R1vZ$VQrZ3ebS0UGfwL8-ufQ=lE zR)rtleqsxi3flZ()hNYEpHn*_Y zSiUEGpgyVYn-DsU)BG4AxWUOuuw&Ke0JV`Y_czGAVvRaSuDSB<0E-`mU~R+p_(*sB z)8av5D+2L%pE%*f1yvCQj#XtKr?nTC_UOoMF6zbsb1(Bm=Z=sZ%)}o1ltPf+;2gHE z?VC5INAxPi^)&(zQ~^)=Xu_1BI6&uOG5`FwRA=LFz5M>W>7?Ng*3_)l9^OO^g=!fV z(3BC3Gh0e@BFRCg8{W10JaMVEV_8f-LWv6CR1WUso|!%{0DCD6EqrDekBA%|%~M6sMnL6Q#CtH^V}KfKx&W`*WMLBF z8<#J(CHvXnA#ONlY`sau)8iEnU>r4HDVT#tGl zd=DZzFs*toE~~P6V*R1m$kSdfHKA9Jdgjy8f`VYm_~7l+)`P2-Od^UJmn+yBSa zgMyC2d}D#M#L?{REDD29kzhj>U``!~!VbJrH9g=Ug#q+WEZ&-|1tKyssh>teJrZu) z?Alf(&AMY5j1KCA-6zsP@76{+rU?jN?3tw4~SeGDy`2z%O7`%D((~pTpTY*T2-Thbe_Er3cl|EkrmJoL{yN~%mF>7 znT-b6gdp#l$J4qZZ$SV5PzULf4G zfA|)QhgaB&!OA8tpvHsDz+4^*u+hkm%M%eE7foBV zEYtv0PSK;@4hJ|LgN1+mH7K#LkGh8c;FXn+eZb3SI5q}W)=fctU`F67 zJJm42eWKfq7zBlto$?9_h{?!AtWv^Ds60JBECL^I4H!c9WheT0Z@_=pGyZ>ksQ_@p z|L5BXfJpZL=}_w1kd2F7)s znKFHs@7leDisUmoA&CHb3niAl+U@XX-6;c@3tc(WlE6^aCx10t)gq7GdXi(4$LB~~667Hip z3a|t1A2N=V>i(IjV_9kUB*diC?Hx-)w%ZIIoBzkA9EliVCp14=k7Se1{9>x1)8pbz5qGq-PUZYQI> zDezW`aGSw#{tb33R@^^dB4T0&{aMLtt@wR6e^vzS0GU3I&i!27)(= ztLj*i4wJYIt0LYhzfY@1X^q;Y6m6+prKr`~o7#KtO>6H>tyYby9kmHjdxfY`vxq%n7PSQt z63+AcU;o$VI_F&HI_FhhBzbZ__sDmA#v^?26RWm$3#6^br~u%Q^=?z&-;5%~e3@;r zf$%b>+NLJz#hD3s;uaI&*fFR9B)vpAP|o#3KzU{TH|?|GZ7v`MG;qr5o`By2B4hXV zXAN?u(J(`(TL7!TwP~fD(02g#1PlxS{U1G$c!wt>XeaL`CnVgIy4gpHlQ?YZ^5I$` zrU^gial!)ElC6&S0Obvi{V}H*qmR$@SJ7Z@fFTzHkR)$``ZP=lk*}xTRp|T*k_wdy zzO>)YwiFHSjK`0fBM3!(O?(!T+3^8gbt^*)|{) zNOXT)Tn$d`wzQWk4_!3*+&vQ)bMv24fkAi{(Dv9i-vng`O<3bB4xj|^`&o=7!k9Z! z`g>LMQJYxmcv(d?m7xnh7MABlsx5RfjS=uX+ZSfAkVx35d3OtH#sjBErJDHR-P96A z62tUcfTszB*3_2K(6Mt`ds%&VKyztW(W(cT4|_Wah~LKyQ0#V980}i@ZY24(vMAm) zAo?RpX%0`wWIb9LClL?2q@d=aEA)D5?5F=eGB%bApe+)&2cu-Pv>w1AvX4(^4NdNb zg3{LpJv@0+<{QLU_jRd(ps8}PqAE9;aZTU7Rg8NHs9j7ewmJgQw>U3J@joz^ak z_x~x>uXX`dS8yL}VX85_&~o|IX#j=AStBXxcVPE`+TdTia~*$G-~?hTO~?8cY8U zJ`DhMB^Tp!h&6Tqb5kj1WQu`wWNqR=&|vNSIguh4xTSrlm+eosvmkRl{y zH+k;Q-timzKT!I^r5~kGqP4<^bDCj zKwpCX3obcdJOyCP4C1gIfOSHJAdQr$kwcrvsNHW5k(B#lI^dAc8>!3R;{NMbute5x3%Pj1*zb~M7XB_ST z)*OI%Ijb=rAR%J1M|&2`$ha~S6^fOqd(9ns6N=1{jUr5)R3ML|-_OeI)hLeP_3Oj?T7Orn6s*0>9u%lK(4**T*&nSJ1Fy(OK%bC zZ7mc!II|vry?8F4lAi+5k?Ycy0{m%>r4Mh<#sIVs>xrma5&2(EB>L>Lt{b5v*Fosx zic|`2z6GY3tjUl9+4u)?e;+CVV0XFp7QgMEhv6;?6gM}^Bz+Ok>fdelr7n|dgKQxj z4ttX~nXU_H8w@M9=32XPy{r2->k=u@MgPhu!n`D3J>&&WXtRa@k~n~MMjEGXI{>VMc`-yV=&>T$RU zMo(!)*0n!<_N?&cH-0g}=9+l0)$c;2bPM9ClG1ang^_ICpweMPRW!mUARtC7Sn33Y zg6_oTZVP+5mcMOjmfIa&+iO8?q%vY*%F^a{{zFv`)13m7Mn^}_ z*17UcAHqmM{7z-bNtKc^O=z(qr7zC_nMrQ~E#J|~TX9mR|wp9K^ZSU+@O_{J)&1zAV1O*>jtaOEJUc(|IZYWCbUw-fitQUM)4n?~y!2n3&a2mwGRvZ zD+GRYuN{6|Vq%Q#m?0=Ed`b0aD9bcGBzNkp-Cb}>uXmy)a%HxfL{%;EcscM45ZEN^ z`}_NyZojy`SSKjqmUwJ3Fh6fFfH>^r+&w#ymF-)pRT$s9$5n#vJF*<*7jnJj>dLdR zwZ+E8#Q^Z#j&Ne+oSZ@n1U@UjpBE>Z&7_eaM5?wTQ#|+f#vU=4%+#kXFrj0v<m+iJ-#~6A=E6)_PT*JS|@7Q}>#yS{-s;QXg1k&Z?9)g{m;!8EW_kI`?LDk$-N{Ko zqT3aL#oQm1bhMWR`XL>IN{!X`qN2z~*J|j&!Yh7(*#r#IA1*9_SE_zP+~i1^4hgcJ ze7|bro``Fk0lzDXfg>4&T*8(+0@wCD+3I&*{McqBQG_>0xmkp%Ahq(H3sl@$xS7S* z@M$w8H_x-L&f1#~4*+GE(`j(_S32u+jzAYNL&4hK;F0H1F>;m@QI@q04XG{2Hi5G0 zEq6u5<|99Z$Ikna;o&>`MhFFmAR6E#0mL}19m%$j5VxgPk@H9flboxx*ClVXW$;R# z^?luYP0%M#u>G>LY}2RvV=&N2!{nAADwWOM`M$ATVLRnKJP+7#3}xWk_wU~qbOaMJ z#ETKui3C}^B!%_t2Aut+o<1ZeZ0l*$@9Ip*MMxSM83BCX$d(p*lbpcyoEf=+BI8gm zuWv`Qt!gA$$>ruQ1PQ~#Tgs@VxWtcr8&9vI_k~atbXZ~7jXZA!x_c&lV}^s9%1l-gI#>!Y;7GMlAA!F zQO)mJuP1$K zANmg@Vm)^or6wlxYeO`F2%g{e19siVh>|&MO2l?Q6&7cKU$O#UJu0yq>z-pZ6}15V_#l zd870;m^O?oy^ax3=y)DU(}65D`e|$%wWw%lh;IZ11^I2Q#`jCB#3{gFFtACpohsp@ z5L1j)y+rR1j-1PN$vpArIKB1k@DO+G&il&YE$jlHreC|uwMWbF%gP!gqgiR=3hI}H zGPcP&la1dMLm@(Hn*6NM8fq~~QhZ{CD*!P`srN%(%57-|pS9L<*uK%8fvl16 zAF9mUOv3OgI61c$7R+YVRaErLW`wOS-b8b~Y_PJ_`rM=5H_09U+f3undugo$u1y24 z*J5G{PV@(JFZ(-CrfGi%$%wV35a(naoO(wI$rMeG?|JSRfp2q+{;bDO8^<|#avU{3 z#83HyD?Q&fslu;s%siZBG3BgMOf**1DF2d^Lo6Y&q=imr+(!3|ZSjX-i5#39 z(#kZGnWXq!(3lH6j48LEYeWN*H*)to1<+R{IDd3bQ^NYC9y7q>BI!kvU@FyBcQXQL zy9dYBiW>7^mX>P^#RrfM<$VP{QR3hQC8;W`0A6cr(#?->!@4mWy~eeB4v!XQ9*krQ zYd4<+9CloO-LT?{`W{TEZm}BFq%|hwPZ>|l6|8!Ez#1Jr=$R)K^!0JWQe$-k{10J_ zE&hoj7{7ZM(G15iyz(PcYta3ififx|d@DfJUOgdCGIM_7I#sdu*8AJThuhZnVO-(A zKw-mPMg~s^FPGE?Mk&2aY;!setu6vT0CU@kf7StE_21;wD8=884lI_u^TJgQEZAIK^&9Bp2|`w@VEB$ z1^8u%B()}0Z4aBxH|N&IUt?nmHa3D05j`GgGr0c}#&Z}Dv zO$R4)k(wFY0bO`i3Mc2ZCTD5qj6;ifRE_8g9knH*%LqR(B($w5@}9ms@MnY84rB+I z(SKK2#9+Hhl+qKW$|2YSj@kQoZ|q8%;fQI-g^FpZ`XhtvT~1R`asQLk-28QK=%5_^ zpuU1}quv9&V9$ibAzHqnCEpd$@y7WUUz$nSdJQZnx}UQDzFt{0FAyaxCg4OJl6%Q> zKP02kn2xyS>n}R`Nj?W+}tGQb5qJj*Q$lI7I)u(jj5+ee?Cs>DesQ3-QZq6=O zmpeGh!}Vi)AOerjI0%=4NN6j9aiL)@w~PFPPso*{Aa(S&Z&o)tVjuPshiK0qbBIuN zh7ztesWf@=7%(QLm?n2YhbYQwItkf*d7`v$mW8e#o}FbAr5wul4FRHP*)pBegp6-h zNGAa)j^RVbB7xrp;TPws>Z2-IoZ|z{rOF1RYg~uz*coo5u>Pt5#3u7n5&Nxyvw6R) z0vzF(|8dJRopG3!hUwPLHh9ZOGPF#U4MV*)Xe@^hzzvj*?#n9r7ls06?E|`lDD?Ec zn7g-$ULFye6`Tf^9Qx&d3mv^1?JD+zK%{N*5wyvdg=?M?qXaADKTAcxaJ!{PgvUIN zj*f7su|81mKGN?XTXT#el!my#I~yRiuMiZYeD*Wq-=T3R`J%K8n+q_znj> zlXz9+IQdNZ*idPiC+VZQ-Zr+Yw(8Akb^;9K`G7Jrb93&8YVmH(Jy2^>uXd5HEwXUl ztn(duopW)^)(xTqTZ$1ly>(U4=2w6$ELz+7!)ty_alKrsF=pgVD&#!SgF z&I1Vc%s)9NYAx~Vot-0pL99Jc^OD?OS2(aufS`5eV)unW+JW1r)NgvLFUZ!u6T)|% z|60-i)x8xOEd@zMb+(@T6L4M#3sW=YOB^O(t#E0|*e)6dr3xaQCvM&_Uca^wDIVjG zgmtDcdL!E=7Uw`r-Vt%vQ08V6$Fra8O0Eoaf;G)vyCw+^0rIM`QY@IDk7YDzf$zF5k{@ z03yslyo5d&zu^LwZLfE?|4`Bo3P&3-Jb4nwXJ)VdD8i1K+ug*#AdX8Phlw~TD|ITep4IUSwRfn+M` zsfI`0^Y^#DtPwN^af_d~93+VON=J2;KqzAot=FBthw{paQ z{@oedrlaK+N^sg%P3W82Bfse=rr#44ewyG7#^J(a!#G}hXwJN}*DDf30y}*Co5+Na zy9Iv>OE{NOZ(eD)bdUh~YtUUosDK~OB8*DhbI%Y$w(bzTzQIE#E!XP=Z(=1H{YzL3NYAerEx8;R>J2Lltrl4PQOhEGWN;o9$#P6O>Z6a zw=h>8WZRnyr26%%F3CbeS-Cs2GK8j)R{bw8O4(G`^ZIsJp=`qSNZ`&9ij316#;zey z>ouYdtg;*{MRH&qEyMP~tl^)>FFIjtH(7P^oU)v_bNuyVhZ#%r2TY01YCj|3 zp~s$GjZXej+2_cp{yfPS7a^0$UNAP$r@ZSsGZ36^5hmQyu)8_V6+;yOcsS|xAGL>>V4A%eyYtUiYvj?1CPmh95nY2n`3{5=pIA zpe%v(ptyXTm+ zwy}~PVd##>4%hNe%zm^INs(8IzP5JHn!k0_3~Yw$PGE;!W~;k=ltR{*PhvhlXlaH) zVH$QW-O|W6iI0Scc#OXhtMJ-yZ9EngrCwd75b@g(=e_8&#?+?_1qDwTc22osz~e-u zNnIJ%og#t3j&pC-jHwx>c_F8Fu)s!$QeNC)i@wZr72An*Wyjep-~7y=r{*OweYC{~ z8unm_?J$$$DT3~_YzzI()rh8AZ!rl8-t+YsxclQAu&i&r}%p|&&s8t^Fcu_ zrj7H9iOY+w;*_Am11Ee*(s*d(Tl{fsNYzsasuBe!VXw;*?zj z>K8n&Qw$uqqf^YE>inA4lSo#Jp}MGdY_Tf{jUPix_FEOlfEQc7bmw)UOb!wgRcYMB z`=?E#H}(0NA>Avc_Hgyl{G!jBie>aIZ$<|2ljakn)M{GjL<7Zu3FPv|0MTQ;audam z`=V}pfU<0}yI9%{G%z&Mxx{#TGgyy^(^@XfYbtOyBc3Je1vIZ>?#m}JvSy-aL9gc; z`o~AyHV@v1AX!f@YuhHK$Y5sVO)*IfXB0ZRw(ew(j&2`I<|`g_i!nCj?tUM?aNPV# zj23Hh?wlY1|Fv-e7$-vvFMO*aRj+D%eETv+xHenC`JEvzb0ixnUdrn%$~mIH#T%Sp z_LPHDoG1Y`9{1NRfFabxoC^537xsG?4+zFxjLyOt!3@+F)ivl4mAN?s|(9XeLB%a=H<*_kA*`f1VZO` zxr}oVqLP8JZBBnqaR>j0WO&SN?n)<%f|SHScA)PY(Hwg>u9Z1KAti6+oe_c6Iupyz zI~t?xzi@Cm#q0Ve**2eP2WRJKpjYtg42vHIwT>y2A!IOV#j;-?wM53o({DT3C!-&| zF3>n+;ujFmX}x6O*@ym4A_TR5a567n7ZMU&d9^B2HGg~s>%MwOK=#+Xa`%I-uI_No z!N<;yz^<)UKDR|;Sqlfo(}&JI)ALlxhYQ`%Yze?@=B@io^F(JZPspN8f*k6L2RlDi z$TbTQQKGDB5CJeouuPlY_H6e<)7B5NDlaLc{gwduezp$dteWdZE9{P8<9Kqr`$jy< zjm_1-uY_f;Pc9kH{4Rvq~?lL5btX1qW#|85p{Ad>7lW1$LPg&_Cv7^=FMS=Dr zujhMoV#L&@(wR5%$Vk#%L&z$$H1cg(IXHkpbQ8gV`sTA7j>VNb2|xuHW(|zHru&pj z$|uS`(9>%aI!hSMCU-Va{^3zGoET>hxYH~_|N9zzy03-c=BwILo>*~{>2%6ehWPB0i-0SE(?*i Gi1-hLBdwPJ literal 0 HcmV?d00001 diff --git a/static/stud_affairs.xcf b/static/stud_affairs.xcf new file mode 100644 index 0000000000000000000000000000000000000000..402f419979ea6b9e36a0ed06da241b91735a14ed GIT binary patch literal 50979 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Π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

-
+
班級
座號
姓名
英文姓名
- {% for p in periods %} -
{{p}}
+ {% for i in periods %} +
{{i}}
{% endfor %}
@@ -76,11 +76,8 @@
{% for i in periods %} -
{{absData[currDate][i]['name']}} - {% if 'changed' in absData[currDate][i] %} - (換) - {% endif %} -
+
+ {{absData[currDate][i]['name']}}
{% endfor %}
@@ -93,31 +90,30 @@ {% endfor %}
- {% if data != None %} {% for i in homeroomData %}
{{homeroomCode[0]}}{{homeroomCode[1]}}
{{i}}
-
{{ homeroomData[i]['name'] }}
+
{{ homeroomData[i]['name'] }}
{{ homeroomData[i]['eng_name'] }}
{% for j in periods %} -
+
{% if 'signature' in absData[currDate][j] %} {% if i in absData[currDate][j] %} {% if absData[currDate][j][i] == 1 %} -

X

+

X

{% else %} -

𝜑

+

𝜑

{% endif %} {% else %} {% if absData[currDate][j]['name'] != 'GP' %} -

V

+

V

{% else %} {% if (homeroomData[i]['GP_Class'][absData[currDate][j]['teacher']] in - absData[currDate][j]['signature'])%} -

V

+ absData[currDate][j]['signature'] or 'STUD_AFFAIR_OFFICE' in absData[currDate][j]['signature'])%} +

V

{% else %} -

+

{% endif %} {% endif %} {% endif %} @@ -135,7 +131,28 @@ {% endfor %}
{% endfor %} + {% if showUpload == '1' %} +
+
+
+
+
+ {% for i in periods %} +
+ {% if ('signature' in absData[currDate][i] or 'confirm' in absData[currDate][i]) %} + + {% endif %} +
+ {% endfor %} +
{% endif %} + {% for c in range(periods|length + 1) %} {% if c % 4 == 0 %}
@@ -153,7 +170,8 @@ {% if absData[currDate][periods[c-1]]['name'] == 'GP' %} {% if 'signature' in absData[currDate][periods[c-1]] %} {% for i in absData[currDate][periods[c-1]]['signature'] %} -
{{periods[c-1]}}: {{absData[currDate][periods[c-1]]['teacher']}}: {{i}}: +
{{periods[c-1]}}: + {{absData[currDate][periods[c-1]]['teacher']}}: {{i}}: {{absData[currDate][periods[c-1]]['names'][i]}}
{% if loop.index == loop.length %} @@ -162,7 +180,8 @@
{% endfor %} {% else %} -
{{periods[c-1]}}: {{absData[currDate][periods[c-1]]['teacher']}}: No +
{{periods[c-1]}}: + {{absData[currDate][periods[c-1]]['teacher']}}: No Signature
@@ -171,8 +190,8 @@
{{periods[c-1]}}: {{absData[currDate][periods[c-1]]['name']}}: {{absData[currDate][periods[c-1]]['teacher']}}
-

備註:{{absData[currDate][periods[c-1]]['notes']}}
+

備註: + {{absData[currDate][periods[c-1]]['notes']}}
{% endif %} {% endif %}
@@ -181,6 +200,29 @@ {% endif %} {% endfor %}
+ {% if showUpload == '1' %}
@@ -204,7 +246,9 @@
{% endif %}
- +