Skip to content

Conversation

@nkiryanov
Copy link
Contributor

Здесь решаем:

Общая идея:

  1. Думаю будет больше смысла если за BASE_DIR будем воспринимать src
  2. Путь для статики и медиа делам абсолютным: чтоб не зависел от места откуда запускаем тесты или приложение (сейчас зависит и от этого ловим баги/ворнинги)

@nkiryanov nkiryanov requested a review from kazqvaizer June 2, 2025 16:24
@nkiryanov nkiryanov force-pushed the fix-relative-static-dir branch from cd7dc55 to 2696533 Compare June 2, 2025 16:46
Copy link
Contributor

@kazqvaizer kazqvaizer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А какую проблему ты тут решаешь?

@nkiryanov nkiryanov force-pushed the fix-relative-static-dir branch from 2696533 to e3b4ca7 Compare June 3, 2025 21:25
@nkiryanov nkiryanov force-pushed the fix-relative-static-dir branch from e3b4ca7 to cf91ae1 Compare June 3, 2025 21:25
@nkiryanov
Copy link
Contributor Author

А какую проблему ты тут решаешь?

У статики и медиа становится абсолютный путь, то есть не зависит откуда запускаем приложение или тесты.

Релатив путь даже нам создавал проблемы: например в тестах ворнинг что папки со статикой нет. Чтоб починить мы даже стали создавать папку для статики в Makefile, хотя статика собирается в bootstrap и чинили следствие, а не оригинальную проблему.

@nkiryanov nkiryanov merged commit 9e7777a into master Jun 4, 2025
3 checks passed
@nkiryanov nkiryanov deleted the fix-relative-static-dir branch June 4, 2025 09:35

BASE_DIR = Path(__file__).resolve().parent.parent
# Repository root directory
BASE_DIR = Path(__file__).resolve().parent.parent.parent.parent
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nkiryanov а тут не проверял случайно? может Path(__file__).resolve().parent.parent?

file = /project_root/src/app/conf/boilerplate.py
src/app/conf - надо сделать 2 parent, чтобы попасть в root.

Я закину ПР если что. Просто хотел убедиться, что все верно понимаю.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nvo87 BASE_DIR это корень репозитория, не SRC. Для SRC сделали переменную SRC_DIR (она ниже).

Для твоего примера: /project_root/src/app/conf/boilerplate.py:

  1. Path(__file__).resolve() — имя файла
  2. Path(__file__).resolve().parentproject_root/src/app/conf/
  3. Path(__file__).resolve().parent.parentproject_root/src/app/
  4. Path(__file__).resolve().parent.parent.parentproject_root/src/
  5. Path(__file__).resolve().parent.parent.parent.parentproject_root/— как раз что нужно

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nkiryanov Блин, да. Сорри, что отвлек.

Тупанул с двумя parent :(( 4 раза parent - это будет project_root.

История в том, что у меня не работает startapp, т.к. она создает папку на два уровня выше, чем src. Я бегло пофиксил, и сам себя убедил, что надо только 2 .parent.

Но потом перестают работать другие manage.py команды, т.к. BASE_DIR был действительно верный.

Сейчас начал разбираться:
в первый раз инициализирует верно
CleanShot 2025-07-22 at 13 47 09@2x

а потом, когда по всем settings прошло, возвращается и отрезает 1 уровень у BASE_DIR.
CleanShot 2025-07-22 at 13 53 09@2x

Но это 99% у меня локальный косяк, а не в бойлерплейте (я решил старый проект обновить на наш бойлерплейт)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вероятно, аха.
С настройками бывают неочевидные баги: помнится в одном из проектов получилось что импорт настроек запускали дважды. Получалось что в разных местах в коде одна переменная имела разные значения — искал в чём дело несколько часов 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants