Модули¶
Модули ядра¶
Модуль admin_mgt¶
Описание¶
Модуль административного интерфейса портала. Предоставляет доступ к настройкам для управления порталом.
- Дополнительно предоставляет функциональности:
Первичная конфигурирование портла – инсталлятор;
Авторизация пользователей портала;
Управление режимами портала;
Управление навигацией портала;
Управление настройками портала.
Разделы¶
Настройки портала
Предоставляет возможность использовать функциональность модулей относящихся к ядру приложения.
Конфигуратор
Предоставляет возможность изменять конфигурационные файлы портала
Управление модулями
Предоставляет интерфейс по работе с модулями портала.
API admin_mgt¶
Модуль предоставляет внешний программный интерфейс для получения определенной информации по работе портала.
Доступ к API можно получить с помощью функции get_mod_api() API (app_api) приложения, передав в
качестве аргумента имя модуля “admin_mgt”:
admin_mod_api = app_api.get_mod_api('admin_mgt')
-
class
app.admin_mgt.mod_api.ModApi[исходный код]¶ Базовые классы:
app.admin_mgt.admin_conf.AdminConf-
static
get_app_root_tpl()[исходный код]¶ Тестовый метод для заглушки корневого шаблона приложения
- Результат
имя файла тестового наблона
- Тип результата
str
-
static
get_base_model()[исходный код]¶ Метод возвращает базовый класс для моделей
- Результат
класс NodeObject
- Тип результата
class
-
static
get_config_path()[исходный код]¶ Метод возвращает абсолютный путь к директории с файлами конфигурации
- Результат
абсолютный путь
- Тип результата
str
-
static
get_embedded_user()[исходный код]¶ Метод возвращает класс встроенного пользователя
- Результат
класс EmbeddedUser
- Тип результата
class
Метод возвращает список ссылок дополнительной функциональности для пользователя _user. Если пользователю _user назначена роль extended_admin, то добавляется ссылка для скачивания лога авторизации. Если пользователь _user является администратором портала, то добавляется ссылка для перехода в административный интерфейс.
- Параметры
_user (object) – экземпляр класса модели пользователя
- Результат
список ссылок
- Тип результата
list
-
static
get_link_object()[исходный код]¶ Метод возвращает класс для организации связей в базе данных
- Результат
класс Link
- Тип результата
class
-
get_portal_mode_util()[исходный код]¶ Метод возвращает утиллиту для работы с режимами портала.
- Результат
утиллита для работы с режимами портала
- Тип результата
PortalModeUtil
-
get_portal_version()[исходный код]¶ Функция возвращает идентификатор версии портала.
- Результат
version
- Тип результата
str
-
static
get_root_tpl()[исходный код]¶ Метод возвращает базовый имя базового шаблона для административного интерфейса
- Результат
имя файла шаблона
- Тип результата
str
-
static
set_portal_theme(theme_id)[исходный код]¶ Метод устанавливает актуальную тему на портале по ее идентификатору theme_id
- Параметры
theme_id (str) – идентификатор темы для плагина Flask_Themes 2
- Результат
True если тема установлена для портала, False в противном случае
- Тип результата
bool
-
static
Модуль files_mgt¶
Модуль предоставляет функционал файлового менеджера для загружаемых файлов портала.
API files_mgt¶
Доступ к API можно получить с помощью функции get_mod_api() API (app_api) приложения, передав в
качестве аргумента имя модуля “files_mgt”:
admin_mod_api = app_api.get_mod_api('files_mgt')
-
class
app.files_mgt.mod_api.ModApi[исходный код]¶ Базовые классы:
object-
get_util()[исходный код]¶ Функция возвращает ……
- Результат
- Тип результата
-
Модуль kv_editor¶
Модуль предоставляет форму редактирования данных представленных в виде ключ-значение.
Модуль используется для редактирования файлов … через интерфейс …
API kv_editor¶
Доступ к API можно получить с помощью функции get_mod_api() API (app_api) приложения, передав в
качестве аргумента имя модуля “kv_editor”:
admin_mod_api = app_api.get_mod_api('kv_editor')
-
class
app.kv_editor.mod_api.ModApi[исходный код]¶ Базовые классы:
app.kv_editor.mod_conf.ModConf-
can_remove_file(mod_name, _file_pth)[исходный код]¶ Функция проверяет наличие файла
- Параметры
mod_name (str) –
_file_pth (str) –
- Результат
флаг
- Тип результата
bool
-
dict2ini(file_path, data: dict)[исходный код]¶ Функция …..
- Параметры
file_path (str) –
data (dict) –
- Результат
- Тип результата
-
static
get_app_path()[исходный код]¶ Функция вычисляет путь директории приложения - это отсчетная точка для модулей
- Результат
app_root_dir
- Тип результата
str
-
ini2dict(file_path, curent_file=False)[исходный код]¶ Функция …..
- Параметры
file_path (str) – полный путь до файла
current_file (bool) – флаг
- Результат
- Тип результата
-
remove_file(mod_name, _file_pth)[исходный код]¶ Функция удаляет указанный в параметре файл
- Параметры
mod_name (str) – имя удаляемого файла
_file_pth (str) – полный путь к удаляемому файлу
- Результат
флаг
- Тип результата
bool
-
render_page(base, _vars=None)[исходный код]¶ Функция формирует страницу портала по шаблону
- Параметры
base –
_vars –
- Результат
page
- Тип результата
html
-
Модуль query_mgt¶
Модуль предоставляет функциональность для работы с триплстором через SPARQL запросы.
Модуль работает с триплстором через драйвер, который настраивается в административном интерфейсе.
Для вызова модуля query_mgt из других модулей необходимо использовать следуюший код:
а. Для выполнения запроса к триплстору:
from app.app_api import tsc_query
tsc_query(query_code, params)
где query_code - Python.String, код sparqt запроса; params - Python.Dict, переменные определенные в sparqt запросе
б. Для создания редактора sparqt-файлов стороннего модуля:
from app import app_api
query_mod_api = app_api.get_mod_api('query_mgt')
query_mod_api.create_sparqt_manager('/sparqt', mod)
где mod - объект Blueprint для стороннего модуля, тогда по url <mod.url_prefix>/sparqt создастся
интерфейс редактора sparqt-файлов
Формат запроса, передаваемый модулю query_mgt (функция tsc_query) должен быть в виде:
tsc_query(_q, params = {})
где _q - код запроса в формате Python.String : <module>.<file>.<template>,
params - переменные для подстановки в запрос в формате Python.Dict : {<VARNAME> : <VALUE>}
или в виде:
tsc_query(_q)
где _q - текстовый SPARQL запрос в формате Python.String
После выполнения запроса в триплсторе модуль делает пост-обработку. Модуль query_mgt возвращает объект типа Python.List, содержащий список объектов типа Python.Dict. В каждом объекте типа Python.Dict содержаться пары ключ-значение запрашиваемых переменных.
В случае если запрос к базе был некорректный (или во время запроса произошла ошибка), то
возвращается объект типа Python.String c текстом ошибки. В лог app\data\logs\Query.log добавляется запись типа
error c причиной невыполнения запроса.
Если запрос к базе вернул пустой запрос, то модуль возвращает пустой объект типа Python.List = []
API query_mgt¶
Через API модуля доступно редактирования sparqt шаблонов:
admin_mod_api = app_api.get_mod_api('query_mgt')
-
class
app.query_mgt.mod_api.ModApi[исходный код]¶ Базовые классы:
app.query_mgt.query_conf.QueryConf-
static
create_sparqt_manager(_ModApi__url, _ModApi__mod)[исходный код]¶ Создает новые методы для интерфейса редактирования sparqt шаблонов. Для модуля blueprint : __mod под адресом : <base_mod_uri>/__URL
- Параметры
__url (str) – наш url по которому будет SPARQTManager
__mod (Blueprint) – экземпляр класса blueprint в файле views текущего модуля
- Результат
метод реализующий редактор sparqt-файлов для модулей через интерфейс
- Тип результата
def
-
static
jqgrid(cfg={}, query='', vars={}, data=None, title='', is_main_tz=False, xicon=True, xicon_close=True)[исходный код]¶ Метод возвращает html для создания jqgrid-таблицы
- Параметры
cfg (dict) – настройки для таблицы
query (str) – sparqt-запрос
vars (dict) – параметры для sparqt-запроса
data (list/pd.DataFrame) – уже готовые данные для таблицы
title (str) – заголовок таблицы
is_main_tz (bool) – является ли ТЗ в таблице основым ТЗ (только для TZ) - True/False (по умолчанию нет)
xicon (bool) – тип таблицы с функцией скрытия или нет - True/False (по умолчанию с функцией)
xicon_close (bool) – тип блока скрытый/раскрытый - True/False (по умолчанию скрытый)
- Результат
html
Примеры
return create_sparqt_manager(__URL, __mod)
- cfg = {
«datatype»: «local», «pager»: „“, «rowNum»: 10, «rowList»: [10, 20, 30], «sortname»: «id», «sortorder»: «desc», «viewrecords»: True, «gridview»: True, «autoencode»: False, «autowidth»: True, «colModel»: [
- {«label»: «Документ», «index»: «tz_lbl», «name»: «tz_lbl», «width»: 20, «align»: «center», «search»: True, «stype»: „text“,
„formatter“:“_2HtmlLink_frmt“, «searchoptions»: {«sopt»: [„cn“, „nc“, „eq“, „ne“, „bw“, „bn“, „ew“, „en“]} },
- {«label»: «Наименование документа», «index»: «name_val», «name»: «name_val», «width»: 60, «align»: «center», «search»: True, „stype“: „text“,
«searchoptions»: {«sopt»: [„cn“, „nc“, „eq“, „ne“, „bw“, „bn“, „ew“, „en“]} }, {«label»: «Дата начала работ», «index»: «start_val», «name»: «start_val», «width»: 20, «align»: «center», «search»: True, „stype“: „text“, «searchoptions»: {«sopt»: [„cn“, „nc“, „eq“, „ne“, „bw“, „bn“, „ew“, „en“]} }
]
}
# <module>.<file>.<template> query = «mod_splm_nav.Organization.list_of_tz»
vars = {„PREF“: „http://proryv2020.ru/req_onto#“, „URI“: „http://proryv2020.ru/odek/data#123“, „LANG“: „ru“}
- data = [
{«tz» : «MFR.4.0010», «req» : «MFR.4.0010-3.2-0010-R»}, {«tz» : «MFR.4.0010», «req» : «MFR.4.0010-3.2-0020-R»}
]
-
static
Модуль onto_mgt¶
Модуль предоставляет функциональность для работы с онтологиями.
Модуль позволяет загрузить/заменить/скачать/удалить онтологии на портале. Для каждой онтологии сохраняется ее префикс, определенный через baseURI. Для загруженных файлов онтологий реализована навигация по онтологии.
API onto_mgt¶
Модуль предоставляет API для обращения к нему из других модулей. Пример обращения к модулю onto_mgt:
onto_api = app_api.get_mod_api('onto_mgt')
-
class
app.onto_mgt.mod_api.ModApi[исходный код]¶ Базовые классы:
app.onto_mgt.onto_conf.OntoConf-
static
get_all_prefixes(onto='')[исходный код]¶ Возвращает словарь префиксов онтологии в формате словаря для указанной в параметре онтологии.
- Параметры
onto (str) – префикс онтологии.
- Результат
{prefix : uri}
- Тип результата
dict
Если onto = «», то возвращает словарь префиксов всех зарегистрированных на портале онтологий.
-
static
get_classes(onto)[исходный код]¶ Возвращает словарь классов онтологии:
- Параметры
onto (str) – префикс онтологии
- Результат
{uri : label}
- Тип результата
dict
-
static
get_graph(onto)[исходный код]¶ Возвращает объект граф, который формирует из TTL файла онтологии
- Параметры
onto (str) – onto - это префикс онтологии.
- Результат
экземпляр класса для указанной онтологии.
- Тип результата
rdflib.graph
-
static
get_ontos()[исходный код]¶ Возвращает список списков:
- Результат
[[fullname, baseURI]]
- Тип результата
list
-
static
get_parent(onto, child)[исходный код]¶ Возвращает родителя для класса child из онтологии onto;
- Параметры
onto (str) – префикс онтологии,
child (str) – название класса без baseUri.
- Результат
имя класса
- Тип результата
str
-
static
get_prefixes()[исходный код]¶ Возвращает список списков префиксов и baseURI онтологий
- Результат
[prefix, baseUri], где prefix(str) и baseUri(str)
- Тип результата
list
-
static
Список поддерживаемых обращений к модулю:
а) onto_api.get_prefixes() - Возвращает список списков префиксов и baseURI онтологий [prefix, baseUri]
б) onto_api.get_all_prefixes(onto = "") - Возвращает словарь префиксов онтологии onto в формате {prefix : uri}.
onto - префикс онтологии. Если onto = "", то возвращает словарь префиксов всех онтологий в формате {prefix : uri}.
в) onto_api.get_classes(onto) - Возвращает словарь классов онтологии {uri : label}, где onto - префикс онтологии.
г) onto_api.get_ontos() - Возвращает список списков [fullname, baseURI].
д) onto_api.get_parent(onto, child) - Возвращает родителя класса child для онтологии onto; onto - префикс онтологии, child - название класса без baseUri.
е) onto_api.get_graph(onto) - Возвращает объект rdflib.graph онтологии onto; onto - префикс онтологии.
Модуль themes_mgt¶
Преднастроенные темы портала находятся в директории внутри модуля - themes_mgt/themes_list.
При старте проекта происходит проверка есть ли темы в директории app/cfg/themes, если тем
нет, то темы копируются туда из директории модуля. Установленные темы можно просматривать
в административном интерфейсе в разделе «Настройки портала» -> «Управление темами».
Для изменения преднастроенных тем требуется изменить файлы тем в директории модуля.
Для обновления преднастроенных тем для портала требуется в «Управление темами» нажать
кнопку «Обновить преднастроенные темы». По этой кнопке выполняется перезапись тем из
папки модуля в папку app/cfg/themes.
Для создания пользовательской темы требуется сделать копию папки с файлами одной из
преднастроенных тем. Изменить копию под требуемый дизайн. Создать архив zip темы.
Содержимое архива - директория с именем темы. Содержимое директории в архиве - файлы и
поддиректории по требованиям плагина https://flask-themes2.readthedocs.io/en/latest/.
Созданный архив требуется загрузить через Управление темами с помощью кнопки «Загрузить».
При таком сценарии создання тема будет помещена в папку app/cfg/themes и будет испольховаться
только для данной инсталляции потала.
Для создания преднастроенной темы, когда тему нужно будет использовать во всех инсталляциях,
zip-архив создавать не нужно. Достаточно папку с настроенной темой сохранить в папке иодуля
themes_mgt/themes_list.
Примечание
Для применения темы на портале требуется сделать выбранную тему активной. Активация темы происходит путем установки флага «Активная», через окно редактирования темы в разделе административного интерфейса «Управления темами».
Настройка стартовой страницы портала может происходить несколькими путями:
1 - В административном интерфейсе, раздел Конфигуратор, пункт Основная конфигурация -
требуется изменить параметр «mainpage» секции «Info», указав url от корня без домена
текущего портала с ведущим /.
2 - В файле dublin.ttl модуля указать url и связать его с модулем отношением
osplm:hasStartURL. Дополнительно можно указать, что данный url является активным через
отношение с флагом: osplm:isActive xsd:true.
Данный флаг указывает на обработку данного url в первуюю очередь. Отсутствие данного
флага или выставленного значения xsd:false приведет к случайному выбору из множества url
указанных с отношением osplm:hasStartURL.
Единственное требование это расширять шаблоны модуля (шаблона страницы в целом) от шаблона
портала с помощью конструкции {% extends app_root_tpl() %} и для рендеринга страницы
использовать встроенную функцию api портала app_api.render_page().
Модуль user_mgt¶
Модуль предоставляет функционал управления пользователями и ролями.
API user_mgt¶
Доступ к API можно получить с помощью функции get_mod_api() API (app_api) приложения, передав в
качестве аргумента имя модуля “user_mgt”:
admin_mod_api = app_api.get_mod_api('user_mgt')
-
class
app.user_mgt.mod_api.ModApi[исходный код]¶ Базовые классы:
object-
static
get_roles()[исходный код]¶ Функция возвращает роли …..
- Результат
список
- Тип результата
list
-
static
Модуль utilites¶
В этом модуле собраны вспомогательные функции, которые часто используются для обработки данных.
Вызов утилит выполняется следующим образом:
from app.utilites.axiom_reader import getClassAxioms
-
app.utilites.axiom_reader.getClassAxioms(ontoclass, G, prefix)[исходный код]¶ - Параметры
ontoclass – в формате объекта RDF URI Reference <class „rdflib.term.URIRef“>
G – в виде объекта rdfLib <class „rdflib.graph.Graph“>
prefix – в формате строки, например http://portal.domen#
from app.utilites.code_helper import CodeHelper
-
class
app.utilites.code_helper.CodeHelper[исходный код]¶ Базовые классы:
object-
static
add_file(file_path)[исходный код]¶
-
static
check_dir(dir_path)[исходный код]¶
-
static
check_file(file_path)[исходный код]¶
-
static
check_fs_item(item_path)[исходный код]¶
-
static
conf_bool(val)[исходный код]¶
-
static
dict_combine(_keys, _vals)[исходный код]¶
-
static
get_counters_object()[исходный код]¶
-
static
get_dir_content(dir_path)[исходный код]¶
-
static
get_file(file_path, mod='r')[исходный код]¶
-
static
get_mime4file_ext(file_ext)[исходный код]¶
-
static
is_empty_dir(dir_path)[исходный код]¶
-
static
make_pack(pack_source, zip_file)[исходный код]¶
-
static
make_unpack(packed_file, target_dir)[исходный код]¶
-
static
read_file(file_path, mod='r')[исходный код]¶
-
static
remove_file(file_path)[исходный код]¶
-
static
str_to_hash(some_str)[исходный код]¶
-
static
translit_rus_string(ru_str)[исходный код]¶ -
- Параметры
ru_str (str) –
- Результат
- Тип результата
-
static
write_to_file(file_path, istr='', mod='a')[исходный код]¶
-
static
from app.utilites.conf_driver_ini import ConfigDriverIni
-
class
app.utilites.conf_driver_ini.ConfigDriverIni(file_name='')[исходный код]¶ Базовые классы:
object-
get(key_list)[исходный код]¶
-
set_file(file_name)[исходный код]¶
-
to_dict()[исходный код]¶
-
from app.utilites.data_serializer import DataSerializer
-
class
app.utilites.data_serializer.DataSerializer[исходный код]¶ Базовые классы:
object-
dump(file_name, fdata)[исходный код]¶
-
restore(file_name)[исходный код]¶
-
from app.utilites.data_upload_manager import DataUploadManager
-
class
app.utilites.data_upload_manager.DataUploadManager[исходный код]¶ Базовые классы:
object-
call_after_modify_storage_triggers()[исходный код]¶
-
clear_named_graph_data(graph_name)[исходный код]¶ clear named graph
-
clear_storage()[исходный код]¶
-
clear_upload_list()[исходный код]¶
-
cook_graph_name(item)[исходный код]¶
-
download_file(target_file)[исходный код]¶
-
exec_query(query, endpoint='')[исходный код]¶ send a query to the triple store
-
get_last_downloaded_file()[исходный код]¶
-
get_upload_errors()[исходный код]¶
-
get_upload_result()[исходный код]¶
-
set_log_function(log_function)[исходный код]¶
-
set_storage_driver(_driver)[исходный код]¶
-
set_upload_list(lst)[исходный код]¶
-
update()[исходный код]¶ Ожидаем словарь с
-
update_upload_list(file_path)[исходный код]¶
-
upload()[исходный код]¶ Ожидаем список полных имен файлов для загрузки
-
upload_file(file_path)[исходный код]¶
-
property
use_named_graph¶
-
from app.utilites.extend_processes import ExtendProcesses
-
class
app.utilites.extend_processes.ExtendProcesses[исходный код]¶ Базовые классы:
object-
static
get_exec_path()[исходный код]¶
-
static
run(script, script_args=[], errors='')[исходный код]¶
-
static
stop(_pid)[исходный код]¶
-
static
update_sys_path()[исходный код]¶
-
static
from app.utilites.html_tag_searcher import HtmlTagSearcher
-
class
app.utilites.html_tag_searcher.HtmlTagSearcher[исходный код]¶ Базовые классы:
object-
add_mark(tag_mark)[исходный код]¶
-
clear_compiled()[исходный код]¶
-
drop_marks()[исходный код]¶
-
get_marks()[исходный код]¶
-
has_any_marks(file_path)[исходный код]¶
-
has_marks(file_path)[исходный код]¶
-
static
is_tag_mark(mark_obj)[исходный код]¶
-
static
mark2re(str_mark)[исходный код]¶
-
set_marks(marks_list)[исходный код]¶
-
from app.utilites.jqgrid_helper import JQGridHelper
-
class
app.utilites.jqgrid_helper.JQGridHelper[исходный код]¶ Базовые классы:
object-
apply_filter_rule(item, rule)[исходный код]¶ непосредственное сравнение со значением с использованием операции
-
apply_jqgrid_filters(source_list, filters)[исходный код]¶ прменение поиска по файлам
-
static
get_jqgrid_config()[исходный код]¶
-
is_respond_to_rules(item, rules, group_op)[исходный код]¶ сравнение значения с помощью операции
-
map_file_descr_property(col)[исходный код]¶
-
static
search_to_filter_json(source)[исходный код]¶
-
set_map(map)[исходный код]¶
-
from app.utilites.portal_navi import PortalNavi
Базовые классы:
objectМетод возвращает все пункты навигации начиная с разделов сайта в виде одноуровневого словаря. Ключи словаря - коды пунктов навигации, а значения - сами пункты навигации. Все пункты навигации связаны между собой спомощью двух пар ключей: id-parid и code-parent. Пункты собираются с учетов указанного пользователя - user
- Параметры
user – пользователь для проверки доступа к пунктам навигации
- Результат
одноуровневый словарь: ключ - код пункта навигации, значение - пункт навигации
Метод возвращает содержимое секции по коду
- Параметры
code –
user –
- Результат
from app.utilites.some_config import SomeConfig
-
class
app.utilites.some_config.SomeConfig(configs_root='')[исходный код]¶ Базовые классы:
object-
get(key)[исходный код]¶ key - string with dot delimetr aka Key1.kEy2.3key
-
set_root(file_name)[исходный код]¶
-
from app.utilites import tree
-
app.utilites.tree.build_theme_path(href, r_full_path)[исходный код]¶ метод строит html путь до узла в дереве
-
app.utilites.tree.create_bread_crumbs(href)[исходный код]¶ метод добавляющий html c «хлебными крошками» на страницу
-
app.utilites.tree.create_tree(structure, node)[исходный код]¶ метод создает дерево
-
app.utilites.tree.create_tree_description(tree)[исходный код]¶ метод добавляющий html c деревом на страницу
-
app.utilites.tree.get_attrs(tree, parent_id, parent_order='')[исходный код]¶ метод добавляет атрибуты order, name, prefix и сортировку для дерева tree
-
app.utilites.tree.get_children(parent_id, data, result)[исходный код]¶ метод рекурсивно возвращает всех детей родителя с parent_id
-
app.utilites.tree.get_data()[исходный код]¶ метод возвращает данные из app/data/navi
-
app.utilites.tree.get_element_by_id(elem_id)[исходный код]¶ метод возвращает объект из навигации по ID
-
app.utilites.tree.get_enumeration_ids()[исходный код]¶ метод определяющий нужна ли нумерация в дереве
-
app.utilites.tree.get_id_by_href(href)[исходный код]¶ метод возвращает ID по url
-
app.utilites.tree.get_info_by_href(href)[исходный код]¶ метод возвращает информацию узла по URL
-
app.utilites.tree.get_order(tree, elem_id)[исходный код]¶ метод определяющий порядок элементов в дереве
-
app.utilites.tree.get_parent_id(elem_id)[исходный код]¶ метод возвращает родительский объект из навигации по ID
-
app.utilites.tree.get_parents_for_query_ids()[исходный код]¶ метод определяющий есть ли конкретный родитель в дереве
-
app.utilites.tree.get_query(parent_id)[исходный код]¶ метод возвращает данные для дерева по QUERY_CODE
метод позволяющий получить дерево для сайдбара по URL
-
app.utilites.tree.get_structure(parent_id)[исходный код]¶ метод возвращает всех детей родителя с parent_id в специальном формате для networkx
-
app.utilites.tree.get_tree(href)[исходный код]¶ основной метод позволяющий получить дерево по URL
-
app.utilites.tree.get_tree_path(elem_id, tree)[исходный код]¶ метод возвращает путь до узла в дереве
-
app.utilites.tree.js_code_tree(tree)[исходный код]¶ метод добавляющий js для jstree на страницу
from app.utilites.utilites import Utilites
-
class
app.utilites.utilites.Utilites[исходный код]¶ Базовые классы:
object-
static
create_xicon_block(html='', title='', id='', xicon_close=True)[исходный код]¶ Метод создает html-блок с возможностью скрытия +/-
- Параметры
html (str) – содержимое html блока
title (str) – заголовок html блока
id (str) – id html блока
xicon_close (bool) – тип блока скрытый/раскрытый - True/False (по умолчанию скрытый)
- Результат
html
-
static
get_file_editor()[исходный код]¶
-
static
get_storage_driver()[исходный код]¶ Метод возвращает драйвер для работы с хранилищем
- Результат
_driver
-
static
make_qrcode(url)[исходный код]¶
-
static
Модуль wiki¶
Модуль предоставляет функциональность для работы с WIKI-страничками. Такие странички можно создавать для размещения на портале информации, представляемой в традиционном формате WEB-2.0. Т.е. не в семантическом, а текстовом виде с включением медиа-контента и ссылок. Например, для создания странички «Помощь», «Инструкции», «Новости» и т.д.
Для разработки WIKI страничек используется библиотека python-markdown2, краткая помощь
по ее использованию размещена под формой редактирования WIKI-странички.
- Полное описание синтаксиса дано по ссылкам:
Для отображения wiki-страницы в интерфесе SPLM необходимо добавить ее url в административном меню «Навигация».
Модули расширения функциональности (Open Source)¶
Модуль mod_analysis¶
Модуль предоставляет функциональность для построения отчетов. В качестве библиотеки для
графического представления использована open source библиотека plotly.
Модуль mod_auth_ldap¶
Модуль предоставляет функциональность авторизации по протоколу LDAP.
API mod_auth_ldap¶
Доступ к API можно получить с помощью функции get_mod_api() API (app_api)
приложения, передав в качестве аргумента имя модуля “mod_auth_ldap”:
admin_mod_api = app_api.get_mod_api('mod_auth_ldap')
-
class
app.mod_auth_ldap.mod_api.ModApi(_ext_pth_logs='')[исходный код]¶ Базовые классы:
object-
get_user(login)[исходный код]¶
-
login(login, auth_secret)[исходный код]¶
-
logout()[исходный код]¶
-
set_external_logs_path(_pth)[исходный код]¶ Метод устанавливает внешнюю директорию для логов :param _pth: :return:
-
-
app.mod_auth_ldap.mod_api.ModApi.login(self, login, auth_secret)¶
Модули расширения функциональности (Proprietary)¶
Модуль mod_bimserver¶
Модуль позволяет включить интерфейс BimServer в интерфейс портала.
Модуль mod_data_quality¶
Модуль предоставляет функциональность для работы с машиночитаемыми треобваниями. Разработка машиночитаемых требований должна вестись на SHACL. Модуль имеет интерфейс для редактирования SHACL-правил и интерфейс для запуска првил и вывода результатов проверки на экран (страницу портала).
Модуль предназачен для обеспечения контроль качества данных после их загрузки на портал. А так же для выполнения операций логических выводов над загруженными данными. Если в первом случае результатом проверки является отчет о несоответствии. То результаты логических выводов можно записывать в базу данных как извлеченные знания.
Стандарт W3C по работе с SHACK можно изучить здесь: https://www.w3.org/TR/shacl/ и здесь https://www.w3.org/TR/shacl-af/
Модуль mod_textcompare¶
Модуль интеллектуального сравнения текстов требований. Модуль позволяет сравнивать тексты двумя по двум вариантам.
Первый вариант - «целиком по требованию». Из названия метода понятно, что минимальным фрагментом текста является весь текст исходного требования. Сравнению подвергаются так же полные тексты требований анализируемых документов.
Второй вариант сравнения - «по предложениям». В этом варианте требования исходного документа разбиваются на предложения и сравниваются с каждым предложением в каждом требовании анализируемых документов.
Первый вариант сравнения рекомендуется использовать для документов, созданных из общего шаблона или разных версий одного документа. Т.е. в тех случаях, когда разметка текста на требования выполнена одинаково. Для таких документов можно решать и обратную задачу - поиска различий в требованиях.
Второй вариант сравнения более ресурсозатратный и требует большего компьютерного времени. Его рекомендуется использовать для документов разных структур и с разными подходами по разметке текстов на требования.
Модуль сравнения текстов разработан так, что позволяет повысить скорость обработки текстов за счет возможности исключения из анализа заголовков и других элементов структуры документа. При этом, классификации самих фрагментов текста, которая относится к содержательной части документа, не может быть исключена из обработки. Это сделано специально для того, чтобы, избежать ситуации с ошибками классификации, т.е. когда схожие тексты в одном документе классифицированы как требование, а в другом – как пояснительный текст. Сравнение текстов характеризуется параметром «Степень сходства»,который может варьироваться от 1 до 100%, а модуле задается через десятичную дробь в диапазоне от 0 до 1. Если требуется найти совпадения текстов, то, как правило, выбирается условие: «более» 0.8.
Модуль mod_controlling¶
Модуль контроллинга предназначен для построения на предприятии эффективной системы показателей, дающих объективную оценку хода выполнения процесса или проекта. Модуль контроллинга рассчитывает текущий рейтинг проекта / процесса и хранит историю изменений рейтинга.
Такой подход обеспечивает прозрачность работы исполнителей и предоставляет возможность количественной оценки их работы с точки зрения соблюдения сроков и качества.
Рейтинг, как универсальный показатель, позволяет измерять и сравнивать ситуацию в проекте в целом и в подпроектах разных уровней.
Регистрация модуля в SP4PLM¶
Пример файла-описания модуля с использованием онтологий DC и OSPLM¶
Для того чтобы модуль был автоматически распознан и зарагистрирован на платформе SPLM необходимо в папку с модулем разместить файл-описание, который сделан в формате TTL.
На картинке ниже преджставлен пример описания модуля.
В зоне с номером 1 модуль с именем „mod_analysys“ регистрируется как экзампляр класса osplm:Module.
В зоне с номером 2 дается описание модуля по правилам Dublin Core https://www.dublincore.org
В зоне с номером 3 дается описание модуля по правилам платформы SP4PLM для его правильной регистрации.
Онтология OSPLM¶
Карта допустимых связей между экземплярами классов онтологии.
Файл с онтологией размещен в корне проекта. Ниже представлен листинг онтологии:
# baseURI: http://splm.portal.web/osplm
# imports: http://purl.org/dc/elements/1.1/
# imports: http://purl.org/dc/terms/
# prefix: osplm
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix osplm: <http://splm.portal.web/osplm#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://splm.portal.web/osplm>
a owl:Ontology ;
dc:creator "Столяров Олег Николаевич" ;
dc:date "2018-10-23" ;
dc:rights "In accordance with SP4PLM license / соответствует лицензии на платформу SP4PLM" ;
dc:title "Онтология платформы SP4PLM" ;
owl:imports dc: ;
owl:imports <http://purl.org/dc/terms/> ;
owl:versionInfo "Created with TopBraid Composer" ;
.
osplm:Function
a owl:Class ;
rdfs:label "Function of SP4PLM"@en ;
rdfs:label "Функция в SP4PLM"@ru ;
rdfs:subClassOf owl:Thing ;
rdfs:comment "Предназначен для описания функции, запуск которой разрешен для пользователей с указанной ролью. Если по одному URL разные пользовательские роли должны иметь разный функционал, то список таких функций должен быть перечислен в этом классе."@ru ;
.
osplm:Module
a owl:Class ;
rdfs:label "Module"@en ;
rdfs:label "Модуль"@ru ;
rdfs:subClassOf owl:Thing ;
rdfs:comment "Содержит экземпляр модуля, который регистрируются на платформе SP4PLM."@ru ;
.
osplm:URL
a owl:Class ;
rdfs:label "URL that used in module"@en ;
rdfs:label "URL которая используется в модуле"@ru ;
rdfs:subClassOf owl:Thing ;
rdfs:comment "URL модуля, по которому доступен какой-либо из его функционал."@ru ;
.
osplm:forAdminPurpose
a owl:DatatypeProperty ;
rdfs:domain osplm:URL ;
rdfs:label "доступен только для администратора"@ru ;
rdfs:label "shall be used for admin purpose"@en ;
rdfs:range xsd:boolean ;
rdfs:comment "Если объект xsd:true, то данный URL доступен только для администратора портала."@ru ;
.
osplm:hasDescription
a owl:DatatypeProperty ;
rdfs:domain osplm:Function ;
rdfs:label "has description"@en ;
rdfs:label "имеет описание"@ru ;
rdfs:range xsd:string ;
.
osplm:hasFunction
a owl:ObjectProperty ;
rdfs:domain osplm:Module ;
rdfs:label "has function"@en ;
rdfs:label "имеет функцию"@ru ;
rdfs:range osplm:Function ;
.
osplm:hasHTMLtemplate
a owl:DatatypeProperty ;
rdfs:domain osplm:URL ;
rdfs:label "has HTML template"@en ;
rdfs:label "имеет HTML шаблон"@ru ;
rdfs:range xsd:string ;
rdfs:comment ""@ru ;
.
osplm:hasPathForSPARQLquery
a owl:DatatypeProperty ;
rdfs:domain osplm:Module ;
rdfs:label "has path for SPARQL query"@en ;
rdfs:label "имеет путь к месту хранения SPARQL запросов"@ru ;
rdfs:range xsd:string ;
rdfs:comment "если модуль имеет свои SPARQL запросы, то здесь указывается относительный путь к месту их размещения."@ru ;
.
osplm:hasURL
a owl:ObjectProperty ;
rdfs:domain osplm:Module ;
rdfs:label "has URL"@en ;
rdfs:label "имеет URL"@ru ;
rdfs:range osplm:URL ;
.
osplm:isAvailableFor
a owl:ObjectProperty ;
rdfs:domain osplm:URL,
osplm:Function ;
rdfs:label "is available for"@en ;
rdfs:label "доступна для"@ru ;
rdfs:range xsd:string ;
rdfs:comment "Если объектом является экземпляр класса Function, то проверка прав ролей на выполнение этих функций должны быть реализована разработчиком модуля самостоятельно. Если объектом является экземпляр класса URL, то проверка прав осуществляется платформой SP4PLM. При этом во view.py после соответствующего URL должен быть указан декоратор @_auth_decorator."@ru ;
.
osplm:shallBeShownInMenu
a owl:DatatypeProperty ;
rdfs:domain osplm:URL ;
rdfs:label "shall be shown in menu"@en ;
rdfs:label "должно отражаться в пользовательском меню"@ru ;
rdfs:range xsd:boolean ;
rdfs:comment "Если объектом является xsd:true, то в административном интерфейсе данный URL появляется в качестве подсказки."@ru ;
.
osplm:value
a owl:DatatypeProperty ;
rdfs:domain osplm:URL ;
rdfs:label "value"@en ;
rdfs:label "значение"@ru ;
rdfs:range xsd:string ;
.