def load_skills(self): key = load_key(f'students/{self.login}.key') if key: json_achievements = load_encrypted( f'students/{self.login}-achievements', key) try: json_achievements = json.loads(json_achievements) for ach in json_achievements: skill = all_skills[int(ach['skill_id'])] metadata = ach['metadata'] self.achievements.append(Achievement( skill, metadata, self)) if 'shared_with' in metadata: for login in metadata['shared_with']: try: all_students[login].achievements.append( Achievement(skill, metadata, self)) except KeyError: print( f'Arquivo students/{self.login}-achievements mal formatado!' ) if type(metadata) == dict and 'project' in metadata: group_size = len(metadata['project']) for login in metadata['project']: try: project_points[login] += self.achievements[ -1].xp() / group_size except KeyError: print( f'Arquivo students/{self.login}-achievements mal formatado!' ) if type(metadata) == dict and ('copy_to' in metadata or 'copy-to' in metadata): student_list = metadata.get('copy-to', metadata.get('copy_to')) for login in student_list: try: all_students[login].achievements.append( Achievement(skill, metadata, self)) except KeyError: print( f'Arquivo students/{self.login}-achievements mal formatado!' ) except json.JSONDecodeError: print( f'Arquivo students/{self.login}-achievements mal formatado!' ) self.has_key = True
def _load_skills_from_string(self, filename): json_achievements = json.loads(filename) for ach in json_achievements: skill_id = all_skills[int(ach['skill_id'])] metadata = ach['metadata'] self._add_achievement(Achievement(skill_id, metadata, self)) if 'group' in metadata: for login in metadata['group']: try: all_students[login]._add_achievement( Achievement(skill_id, metadata, self)) except KeyError: print( f'Arquivo students/{self.login}-achievements mal formatado!' )
def __init__(self, name, students, achievements): self.name = name self.students = [all_students[st] for st in students] for st in students: for ach in achievements: skill = all_skills[int(ach['skill_id'])] metadata = ach['metadata'] all_students[st].achievements.append(Achievement(skill, metadata, st)) self.achievements = achievements
def load_skills(self): key = load_key(f'students/{self.login}.key') if key: json_achievements = load_encrypted( f'students/{self.login}-achievements', key) try: json_achievements = json.loads(json_achievements) for ach in json_achievements: skill = all_skills[int(ach['skill_id'])] metadata = ach['metadata'] self.achievements.append(Achievement( skill, metadata, self)) if 'shared_with' in metadata: for login in metadata['shared_with']: all_students[login].achievements.append( Achievement(skill, metadata, self)) except json.JSONDecodeError: print( f'Arquivo students/{self.login}-achievements mal formatado!' ) self.has_key = True
def load(student_login): key = load_key(f'students/{student_login}.key') json_dict = load_from_file(f'students/{student_login}') json_dict = json.loads(json_dict) s = Student(json_dict['login'], json_dict['name'], json_dict['avatar'], []) if key: json_achievements = load_encrypted(f'students/{student_login}-achievements', key) try: json_achievements = json.loads(json_achievements) for ach in json_achievements: skill = all_skills[int(ach['skill_id'])] metadata = ach['metadata'] s.achievements.append(Achievement(skill, metadata, s)) except json.JSONDecodeError: print(f'Arquivo students/{student_login}-achievements mal formatado!') s.has_key = True return s