Convert skills to a list

merge-requests/30/head
Bob Mottram 2021-05-14 18:41:05 +01:00
parent 1ebb8a5d66
commit 2c70942481
7 changed files with 28 additions and 23 deletions

View File

@ -7497,9 +7497,9 @@ class PubServer(BaseHTTPRequestHandler):
if self.server.keyShortcuts.get(nickname): if self.server.keyShortcuts.get(nickname):
accessKeys = \ accessKeys = \
self.server.keyShortcuts[nickname] self.server.keyShortcuts[nickname]
actorSkillsStr = \ actorSkillsList = \
actorJson['hasOccupation']['skills'] actorJson['hasOccupation']['skills']
skills = getSkillsFromString(actorSkillsStr) skills = getSkillsFromString(actorSkillsList)
msg = \ msg = \
htmlProfile(self.server.rssIconAtTop, htmlProfile(self.server.rssIconAtTop,
self.server.cssCache, self.server.cssCache,
@ -7536,9 +7536,9 @@ class PubServer(BaseHTTPRequestHandler):
'show skills') 'show skills')
else: else:
if self._fetchAuthenticated(): if self._fetchAuthenticated():
actorSkillsStr = \ actorSkillsList = \
actorJson['hasOccupation']['skills'] actorJson['hasOccupation']['skills']
skills = getSkillsFromString(actorSkillsStr) skills = getSkillsFromString(actorSkillsList)
msg = json.dumps(skills, msg = json.dumps(skills,
ensure_ascii=False) ensure_ascii=False)
msg = msg.encode('utf-8') msg = msg.encode('utf-8')

View File

