added some logic on how to determine the skill name displayed in the ui
parent
d19a1fcdf6
commit
638b74206d
|
@ -24,10 +24,11 @@ class SkillSettingsEndpoint(SeleneEndpoint):
|
|||
|
||||
def _build_response_data(self):
|
||||
response_data = []
|
||||
for skill in self.account_skills:
|
||||
response_skill = dict(name=skill.skill_name)
|
||||
if skill.settings_version is not None:
|
||||
duplicates = self._check_for_skill_duplicates()
|
||||
for skill in self.account_skills:
|
||||
display_name = self._determine_display_name(skill)
|
||||
response_skill = dict(name=display_name)
|
||||
if skill.settings_version is not None:
|
||||
response_sections = self._build_sections(skill, duplicates)
|
||||
response_skill.update(sections=response_sections)
|
||||
response_data.append(response_skill)
|
||||
|
@ -44,6 +45,17 @@ class SkillSettingsEndpoint(SeleneEndpoint):
|
|||
|
||||
return duplicate_skills
|
||||
|
||||
@staticmethod
|
||||
def _determine_display_name(skill: AccountSkill):
|
||||
if skill.display_name is not None:
|
||||
display_name = skill.display_name
|
||||
elif skill.settings_meta is not None:
|
||||
display_name = skill.settings_meta['name']
|
||||
else:
|
||||
display_name = skill.skill_name
|
||||
|
||||
return display_name
|
||||
|
||||
def _build_sections(self, skill: AccountSkill, duplicates: set):
|
||||
response_sections = []
|
||||
if skill.skill_name in duplicates:
|
||||
|
|
|
@ -6,6 +6,7 @@ from typing import List
|
|||
class AccountSkill(object):
|
||||
skill_name: str
|
||||
devices: List[str]
|
||||
display_name: str = None
|
||||
settings_version: str = None
|
||||
settings_meta: dict = None
|
||||
settings: dict = None
|
||||
|
|
|
@ -18,10 +18,11 @@ class AccountSkillRepository(RepositoryBase):
|
|||
)
|
||||
|
||||
for key, devices in device_groupings.items():
|
||||
settings_meta, settings = skill_settings_meta[key]
|
||||
display_name, settings_meta, settings = skill_settings_meta[key]
|
||||
account_skills.append(AccountSkill(
|
||||
skill_name=key[0],
|
||||
devices=devices,
|
||||
display_name=display_name,
|
||||
settings_version=key[1],
|
||||
settings_meta=settings_meta,
|
||||
settings=settings
|
||||
|
@ -43,17 +44,15 @@ class AccountSkillRepository(RepositoryBase):
|
|||
device_groupings = defaultdict(list)
|
||||
skill_settings = {}
|
||||
for device_skill in device_skills:
|
||||
if device_skill['settings'] is None:
|
||||
settings = None
|
||||
settings_meta = None
|
||||
else:
|
||||
settings = device_skill['settings']
|
||||
settings_meta = device_skill['settings_meta']
|
||||
key = (
|
||||
device_skill['skill_name'],
|
||||
device_skill['version'],
|
||||
)
|
||||
device_groupings[key].append(device_skill['device_name'])
|
||||
skill_settings[key] = settings_meta, settings
|
||||
skill_settings[key] = [
|
||||
device_skill['display_name'],
|
||||
device_skill['settings_meta'],
|
||||
device_skill['settings']
|
||||
]
|
||||
|
||||
return skill_settings, device_groupings
|
||||
|
|
|
@ -1,6 +1,19 @@
|
|||
-- get all combinations of skills and skill setting meta for an account
|
||||
WITH
|
||||
skill_meta AS (
|
||||
SELECT
|
||||
skill_id,
|
||||
display_name,
|
||||
max(branch)
|
||||
FROM
|
||||
skill.branch
|
||||
GROUP BY
|
||||
skill_id,
|
||||
display_name
|
||||
)
|
||||
SELECT
|
||||
s.name AS skill_name,
|
||||
skm.display_name,
|
||||
d.name as device_name,
|
||||
sm.version,
|
||||
sm.settings_meta,
|
||||
|
@ -10,6 +23,7 @@ FROM
|
|||
INNER JOIN device.device_skill ds on ds.skill_id = s.id
|
||||
INNER JOIN device.device d ON d.id = ds.device_id
|
||||
LEFT JOIN skill.setting_meta sm ON ds.skill_setting_meta_id = sm.id
|
||||
LEFT JOIN skill_meta skm ON skm.skill_id = s.id
|
||||
WHERE
|
||||
d.account_id = %(account_id)s
|
||||
ORDER BY
|
||||
|
|
Loading…
Reference in New Issue