diff --git a/call.cgi b/call.cgi index cf9f93b..243d058 100755 --- a/call.cgi +++ b/call.cgi @@ -125,8 +125,8 @@ if candidate[-1][1].startswith("?"): candidate[-1][1] = "?〜"+date.strftime(datefmt) else: - if date.time() > dt.time(19,55): - candidate[-1][1] += "〜" +date.strftime(datefmt) + if date.time() > dt.time(19,55) and date.time() > dt.time(18,45): + candidate[-1][1] += "〜記録無" candidate[-1][10] = "ログオフ記録無" else: candidate[-1][1] += "〜" + date.strftime(datefmt) @@ -167,6 +167,7 @@ from openpyxl import load_workbook from openpyxl.worksheet.table import Table, TableStyleInfo from openpyxl.styles import Alignment + from openpyxl.styles.fonts import Font as xlfont import tempfile wb = load_workbook("./attendancebook_template.xlsx") @@ -183,17 +184,18 @@ else: prefix = room table_prefix = room - extract = [[host, str(student_no),logon[:5],logoff[-5:], name, reading, dep, pos] + extract = [[host, str(student_no),logon[:5],logoff[-5:], name, reading, dep, "OK", pos] for host, logon, logoff, _, _, - student_no, name, reading, dep, pos in lines if host != None and host.startswith(prefix)] + student_no, name, reading, dep, pos, status in lines if host != None and host.startswith(prefix)] - ws.column_dimensions["A"].width =9.0; ws.column_dimensions["B"].width =11.0; - ws.column_dimensions["C"].width =6.0; ws.column_dimensions["D"].width =6.0; - ws.column_dimensions["E"].width =15.0; ws.column_dimensions["F"].width =18.0; - ws.column_dimensions["G"].width =20.0; # setup width of each columns + ws.column_dimensions["A"].width =8.5; ws.column_dimensions["B"].width =11.0; + ws.column_dimensions["C"].width =7.0; ws.column_dimensions["D"].width =7.0; + ws.column_dimensions["E"].width =16.0; ws.column_dimensions["F"].width =18.0; + ws.column_dimensions["G"].width =14.0; ws.column_dimensions["H"].width =17.0; + # setup width of each columns ws.append(["学生", "","","", fr.strftime("%Y/%m/%d"), fr.strftime("%H:%M")+"〜"+ to.strftime("%H:%M")]) - ws.append(["ホスト名", "学籍番号", "開始", "終了", "名前", "よみ", "所属"]) + ws.append(["ホスト名", "学籍番号", "開始", "終了", "名前", "よみ", "所属", "ステータス"]) stafflist=[] prev = None row = None @@ -206,6 +208,13 @@ "51","52","53","54", "K01","K03","61"]; for e in extract: + login = dt.time.fromisoformat(e[2]) + logout = dt.time.fromisoformat(e[3]) + font = None + if dt.time(18,45) >= login and logout >= dt.time(19,50): + e[3] = "記録無" + e[7] = "ログオフ記録無" + font = xlfont(color = "b00000") if room == "IML": in_rooma = e[0][4:] in IMLroomA if in_rooma: @@ -214,7 +223,7 @@ else: if not "IML-B" in form: continue - if e[7] == "01" and not e[1].startswith("M"): + if e[8] == "01" and not e[1].startswith("M"): if prev == e[1]: row = str(ws.max_row) ws['A'+row]=e[0] @@ -227,9 +236,16 @@ ws['C'+row].alignment = align; ws['D'+row].alignment = align ws['E'+row].alignment = align; ws['F'+row].alignment = align ws['G'+row].alignment = align # TODO need refactor: maybe it can be integrated + if font: + ws['A'+row].font = font; ws['B'+row].font = font + ws['C'+row].font = font; ws['D'+row].font = font + ws['E'+row].font = font; ws['F'+row].font = font + ws['G'+row].font = font; ws['H'+row].font = font + # TODO need refactor: maybe it can be integrated + else: stafflist.append(e[:-1]) prev = e[1] - tab = Table(displayName="StudentTable"+table_prefix, ref="A2:G"+str(ws.max_row)) + tab = Table(displayName="StudentTable"+table_prefix, ref="A2:H"+str(ws.max_row)) style = TableStyleInfo(name="TableStyleLight1", showFirstColumn=False, showLastColumn=False, showRowStripes=True, showColumnStripes=False) tab.tableStyleInfo = style @@ -239,7 +255,7 @@ ws.append(['合計', '=COUNTA(StudentTable'+table_prefix+'[学籍番号])', '人']) ws.append([]) ws.append(["スタッフ"]) - ws.append(["ホスト名", "ユーザ名", "開始", "終了", "名前", "よみ", "所属"]) + ws.append(["ホスト名", "ユーザ名", "開始", "終了", "名前", "よみ", "所属","ステータス"]) staff_start = ws.max_row for e in stafflist: ws.append(e) diff --git a/index.html b/index.html index f518aab..f95038a 100644 --- a/index.html +++ b/index.html @@ -360,10 +360,10 @@ } if (accept) { if(!checkbox["uniq"] || prev != s[4]) { - var tr = $("