Страница для индексации
Перейти на сайт
Задача:
Сервер получил URL: /docopen?SOVA/SITE&FE494CF75F985E8B0E296066F2F339D6&read
Это означает, что приказано открыть на экране документ из группы таблиц (из коллекции) SOVA_SITE с указанным ID в режиме чтения.

Что делает Сова :
1. Проверяет права доступа.
2. Вытягивает из БД информацию и раскладывает ее по полям в словарь в виде {" FIELD_NAME ": " field value "}.
3. Определяет форму. Форма может храниться вместе с данными, а может и нет (как спроектируете). Пускай это будут форма ' best '.
4. Ищет в глобальном справочнике объект формы ' best '. Если его там нет, создаем и сохраняем там же:
obf = well('forms', form) # в нашем случае переменная form равна 'best'
if not obf:
obf = Form(form) # создаем объект класса Form с подключением модуля best.py
# (наследование без создания класса )
toWell(obf, 'forms', form) # сохраняем его в словаре форм
5. Выполняет для формы 'best' метод класса "Form" qOpen(d, mode, ground) . Он вызывает функцию queryOpen из модуля описания формы 'best.py' (если она там есть).
6. Формирует словарь для отправки клиенту. В словаре должны быть:
rsMode - режим доступа (edit/read)
dbAlias - имя группы таблиц
data - словарь данных, разложенных по полям, сформированный в п.2
urlFormv - URL формы. Он хранится в классе Form , получить его можно так:

urlForm = obf.getUrl(dbAlias, mode, userName) # obf - объект класса Form
Метод getUrl вызывает функцию page из модуля best.py , которая возвращает словарь с разметкой формы. Далее getUrl делает json.dumps , сохраняет результат в словаре self.urlForms и возвращает ключ к JSON -строке. Ключ (он же URL ) включает CRC32 -сумму, - это позволяет кэшировать формы на клиенте.

7. Далее Сова берет базовую форму React (ту, в которой <div id="root" ></div> ), добавляет в нее ссылки на дополнительные для формы 'best' javascript и css , а также добавляет в нее javascript , в котором глобальной переменной window.jsDoc присваивается объект (бывший словарь), полученный в п.6. Все.