Скрытое в таблице не парсим
Правило: если строка или столбец в таблице скрыт, его данные не попадают в расписание — раньше скрытые столбцы пропускались только при поиске групп. - xlsx: у листа появился набор скрытых строк (Worksheet.hidden_rows); - расписание, недели: скрытые строки пропускаются; - аудитории и справочник ФИО: скрытые столбцы не читаются вовсе (убрана двухпроходная логика «сначала видимые, потом скрытые»); - тесты: билдер умеет скрытые строки, добавлены проверки «скрытое не парсится». Проверено на таблице: группы и всё расписание совпали байт в байт (скрытых строк нет), из аудиторий ушли только те, что лежат в скрытых столбцах (402, 405, 415), справочник ФИО стал короче на 2 скрытые записи, у 223 осталось описание из видимого столбца (20 мест, интерактивная панель). Тесты: 171.
This commit is contained in:
@@ -302,7 +302,7 @@ def test_lowercase_except_abbreviations():
|
||||
|
||||
|
||||
def test_room_visible_column_wins_over_hidden_duplicate():
|
||||
"""У 223 в таблице два столбца: видимый (с панелью) и скрытый (без). Берём видимый."""
|
||||
"""Скрытый столбец-дубль (у 223) не парсится вовсе — берём видимый."""
|
||||
from xlsx_builder import SheetSpec
|
||||
|
||||
spec = SheetSpec(
|
||||
@@ -322,8 +322,8 @@ def test_room_visible_column_wins_over_hidden_duplicate():
|
||||
assert room["type"] == "комп.класс linux/windows"
|
||||
|
||||
|
||||
def test_room_only_in_hidden_column_still_parsed():
|
||||
"""Аудитория, у которой есть только скрытый столбец, не пропадает."""
|
||||
def test_room_only_in_hidden_column_not_parsed():
|
||||
"""Скрытое не парсим: аудитория со скрытым столбцом описания не получает."""
|
||||
from xlsx_builder import SheetSpec
|
||||
|
||||
spec = SheetSpec(
|
||||
@@ -334,5 +334,24 @@ def test_room_only_in_hidden_column_still_parsed():
|
||||
hidden_cols=[(6, 7)],
|
||||
)
|
||||
info = parsing.parse_rooms_info(make_sheets({parsing.ROOMS_SHEET: spec}))
|
||||
assert info["ауд. 402"]["available_days"] == ["четверг", "пятница"]
|
||||
assert info["ауд. 410"]["capacity"] == 30
|
||||
assert info == {}
|
||||
|
||||
|
||||
def test_hidden_rows_not_parsed(monkeypatch):
|
||||
"""Скрытые строки листа в расписание не попадают."""
|
||||
from fixtures import fixture_sheets
|
||||
from xlsx_builder import SheetSpec, build_workbook
|
||||
|
||||
sheets = fixture_sheets()
|
||||
main = sheets[parsing.MAIN_SHEET]
|
||||
# строки: 0 заголовок, 1 с/по, 2..5 понедельник, 6..7 вторник — скроем строку с первым вторником
|
||||
spec = SheetSpec(
|
||||
rows=main.rows,
|
||||
merges=main.merges,
|
||||
hidden_cols=main.hidden_cols,
|
||||
hidden_rows=[6],
|
||||
)
|
||||
data = parsing.parse_schedule(make_sheets({parsing.MAIN_SHEET: spec}))
|
||||
tuesday = data["ИВТ-11БО"]["days"].get("вторник", {})
|
||||
assert not tuesday, "строка вторника скрыта — занятий быть не должно"
|
||||
assert data["ИВТ-11БО"]["days"]["понедельник"][1]["ч"] # понедельник на месте
|
||||
|
||||
Reference in New Issue
Block a user