4.3. Структура конфигурации
В директории migrations находятся файлы, сгенерированные пакетом flask-migrations. Они используются для выполнения модификации структуры базы данных, когда по задаче требуется изменить что-то в базе данных, не связанное с синхронизацией структуры модели конфигурации. Например, создать строки в таблицах, выполнить какое-то обновление данных. Этот функционал используется достаточно редко.
Для создания новой миграции, перейдите в директорию с проектом, активируйте виртуальное окружение и выполните команду
su www
cd my_project
source ~/.virtualenv/sphere/bin/activate
./manage.py db revision
После этого автоматически будет создан файл миграции. В нем есть 2 метода.
upgrade применяется при выполнении обновления
downgrade применяется при отмене обновления. Не забывайте писать не только код для обновления, но и отката его назад
Для выполнения всех новых (не примененных файлов миграции) выполните команду:
su www
cd my_project
source ~/.virtualenv/sphere/bin/activate
./manage.py db upgrade
В директории sphere_conf мы обычно размещаем код конфигурации. Одновременно с этим, эта директория является приложением, которое может содержать (и содержит) глобальные модели данных сущностей, которые используются не только в каком-то отдельном приложении, но в нескольких приложениях конфигурации. Здесь же, в файле views.py размещено представление для главной страницы, доступной по адресу «/»
Директория /sphere_conf/bps/choices содержит значения опций для формирования возможный значений полей типа select. Варианты описаны в файле /sphere_conf/bps/data_sources.xml Если там описано data_type=»xml», то это означает, что система будет использовать данные из файлов XML в этой директории.
В директории /sphere_conf/bps/projects размещены bps-приложения (процессные приложения, основанные на sphere/bps). Рассмотрим для примера тестовое приложение для работы с корреспонденцией.
В директории /sphere_conf/bps/projects/correspondence/document размещен основной файл __init__.py, то есть директория является пакетом python. В ней находится класс DocumentMixin. Именно через него в конфигурацию приложения реализуется вся логика вычислений и расчетов, которые не описываются файлами конфигурации и подменяется логика модели документа уровня ядра. Все эти методы вы можете увидеть в файле sphere/bps/mixin_models.py и классе DocumentMixin и sphere/bps/plugins/files/document_mixin.py в классе DocumentFilesMixin. Полное описание выходит за рамки данного документа. Вы можете ознакомиться с этим самостоятельно. Все методы этих классов описаны в исходном коде встроенной документацией
Директория /sphere_conf/bps/projects/correspondence/static опциональна и предназначена для размещения статических ресурсов приложения (скрипты, стили, файлы изображений и тому подобное). Для подключения ресурсов следует описать шаблоны карточки документа и списка документов, переопределив там блоки js или css соответственно (подробнее чуть ниже)
В директории /sphere_conf/bps/projects/correspondence/templates размещены html-шаблоны приложения как для переопределения карточки документа или списка документов, так и для «кастомных» представлений произвольной логики. Все шаблоны необходимо размещать внутри вложенной директории, которая имеет название приложения (в данном случае, «correspondence»)
В директории /sphere_conf/bps/projects/correspondence/workflow размещаются конфигурационные файлы, описывающие логику уровня этапа. Для примера, рассмотрим файл /sphere_conf/bps/projects/correspondence/workflow/draft.xml
Доступ к параметрам документа на чтение и редактирование (см «field_access»)
Проверки параметров на этапе и вывод оповещений
Настройки переходов с этого этапа на следующий
Файл /sphere_conf/bps/projects/correspondence/blueprint.py является точкой встраивания ресурсов этого приложения в сервер. В нем размещаются url на «кастомные» представления в составе этого приложения. В переменной «blueprint» размещаются названия директорий с шаблонами приложения и директорией статического контента. Значение вызова «blueprint.add_url_rule», как и файл views.py рассмотрим несколько позже в рамках рассмотрения создания кастомного приложения. Файл /sphere_conf/bps/projects/correspondence/config.xml содержит описание конфигурации bps-приложения. Более подробно о его опциях вы можете прочесть в этом разделе
Файл /sphere_conf/templates/sphere_conf/panel_content.html описывает контент панели слева. Вы можете переопределить любые части панели. Контент панели доступен на всех страницах системы, кроме раздела администрирования.
Файл /sphere_conf/data_source.py поставляет параметры для элементов системы уровня ядра. В нем вы можете переопределить любые параметры базовой реализации (см файл sphere.lib.data_source.DataSourceAbstract)
Файл /sphere_conf/email.py поставляет данные для шаблонов email сообщений, отправляемых оператором вручную и разрешает переопределять параметры таких сообщений непосредственно после отправки, перехватывая вызовы в ядро.
Файл /sphere_conf/sms.py поставляет данные для шаблонов sms сообщений, аналогично файлу email.py
Файл /sphere_conf/user.py содержит примесь модели данных оператора системы, добавляя дополнительные данные и параметры для него.
Файл /sphere_conf/utils.py вместе с views.py содержит «кастомную» логику (в данном случае метод «get_index_content», для формирования контента на главной страницы).
Файлы config.py и config_local.py описаны в этом разделе