Директория managers

Пренадназначение этой директории прост. В данной директории создаются функции которые будут управлять какой-то функциональностью.

Например: В директории core/managers есть файл exceptions.py в данном файле написана логика отображений исключений. Данный файл будет управлять исключениями от WebCms.

Так же есть файл theme.py. Данный файл выполняет функциональность по отображению и правильным рендером html тем. Подробнее про всех файлов будет ниже.

Правила для работы с директорией managers

У каждой директории ядра есть свои правила. Директория core/managers тоже не исключение. Тут стоит подчеркнуть что за несоблюдение правил, мы можем отказаться от вашего pull запроса

Правила для работы с директорией managers:

  • При создании файла в директории стоит назвать его так, чтобы было проще понять, что он конкретно делает.

  • Не стоит добавлять к названии файла лишние суффиксы по типу (название файла)manager.py или же usermanager.py (так делать нельзя)

  • При названии файла не стоит использовать заглавные буквы.Только прописные!

  • Важно! После создании файла. Называйте класс следующим примером: Файл users.py, класс class UsersManager:.

  • Так же важно! Не забывайте ставить DocString Учтите! Кроме вас ещё будут те кто будут работать с вашим кодом. И проще будет если вы будете комментировать каждый метод и класс который пишете!

Файлы директории managers

Ниже приведены все файлы которые есть в core/managers Так же они будут часто обновляться.

Controllers


Название файла: controller.py

Управление mvc. MVC это Model Views Controller - схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер. Это дополнительный менеджер который будет отображать, добавлять дополнительные переменные к загружаемой теме. Рендер происходит при помощи Jinja2

Классы: ControllersManager()

Методы: ControllersManager.render_action(template_name, *context)

Данный метод рендерит html файл с директории content/theme/{активная тема}/{template_name} {template_name} - переданный агрумент template_name

Аргументы:

  • template_name: string - Название html файла который нужно отобразить, например index.html можно указать директорию тоже includes/index.html

  • **context - Передача переменных в загружаемый шаблон

Logging


Название файла: logging.py

Логирование в консоль. Данный файл представляет собой ничто не иное как красивое логирование в консоль. Это функция была сделана для удобного вывода состояний в консоль. Так же это сделана для разработчиков плагинов тоже.

Классы:

  • LoggingManager()
  • Log(output, type)

Вызов класса Log

Вызов: Log("Test", 3) Ответ: [success {timestamp}]: Test

Аргументы:

  • output: string - Строка которую нужно отобразить в консоли
  • type: int - Индекс типа ответа. Есть всего 4 индексов типа

Индексы типа:

  • 0 - Info, Этот индекс типа нужен если нужно просто вывести сообщение в консоль. Что то по типу debug в logging.

  • 1 - Warning, Этот индекс типа нужен если нужно предупредить. Но это не будет критической ошибкой что помешает работе кода.

  • 2 - Error, Критическая ошибка. Этот индекс типа нужен если где то произошло критическая ошибка и код где это произошло не будет работать.ч

  • 3 - Success, Этот индекс типа нужен если код выполнился успешно. И без никаких ошибок. Часто этот индекс используется в WEBCMS CLI.