Поиск

Релиз

Содержание

Нужна помощь?

Не нашли ответ на свой вопрос? Свяжитесь с нашей службой поддержки.

Обратиться в поддержку

Файл конфигурации module.json

Обновлено: 07 Декабрь 2025 Версия: 2.2

Файл module.json является обязательным для модулей, устанавливаемых из ZIP архива. Для локальных модулей, созданных вручную, этот файл не требуется, но может быть добавлен позже при создании версии модуля.

Пример конфигурации

{
  "name": "Example Module",
  "code": "example_module",
  "version": "1.0.0",
  "description": "Описание модуля",
  "author": "Имя автора",
  "min_system_version": "5.2.0",
  "dependencies": [],
  "category": "Business",
  "tags": ["example", "demo"],
  "menu": {
    "title": "Example Module",
    "icon": "bx bx-package",
    "permission": "example_module.view",
    "items": [
      {
        "title": "Dashboard",
        "url": "/example/dashboard/",
        "icon": "bx bx-dashboard",
        "permission": "example_module.view_dashboard"
      },
      {
        "title": "Settings",
        "url": "/example/settings/",
        "icon": "bx bx-cog",
        "permission": "example_module.view_settings"
      },
      {
        "title": "Submenu",
        "icon": "bx bx-menu",
        "items": [
          {
            "title": "Sub Item 1",
            "url": "/example/sub/item1/",
            "permission": "example_module.view_sub_item1"
          },
          {
            "title": "Sub Item 2",
            "url": "/example/sub/item2/",
            "permission": "example_module.view_sub_item2"
          }
        ]
      }
    ]
  },
  "urls": [
    {
      "path": "example/",
      "include": "example_module.urls",
      "namespace": "example"
    }
  ],
  "settings": {
    "app_name": "example_module",
    "migrations": true
  },
  "notification_templates": {
    "email": [
      {
        "name": "ExampleNotification",
        "title": "Example Notification",
        "subject": "Example: {title}",
        "body": "Hello {user_name}, this is an example notification about {title}.",
        "note": "Example email notification template",
        "section": "Example Module"
      }
    ],
    "messenger": [
      {
        "name": "ExampleNotification",
        "title": "Example Notification",
        "body": "Hello {user_name}, this is an example notification about {title}.",
        "note": "Example messenger notification template",
        "section": "Example Module"
      }
    ]
  }
}

Важно: Меню поддерживает до 3 уровней вложенности подменю.

Описание полей

Основные поля

  • name (обязательно): Название модуля
  • code (обязательно): Уникальный код модуля (используется для идентификации)
  • version (обязательно): Версия модуля (формат: X.Y.Z)
  • description: Описание модуля
  • author: Автор модуля
  • min_system_version: Минимальная версия системы (Django)
  • dependencies: Список зависимостей от других модулей
  • category: Категория модуля
  • tags: Список тегов для поиска

Конфигурация пункта меню в боковой панели:

  • title: Название пункта меню
  • icon: CSS класс иконки (например, "bx bx-package")
  • permission: Право доступа для отображения пункта меню
  • items: Список подпунктов меню
  • title: Название подпункта
  • url: URL подпункта
  • icon: CSS класс иконки
  • permission: Право доступа
  • items: Вложенные подпункты (поддержка до 3 уровней вложенности)

URLs (urls)

Список URL маршрутов для регистрации:

  • path: Путь URL (например, "example/")
  • include: Путь к модулю urls (например, "example_module.urls")
  • namespace: Пространство имен (опционально)

Настройки (settings)

  • app_name (обязательно): Имя Django приложения
  • migrations: Выполнять ли миграции при установке (по умолчанию: true)

Шаблоны уведомлений (notification_templates)

Модули могут определять свои шаблоны уведомлений для email и мессенджеров.

Структура:

{
  "notification_templates": {
    "email": [
      {
        "name": "TemplateName",
        "title": "Template Title",
        "subject": "Email subject with {variables}",
        "body": "Email body with {variables}",
        "style": "CSS styles (optional)",
        "note": "Template description (optional)",
        "section": "Section name (optional)"
      }
    ],
    "messenger": [
      {
        "name": "TemplateName",
        "title": "Template Title",
        "body": "Message body with {variables}",
        "note": "Template description (optional)",
        "section": "Section name (optional)"
      }
    ]
  }
}

Поля email шаблона:

  • name (обязательно): Системное имя шаблона (будет префиксовано кодом модуля)
  • title: Отображаемое название шаблона
  • subject (обязательно): Тема письма с переменными в формате {variable}
  • body (обязательно): Тело письма с переменными
  • style: CSS стили для email (опционально)
  • note: Описание шаблона (опционально)
  • section: Раздел для группировки шаблонов (опционально)

Поля messenger шаблона:

  • name (обязательно): Системное имя шаблона (будет префиксовано кодом модуля)
  • title: Отображаемое название шаблона
  • body (обязательно): Тело сообщения с переменными в формате {variable}
  • note: Описание шаблона (опционально)
  • section: Раздел для группировки шаблонов (опционально)

Использование шаблонов:

  • Имя шаблона в коде: {module_code}_{template_name}
  • Например, для модуля example_module и шаблона ExampleNotification полное имя будет: example_module_ExampleNotification
  • Используйте полное имя при вызове send_notify():

python from notifications.services import send_notify send_notify(obj, recipients, template_name='example_module_ExampleNotification')

Переменные в шаблонах:

  • Используйте переменные в формате {variable_name}
  • Доступны все поля объекта, переданного в send_notify()
  • Для связанных объектов используйте префикс: {related_field_name}_field_name
  • Примеры: {title}, {user_name}, {created_at}, {author_display_name}