@ -281,7 +281,7 @@ def _createPersonBase(baseDir: str, nickname: str, domain: str, port: int,
'hasOccupation': { 'hasOccupation': {
'@type': 'Occupation', '@type': 'Occupation',
'name': "", 'name': "",
'skills': "" 'skills': []
}, },
"affiliation": { "affiliation": {
"@type": "OrganizationRole", "@type": "OrganizationRole",
@ -586,7 +586,7 @@ def personUpgradeActor(baseDir: str, personJson: {},
personJson['hasOccupation'] = { personJson['hasOccupation'] = {
'@type': 'Occupation', '@type': 'Occupation',
'name': occupationName, 'name': occupationName,
'skills': "" 'skills': []
} }
updateActor = True updateActor = True

View File

@ -17,23 +17,24 @@ from utils import getDomainFromActor
from utils import loadJson from utils import loadJson
def setSkillsFromDict(actorJson: {}, skillsDict: {}) -> str: def setSkillsFromDict(actorJson: {}, skillsDict: {}) -> []:
"""Converts a dict containing skills to a string """Converts a dict containing skills to a string
Returns the string version of the dictionary Returns the string version of the dictionary
""" """
skillsStr = '' skillsList = []
for name, value in skillsDict.items(): for name, value in skillsDict.items():
if skillsStr: skillsList.append(name + ':' + str(value))
skillsStr += ', ' actorJson['hasOccupation']['skills'] = skillsList
skillsStr += name + ':' + str(value) return skillsList
actorJson['hasOccupation']['skills'] = skillsStr
return skillsStr
def getSkillsFromString(skillsStr: str) -> {}: def getSkillsFromString(skillsStr: str) -> {}:
"""Returns a dict of skills from a string """Returns a dict of skills from a string
""" """
skillsList = skillsStr.split(',') if isinstance(skillsStr, list):
skillsList = skillsStr
else:
skillsList = skillsStr.split(',')
skillsDict = {} skillsDict = {}
for skill in skillsList: for skill in skillsList:
if ':' not in skill: if ':' not in skill:
@ -73,7 +74,11 @@ def noOfActorSkills(actorJson: {}) -> int:
"""Returns the number of skills that an actor has """Returns the number of skills that an actor has
""" """
if actorJson.get('hasOccupation'): if actorJson.get('hasOccupation'):
skillsList = actorJson['hasOccupation']['skills'].split(',') skillsStr = actorJson['hasOccupation']['skills']
if isinstance(skillsStr, list):
skillsList = skillsStr
else:
skillsList = skillsStr.split(',')
if skillsList: if skillsList:
return len(skillsList) return len(skillsList)
return 0 return 0

View File

@ -3664,7 +3664,7 @@ def testSkills() -> None:
'hasOccupation': { 'hasOccupation': {
'@type': 'Occupation', '@type': 'Occupation',
'name': "", 'name': "",
'skills': "" 'skills': []
} }
} }
skillsDict = { skillsDict = {

View File

@ -420,8 +420,8 @@ def htmlSkillsSearch(actor: str,
actorJson.get('name') and \ actorJson.get('name') and \
actorJson.get('icon'): actorJson.get('icon'):
actor = actorJson['id'] actor = actorJson['id']
actorSkillsStr = actorJson['hasOccupation']['skills'] actorSkillsList = actorJson['hasOccupation']['skills']
skills = getSkillsFromString(actorSkillsStr) skills = getSkillsFromString(actorSkillsList)
for skillName, skillLevel in skills.items(): for skillName, skillLevel in skills.items():
skillName = skillName.lower() skillName = skillName.lower()
if not (skillName in skillsearch or if not (skillName in skillsearch or
@ -461,9 +461,9 @@ def htmlSkillsSearch(actor: str,
actorJson.get('name') and \ actorJson.get('name') and \
actorJson.get('icon'): actorJson.get('icon'):
actor = actorJson['id'] actor = actorJson['id']
actorSkillsStr = \ actorSkillsList = \
actorJson['hasOccupation']['skills'] actorJson['hasOccupation']['skills']
skills = getSkillsFromString(actorSkillsStr) skills = getSkillsFromString(actorSkillsList)
for skillName, skillLevel in skills.items(): for skillName, skillLevel in skills.items():
skillName = skillName.lower() skillName = skillName.lower()
if not (skillName in skillsearch or if not (skillName in skillsearch or

View File

@ -721,7 +721,7 @@ def htmlHeaderWithPersonMarkup(cssFilename: str, instanceTitle: str,
skillsMarkup = '' skillsMarkup = ''
if actorJson.get('hasOccupation'): if actorJson.get('hasOccupation'):
skillsStr = actorJson['hasOccupation']['skills'] skillsList = actorJson['hasOccupation']['skills']
if actorJson['hasOccupation'].get('name'): if actorJson['hasOccupation'].get('name'):
occupationName = actorJson['hasOccupation']['name'] occupationName = actorJson['hasOccupation']['name']
occupationStr = ' "name": "' + occupationName + '",\n' occupationStr = ' "name": "' + occupationName + '",\n'
@ -729,7 +729,7 @@ def htmlHeaderWithPersonMarkup(cssFilename: str, instanceTitle: str,
' "hasOccupation": {\n' + \ ' "hasOccupation": {\n' + \
' "@type": "Occupation",\n' + \ ' "@type": "Occupation",\n' + \
occupationStr + \ occupationStr + \
' "skills": "' + skillsStr + '"\n' + \ ' "skills": ' + str(skillsList) + '\n' + \
' "},\n' ' "},\n'
personMarkup = \ personMarkup = \

View File

@ -14,7 +14,7 @@
"email": "bob@freedombone.net", "email": "bob@freedombone.net",
"url": "https://epicyon.freedombone.net/users/bob" "url": "https://epicyon.freedombone.net/users/bob"
}, },
"applicationCategory" : "server, software, fediverse, activitypub, self-hosting", "applicationCategory" : ["server", "software", "bash", "debian", "linux", "self-hosting"],
"downloadUrl" : "https://epicyon.net/epicyon.tar.gz" "downloadUrl" : "https://epicyon.net/epicyon.tar.gz"
} }
</script> </script>