From 740c6afe4a812d5005afe1931219f69740f6292b Mon Sep 17 00:00:00 2001 From: masterpmi Date: Thu, 23 Jul 2026 10:18:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20build.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/build.py b/build.py index 5e28216..1007819 100644 --- a/build.py +++ b/build.py @@ -1,5 +1,6 @@ import os import markdown +import shutil from pathlib import Path TEMPLATE = """ @@ -22,7 +23,11 @@ TEMPLATE = """ nav a:hover {{ text-decoration: underline; }} .person {{ margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dashed #ddd; }} .person-name {{ font-weight: bold; font-size: 1.1em; color: #222; }} + .person-name a {{ color: #003366; text-decoration: none; }} + .person-name a:hover {{ text-decoration: underline; }} .person-details {{ color: #555; font-size: 0.95em; }} + .back-link {{ display: inline-block; margin-bottom: 20px; color: #003366; text-decoration: none; }} + .back-link:hover {{ text-decoration: underline; }} @@ -81,7 +86,7 @@ def main(): for md_file in news_files: build_page(md_file, Path(f'public/news/{md_file.stem}.html'), md_file.stem.replace('-', ' ').title()) - # 3. Страница сотрудников (с группировкой!) + # 3. Страница сотрудников (с группировкой и ссылками!) staff_by_lab = {} unassigned = [] @@ -99,7 +104,11 @@ def main(): if position: details.append(position) details_str = ", ".join(details) - person_html = f'
{name}
{details_str}
' + # Создаем ссылку на персональную страницу + person_html = f'''
+ +
{details_str}
+
''' if lab == 'Без подразделения' or not lab: unassigned.append(person_html) @@ -111,7 +120,6 @@ def main(): # Формируем HTML для страницы сотрудников staff_html = "

Наши сотрудники

" - # Сначала лаборатории в заданном порядке (можно отсортировать) lab_order = [ "Лаборатория математики и телекоммуникаций", "Лаборатория теоретической и вычислительной физики", @@ -124,7 +132,6 @@ def main(): for p in staff_by_lab[lab]: staff_html += p - # Остальные лаборатории (если появятся новые) for lab, people in staff_by_lab.items(): if lab not in lab_order: staff_html += f"

{lab}

" @@ -139,18 +146,27 @@ def main(): with open('public/staff.html', 'w', encoding='utf-8') as f: f.write(TEMPLATE.format(title="Сотрудники", content=staff_html)) - # Создаем индивидуальные страницы для каждого сотрудника + # 4. Создаем индивидуальные страницы для каждого сотрудника for md_file in Path('content/staff').glob('*.md'): - build_page(md_file, Path(f'public/staff/{md_file.stem}.html'), meta.get('name', md_file.stem)) - - # 4. Копирование статических файлов (картинки, CSS и т.д.) + with open(md_file, 'r', encoding='utf-8') as f: + meta, body = parse_front_matter(f.read()) + + name = meta.get('name', md_file.stem.replace('-', ' ').title()) + + # Добавляем ссылку "Назад к списку" в начало страницы + full_content = f'← Назад к списку сотрудников\n{body}' + html_content = markdown.markdown(full_content, extensions=['fenced_code', 'tables']) + + with open(Path(f'public/staff/{md_file.stem}.html'), 'w', encoding='utf-8') as f: + f.write(TEMPLATE.format(title=name, content=html_content)) + + # 5. Копирование статических файлов (картинки) if Path('static').exists(): - import shutil shutil.rmtree('public/static', ignore_errors=True) shutil.copytree('static', 'public/static') - print(" Статические файлы скопированы") + print("✅ Статические файлы скопированы") - print("✅ Сайт успешно собран! Сотрудники сгруппированы.") + print("✅ Сайт успешно собран! Сотрудники сгруппированы и кликабельны.") if __name__ == '__main__': - main() + main() \ No newline at end of file