Модули

Модули ядра

Модуль 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

get_ext_func_navi(_user)[исходный код]

Метод возвращает список ссылок дополнительной функциональности для пользователя _user. Если пользователю _user назначена роль extended_admin, то добавляется ссылка для скачивания лога авторизации. Если пользователь _user является администратором портала, то добавляется ссылка для перехода в административный интерфейс.

Параметры

_user (object) – экземпляр класса модели пользователя

Результат

список ссылок

Тип результата

list

Метод возвращает класс для организации связей в базе данных

Результат

класс 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

Модуль 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»}

]

Модуль 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

Список поддерживаемых обращений к модулю:

а) 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

Модуль 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)[исходный код]

матрица составлена согласно: https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82%D0%B0_%D0%BB%D0%B0%D1%82%D0%B8%D0%BD%D0%B8%D1%86%D0%B5%D0%B9

Параметры

ru_str (str) –

Результат

Тип результата

static write_to_file(file_path, istr='', mod='a')[исходный код]
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()[исходный код]
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
class app.utilites.portal_navi.PortalNavi[исходный код]

Базовые классы: object

static get_admin_endpoint()[исходный код]
static get_brothers(navi_item, user)[исходный код]
static get_current_navi_item()[исходный код]
static get_main_navi(user)[исходный код]
static get_mod_tpl_path(mod_name, tpl_name)[исходный код]
static get_navi_map(user)[исходный код]

Метод возвращает все пункты навигации начиная с разделов сайта в виде одноуровневого словаря. Ключи словаря - коды пунктов навигации, а значения - сами пункты навигации. Все пункты навигации связаны между собой спомощью двух пар ключей: id-parid и code-parent. Пункты собираются с учетов указанного пользователя - user

Параметры

user – пользователь для проверки доступа к пунктам навигации

Результат

одноуровневый словарь: ключ - код пункта навигации, значение - пункт навигации

static get_portal_navi(code, user=None)[исходный код]

Метод возвращает содержимое секции по коду

Параметры
  • code

  • user

Результат

static get_start_tpl()[исходный код]
static get_start_url()[исходный код]
static get_start_urls()[исходный код]
static get_top_navi(user)[исходный код]
static get_user_custom_navi(user)[исходный код]
static navi_item_is_section(navi_item)[исходный код]
static sort_obj_lst(_lst, ord='asc', attr='srtid')[исходный код]
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

app.utilites.tree.get_sidebar_navi(href)[исходный код]

метод позволяющий получить дерево для сайдбара по 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)[исходный код]

Модуль wiki

Модуль предоставляет функциональность для работы с WIKI-страничками. Такие странички можно создавать для размещения на портале информации, представляемой в традиционном формате WEB-2.0. Т.е. не в семантическом, а текстовом виде с включением медиа-контента и ссылок. Например, для создания странички «Помощь», «Инструкции», «Новости» и т.д.

Для разработки WIKI страничек используется библиотека python-markdown2, краткая помощь по ее использованию размещена под формой редактирования WIKI-странички.

Полное описание синтаксиса дано по ссылкам:
  1. https://github.com/sandino/Markdown-Cheatsheet/blob/master/README.md

  2. https://gist.github.com/Jekins/2bf2d0638163f1294637

Для отображения 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.

_images/screenshot_30.png

Модуль mod_controlling

Модуль контроллинга предназначен для построения на предприятии эффективной системы показателей, дающих объективную оценку хода выполнения процесса или проекта. Модуль контроллинга рассчитывает текущий рейтинг проекта / процесса и хранит историю изменений рейтинга.

Такой подход обеспечивает прозрачность работы исполнителей и предоставляет возможность количественной оценки их работы с точки зрения соблюдения сроков и качества.

Рейтинг, как универсальный показатель, позволяет измерять и сравнивать ситуацию в проекте в целом и в подпроектах разных уровней.

Регистрация модуля в SP4PLM

Пример файла-описания модуля с использованием онтологий DC и OSPLM

Для того чтобы модуль был автоматически распознан и зарагистрирован на платформе SPLM необходимо в папку с модулем разместить файл-описание, который сделан в формате TTL.

На картинке ниже преджставлен пример описания модуля.

В зоне с номером 1 модуль с именем „mod_analysys“ регистрируется как экзампляр класса osplm:Module.

В зоне с номером 2 дается описание модуля по правилам Dublin Core https://www.dublincore.org

В зоне с номером 3 дается описание модуля по правилам платформы SP4PLM для его правильной регистрации.

_images/screenshot_31.png

Онтология OSPLM

Карта допустимых связей между экземплярами классов онтологии.

_images/OSPLM.png

Файл с онтологией размещен в корне проекта. Ниже представлен листинг онтологии:

# 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 ;
.