2021-12-26 05:08:50 -08:00
from functions import *
2021-12-27 06:34:19 -08:00
2021-12-26 05:08:50 -08:00
homeroom = Blueprint ( ' homeroom ' , __name__ )
2021-12-27 06:34:19 -08:00
2021-12-26 05:08:50 -08:00
@homeroom.route ( ' /manage/abs ' , methods = [ ' GET ' ] )
def showAllAbs ( ) :
2021-12-27 06:34:19 -08:00
if check_login_status ( ) :
2021-12-26 05:08:50 -08:00
return redirect ( ' /logout ' )
refresh_token ( )
currRoom = session [ ' homeroom ' ] . split ( ' ^ ' )
db = refresh_db ( )
cursor = db . cursor ( )
2021-12-27 06:34:19 -08:00
cursor . execute ( " SELECT num,name,ename FROM students WHERE grade= %s AND class_= %s ORDER BY num ASC " ,
( currRoom [ 0 ] , currRoom [ 1 ] ) )
2021-12-26 05:08:50 -08:00
studentsSQL = cursor . fetchall ( )
students = { }
for st in studentsSQL :
students [ st [ 0 ] ] = {
' name ' : st [ 1 ] ,
' ename ' : st [ 2 ] ,
}
cursor = db . cursor ( )
2021-12-27 06:34:19 -08:00
cursor . execute (
" SELECT date, period, num, status, note FROM absent WHERE grade= %s AND class_= %s ORDER BY date DESC, FIND_IN_SET(period, ' m,1,2,3,4,n,5,6,7,8,9 ' ) DESC, num ASC " ,
( currRoom [ 0 ] , currRoom [ 1 ] ) )
2021-12-26 05:08:50 -08:00
absentDataSQL = cursor . fetchall ( )
2021-12-27 06:34:19 -08:00
return render_template ( " list.html " , title = " Absent List | 缺勤紀錄 " , mode = ' ABS ' , students = students , data = absentDataSQL ,
currRoom = currRoom )
2021-12-26 05:08:50 -08:00
@homeroom.route ( ' /manage/ds ' , methods = [ ' GET ' ] )
def showAllDS ( ) :
if ( check_login_status ( ) ) :
return redirect ( ' /logout ' )
refresh_token ( )
currRoom = session [ ' homeroom ' ] . split ( ' ^ ' )
db = refresh_db ( )
cursor = db . cursor ( )
2021-12-27 06:34:19 -08:00
cursor . execute ( " SELECT num,name,ename FROM students WHERE grade= %s AND class_= %s ORDER BY num ASC " ,
( currRoom [ 0 ] , currRoom [ 1 ] ) )
2021-12-26 05:08:50 -08:00
studentsSQL = cursor . fetchall ( )
students = { }
for st in studentsSQL :
students [ st [ 0 ] ] = {
' name ' : st [ 1 ] ,
' ename ' : st [ 2 ] ,
}
cursor = db . cursor ( )
2021-12-27 06:34:19 -08:00
cursor . execute (
" SELECT date, period, num, note FROM ds WHERE grade= %s AND class_= %s ORDER BY date DESC, FIND_IN_SET(period, ' m,1,2,3,4,n,5,6,7,8,9 ' ) DESC, num ASC " ,
( currRoom [ 0 ] , currRoom [ 1 ] ) )
2021-12-26 05:08:50 -08:00
dsDataSQL = cursor . fetchall ( )
2021-12-27 06:34:19 -08:00
return render_template ( " list.html " , title = " DS List | 定心紀錄 " , mode = ' DS ' , students = students , data = dsDataSQL ,
currRoom = currRoom )
2021-12-26 05:08:50 -08:00
@homeroom.route ( ' /manage/homeroom_abs ' , methods = [ ' POST ' ] )
def homeroom_abs_publish ( ) :
if ( check_login_status ( ) ) :
return redirect ( ' /logout ' )
refresh_token ( )
db = refresh_db ( )
data = request . form . to_dict ( )
date = data . pop ( ' date ' )
period = data . pop ( ' period ' )
signature = data . pop ( ' signatureData ' )
notes = data . pop ( ' notes ' )
homeroom = data . pop ( ' homeroom ' ) . split ( ' ^ ' )
absentData = { }
for x in data :
xt = x . split ( ' ^ ' )
2021-12-27 06:34:19 -08:00
if xt [ 0 ] == ' note ' :
2021-12-26 05:08:50 -08:00
if xt [ 2 ] not in absentData :
absentData [ xt [ 2 ] ] = { }
absentData [ xt [ 2 ] ] [ ' note ' ] = data [ x ]
else :
if xt [ 1 ] not in absentData :
absentData [ xt [ 1 ] ] = { }
absentData [ xt [ 1 ] ] [ ' status ' ] = ' L ' if x [ 0 ] == ' 2 ' else ' K '
cursor = db . cursor ( )
cursor . execute ( """
INSERT INTO submission
( grade , class_ , date , period , signature , notes )
VALUES ( % s , % s , % s , % s , % s , % s )
""" , (homeroom[0], homeroom[1], date, period, signature, notes))
for x in absentData :
cursor . execute ( """
INSERT INTO absent
( grade , class_ , date , period , num , status , note )
VALUES ( % s , % s , % s , % s , % s , % s , % s )
2021-12-27 06:34:19 -08:00
""" , (homeroom[0], homeroom[1], date, period, x, absentData[x][ ' status ' ],
absentData [ x ] [ ' note ' ] if ' note ' in absentData [ x ] else ' ' ) )
2021-12-26 05:08:50 -08:00
db . commit ( )
return redirect ( ' /manage ' )
2021-12-27 06:34:19 -08:00
2021-12-26 05:08:50 -08:00
@homeroom.route ( ' /manage/homeroom_ds ' , methods = [ ' POST ' ] )
def homeroom_ds_publish ( ) :
2021-12-27 06:34:19 -08:00
if check_login_status ( ) :
2021-12-26 05:08:50 -08:00
return redirect ( ' /logout ' )
refresh_token ( )
db = refresh_db ( )
cursor = db . cursor ( )
data = request . form . to_dict ( )
print ( data )
date = data . pop ( ' date ' )
period = data . pop ( ' period ' )
notes = ' ; ' + data . pop ( ' notes ' )
homeroom = data . pop ( ' homeroom ' ) . split ( ' ^ ' )
dsidv = { }
ds1 = data . pop ( ' ds^1 ' )
ds2 = data . pop ( ' ds^2 ' )
ds3 = data . pop ( ' ds^3 ' )
ds4 = data . pop ( ' ds^4 ' )
ds5 = data . pop ( ' ds^5 ' )
ds6 = data . pop ( ' ds^6 ' )
ds7 = data . pop ( ' ds^7 ' )
cursor . execute ( """
UPDATE submission
SET ds1 = % s , ds2 = % s , ds3 = % s , ds4 = % s , ds5 = % s , ds6 = % s , ds7 = % s , notes = concat ( ifnull ( notes , " " ) , % s ) , dscfrm = ' yes '
WHERE grade = % s AND class_ = % s AND date = % s AND period = % s
""" , (ds1, ds2, ds3, ds4, ds5, ds6, ds7, notes, homeroom[0], homeroom[1], date, period))
for x in data :
xt = x . split ( ' ^ ' )
2021-12-27 06:34:19 -08:00
if xt [ 0 ] == ' dsidv ' :
2021-12-26 05:08:50 -08:00
dsidv [ xt [ 1 ] ] = data [ x ]
for x in dsidv :
cursor . execute ( """
INSERT INTO ds
( grade , class_ , date , period , num , note )
VALUES ( % s , % s , % s , % s , % s , % s )
""" , (homeroom[0], homeroom[1], date, period, x, dsidv[x]))
db . commit ( )
return redirect ( ' /manage ' )
2021-12-27 06:34:19 -08:00
2021-12-26 05:08:50 -08:00
@homeroom.route ( ' /manage/homeroom_confirm ' , methods = [ ' POST ' ] )
def homeroom_confirm ( ) :
2021-12-27 06:34:19 -08:00
if check_login_status ( ) :
2021-12-26 05:08:50 -08:00
return redirect ( ' /logout ' )
refresh_token ( )
data = request . form . to_dict ( )
homeroom = data . pop ( ' homeroom ' ) . split ( ' ^ ' )
date = data . pop ( ' date ' )
signature = data . pop ( ' signatureData ' )
notes = data . pop ( ' notes ' )
db = refresh_db ( )
cursor = db . cursor ( )
cursor . execute ( """
INSERT INTO submission
( grade , class_ , date , period , signature , notes )
VALUES ( % s , % s , % s , ' c ' , % s , % s )
""" , (homeroom[0], homeroom[1], date, signature, notes))
db . commit ( )
return redirect ( ' /manage ' )