Skip to content

Commit c03fa17

Browse files
committed
refactor scoreboard: improve code formatting and ensure consistent indentation
1 parent e3848bc commit c03fa17

File tree

1 file changed

+37
-15
lines changed

1 file changed

+37
-15
lines changed

scoreboard/main.py

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ def _build_rows_for_task_types(
198198
):
199199
"""Build rows for the given list of task directories and selected task types."""
200200
rows = []
201+
201202
def _load_student_info_label(dir_name: str):
202203
import json
203204

@@ -219,6 +220,7 @@ def _load_student_info_label(dir_name: str):
219220

220221
def _load_variant(dir_name: str):
221222
import json
223+
222224
info_path = tasks_dir / dir_name / "info.json"
223225
if not info_path.exists():
224226
return "?"
@@ -272,12 +274,14 @@ def _load_variant(dir_name: str):
272274

273275
label_name = _load_student_info_label(dir) or dir
274276
variant = _load_variant(dir)
275-
rows.append({
276-
"task": label_name,
277-
"variant": variant,
278-
"types": row_types,
279-
"total": total_count,
280-
})
277+
rows.append(
278+
{
279+
"task": label_name,
280+
"variant": variant,
281+
"types": row_types,
282+
"total": total_count,
283+
}
284+
)
281285
return rows
282286

283287

@@ -456,14 +460,16 @@ def _build_cell(dir_name: str, ttype: str):
456460
row_variant = "?"
457461
if target_identity:
458462
parts = target_identity.split("|")
459-
if len(parts) >= 4:
460-
first, last, middle, _group = parts[0], parts[1], parts[2], parts[3]
463+
if len(parts) >= 3:
464+
first, last, middle = parts[0], parts[1], parts[2]
461465
name_parts = [p for p in [last, first, middle] if p]
462466
name = "<br/>".join(name_parts)
463467
row_label = name or row_label
468+
464469
# Choose variant from the first available task (1..3)
465470
def _load_variant(dir_name: str):
466471
import json
472+
467473
info_path = tasks_dir / dir_name / "info.json"
468474
if not info_path.exists():
469475
return "?"
@@ -473,6 +479,7 @@ def _load_variant(dir_name: str):
473479
return str(data.get("student", {}).get("variant_number", "?"))
474480
except Exception:
475481
return "?"
482+
476483
for n in expected_numbers:
477484
ent = num_to_dir.get(n)
478485
if ent:
@@ -504,7 +511,9 @@ def _load_variant(dir_name: str):
504511
# Use dedicated template for processes table layout
505512
processes_template = env.get_template("processes.html.j2")
506513
processes_html = processes_template.render(
507-
top_task_names=proc_top_headers, group_headers=proc_group_headers, rows=processes_rows
514+
top_task_names=proc_top_headers,
515+
group_headers=proc_group_headers,
516+
rows=processes_rows,
508517
)
509518

510519
with open(output_path / "threads.html", "w") as f:
@@ -527,7 +536,9 @@ def _load_group_number(dir_name: str):
527536
return None
528537

529538
def _slugify(text: str) -> str:
530-
return "".join(ch if ch.isalnum() or ch in ("-", "_") else "_" for ch in str(text))
539+
return "".join(
540+
ch if ch.isalnum() or ch in ("-", "_") else "_" for ch in str(text)
541+
)
531542

532543
# Collect groups
533544
threads_groups = sorted(
@@ -544,7 +555,12 @@ def _slugify(text: str) -> str:
544555
out_file = output_path / f"threads_{slug}.html"
545556
filtered_dirs = [d for d in threads_task_dirs if _load_group_number(d) == g]
546557
rows_g = _build_rows_for_task_types(
547-
task_types_threads, filtered_dirs, perf_stats, cfg, eff_num_proc, deadlines_cfg
558+
task_types_threads,
559+
filtered_dirs,
560+
perf_stats,
561+
cfg,
562+
eff_num_proc,
563+
deadlines_cfg,
548564
)
549565
html_g = table_template.render(task_types=task_types_threads, rows=rows_g)
550566
with open(out_file, "w") as f:
@@ -560,6 +576,7 @@ def _slugify(text: str) -> str:
560576

561577
# Reuse earlier logic but limited to filtered_dirs
562578
import json as _json
579+
563580
def _load_student_info_group(dir_name: str):
564581
info_path = tasks_dir / dir_name / "info.json"
565582
if not info_path.exists():
@@ -623,8 +640,10 @@ def _id_key(stud: dict) -> str:
623640
ttype, status, cfg
624641
)
625642
task_points = sol_points
626-
is_cheated, plagiarism_points = check_plagiarism_and_calculate_penalty(
627-
d, ttype, sol_points, plagiarism_cfg, cfg
643+
is_cheated, plagiarism_points = (
644+
check_plagiarism_and_calculate_penalty(
645+
d, ttype, sol_points, plagiarism_cfg, cfg
646+
)
628647
)
629648
task_points += plagiarism_points
630649
perf_val = perf_stats.get(d, {}).get(ttype, "?")
@@ -669,14 +688,16 @@ def _id_key(stud: dict) -> str:
669688
row_label_g = f"group {g}"
670689
if target_identity_g:
671690
parts = target_identity_g.split("|")
672-
if len(parts) >= 4:
673-
first, last, middle, _group = parts[0], parts[1], parts[2], parts[3]
691+
if len(parts) >= 3:
692+
first, last, middle = parts[0], parts[1], parts[2]
674693
nm_parts = [p for p in [last, first, middle] if p]
675694
nm = "<br/>".join(nm_parts)
676695
row_label_g = nm or row_label_g
696+
677697
# Variant for group row
678698
def _load_variant_g(dir_name: str):
679699
import json
700+
680701
info_path = tasks_dir / dir_name / "info.json"
681702
if not info_path.exists():
682703
return "?"
@@ -686,6 +707,7 @@ def _load_variant_g(dir_name: str):
686707
return str(data.get("student", {}).get("variant_number", "?"))
687708
except Exception:
688709
return "?"
710+
689711
row_variant_g = "?"
690712
for n in [1, 2, 3]:
691713
entry2 = num_to_dir_g.get(n)

0 commit comments

Comments
 (0)