Example #1
0
    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
Example #2
0
    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!'
                        )
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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