mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			
		
			
	
	
		
			95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
		
			
		
	
	
			95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
| 
								 | 
							
								__filename__ = "occupation.py"
							 | 
						||
| 
								 | 
							
								__author__ = "Bob Mottram"
							 | 
						||
| 
								 | 
							
								__license__ = "AGPL3+"
							 | 
						||
| 
								 | 
							
								__version__ = "1.6.0"
							 | 
						||
| 
								 | 
							
								__maintainer__ = "Bob Mottram"
							 | 
						||
| 
								 | 
							
								__email__ = "bob@libreserver.org"
							 | 
						||
| 
								 | 
							
								__status__ = "Production"
							 | 
						||
| 
								 | 
							
								__module_group__ = "Core"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def get_occupation_skills(actor_json: {}) -> []:
							 | 
						||
| 
								 | 
							
								    """Returns the list of skills for an actor
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    if 'hasOccupation' not in actor_json:
							 | 
						||
| 
								 | 
							
								        return []
							 | 
						||
| 
								 | 
							
								    if not isinstance(actor_json['hasOccupation'], list):
							 | 
						||
| 
								 | 
							
								        return []
							 | 
						||
| 
								 | 
							
								    for occupation_item in actor_json['hasOccupation']:
							 | 
						||
| 
								 | 
							
								        if not isinstance(occupation_item, dict):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item.get('@type'):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item['@type'] == 'Occupation':
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item.get('skills'):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if isinstance(occupation_item['skills'], list):
							 | 
						||
| 
								 | 
							
								            return occupation_item['skills']
							 | 
						||
| 
								 | 
							
								        if isinstance(occupation_item['skills'], str):
							 | 
						||
| 
								 | 
							
								            return [occupation_item['skills']]
							 | 
						||
| 
								 | 
							
								        break
							 | 
						||
| 
								 | 
							
								    return []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def get_occupation_name(actor_json: {}) -> str:
							 | 
						||
| 
								 | 
							
								    """Returns the occupation name an actor
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    if not actor_json.get('hasOccupation'):
							 | 
						||
| 
								 | 
							
								        return ""
							 | 
						||
| 
								 | 
							
								    if not isinstance(actor_json['hasOccupation'], list):
							 | 
						||
| 
								 | 
							
								        return ""
							 | 
						||
| 
								 | 
							
								    for occupation_item in actor_json['hasOccupation']:
							 | 
						||
| 
								 | 
							
								        if not isinstance(occupation_item, dict):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item.get('@type'):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if occupation_item['@type'] != 'Occupation':
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item.get('name'):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if isinstance(occupation_item['name'], str):
							 | 
						||
| 
								 | 
							
								            return occupation_item['name']
							 | 
						||
| 
								 | 
							
								        break
							 | 
						||
| 
								 | 
							
								    return ""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def set_occupation_name(actor_json: {}, name: str) -> bool:
							 | 
						||
| 
								 | 
							
								    """Sets the occupation name of an actor
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    if not actor_json.get('hasOccupation'):
							 | 
						||
| 
								 | 
							
								        return False
							 | 
						||
| 
								 | 
							
								    if not isinstance(actor_json['hasOccupation'], list):
							 | 
						||
| 
								 | 
							
								        return False
							 | 
						||
| 
								 | 
							
								    for index, _ in enumerate(actor_json['hasOccupation']):
							 | 
						||
| 
								 | 
							
								        occupation_item = actor_json['hasOccupation'][index]
							 | 
						||
| 
								 | 
							
								        if not isinstance(occupation_item, dict):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item.get('@type'):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if occupation_item['@type'] != 'Occupation':
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        occupation_item['name'] = name
							 | 
						||
| 
								 | 
							
								        return True
							 | 
						||
| 
								 | 
							
								    return False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def set_occupation_skills_list(actor_json: {}, skills_list: []) -> bool:
							 | 
						||
| 
								 | 
							
								    """Sets the occupation skills for an actor
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    if 'hasOccupation' not in actor_json:
							 | 
						||
| 
								 | 
							
								        return False
							 | 
						||
| 
								 | 
							
								    if not isinstance(actor_json['hasOccupation'], list):
							 | 
						||
| 
								 | 
							
								        return False
							 | 
						||
| 
								 | 
							
								    for index, _ in enumerate(actor_json['hasOccupation']):
							 | 
						||
| 
								 | 
							
								        occupation_item = actor_json['hasOccupation'][index]
							 | 
						||
| 
								 | 
							
								        if not isinstance(occupation_item, dict):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if not occupation_item.get('@type'):
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        if occupation_item['@type'] != 'Occupation':
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								        occupation_item['skills'] = skills_list
							 | 
						||
| 
								 | 
							
								        return True
							 | 
						||
| 
								 | 
							
								    return False
							 |