selene-backend/shared/selene/testing/skill.py

79 lines
2.4 KiB
Python

# Mycroft Server - Backend
# Copyright (C) 2019 Mycroft AI Inc
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# This file is part of the Mycroft Server.
#
# The Mycroft Server is free software: you can redistribute it and/or
# modify it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
from selene.data.skill import (
SettingsDisplay,
SettingsDisplayRepository,
Skill,
SkillRepository,
)
def build_text_field():
return dict(
name="textfield",
type="text",
label="Text Field",
placeholder="Text Placeholder",
)
def build_checkbox_field():
return dict(name="checkboxfield", type="checkbox", label="Checkbox Field")
def build_label_field():
return dict(type="label", label="This is a section label.")
def _build_display_data(skill_gid, fields):
gid_parts = skill_gid.split("|")
if len(gid_parts) == 3:
skill_name = gid_parts[1]
else:
skill_name = gid_parts[0]
skill_identifier = skill_name + "-123456"
settings_display = dict(
skill_gid=skill_gid, identifier=skill_identifier, display_name=skill_name,
)
if fields is not None:
settings_display.update(
skillMetadata=dict(sections=[dict(name="Section Name", fields=fields)])
)
return settings_display
def add_skill(db, skill_global_id, settings_fields=None):
display_data = _build_display_data(skill_global_id, settings_fields)
skill_repo = SkillRepository(db)
skill_id = skill_repo.ensure_skill_exists(skill_global_id)
skill = Skill(skill_global_id, skill_id)
settings_display = SettingsDisplay(skill_id, display_data)
settings_display_repo = SettingsDisplayRepository(db)
settings_display.id = settings_display_repo.add(settings_display)
return skill, settings_display
def remove_skill(db, skill):
skill_repo = SkillRepository(db)
skill_repo.remove_by_gid(skill_gid=skill.skill_gid)