Перейти к содержанию

Генерация календаря (generatecalendar, generate_calendar)

Назначение

Команды generatecalendar и generate_calendar предназначены для автоматического создания календарных уровней и элементов (день, неделя, месяц и т.д.) в базе данных Planiqum за указанный период.

  • generatecalendar — обёртка, валидирует даты и вызывает generate_calendar.
  • generate_calendar — основная команда, вызывает функцию build_calendar.

Сигнатуры команд

python manage.py generatecalendar <start-date> <end-date> [add_tech_week]
python manage.py generate_calendar <start-date> <end-date> [add_tech_week]
  • <start-date> — начальная дата (YYYY-MM-DD)
  • <end-date> — конечная дата (YYYY-MM-DD)
  • [add_tech_week] — опциональный аргумент ("true"/"false"), добавляет технические недели

Архитектура

  • generatecalendar (management/commands/generatecalendar.py):
    • Проверяет формат дат, опционально принимает add_tech_week, вызывает generate_calendar через call_command.
  • generate_calendar (management/commands/generate_calendar.py):
    • Парсит даты, опционально принимает add_tech_week.
    • Вызывает build_calendar из core/horizons/libs/build_calendar.py.
  • build_calendar:
    • Генерирует DataFrame с датами, неделями, месяцами, кварталами и т.д.
    • При add_tech_week=True добавляет технические недели.
    • Импортирует уровни и элементы в иерархию.

Пример использования

python manage.py generatecalendar 2024-01-01 2024-12-31
python manage.py generatecalendar 2024-01-01 2024-12-31 true
python manage.py generate_calendar 2024-01-01 2024-12-31 true

Важно

  • Если уровни или элементы уже существуют, повторно не создаются.
  • Для нестандартных структур используйте аргумент add_tech_week.

Ссылки на код

  • generatecalendar.py - команда для генерации календаря
  • generate_calendar.py - команда для генерации календаря (альтернативная)
  • build_calendar.py - библиотека для построения календаря

См. также