Ejemplo n.º 1
0
    def _process_subjects(self, subjects: dict):
        """
        Processes all WaniKani subjects and stores it in the database to be easily accessible.
        This only needs to happen once since the subject info is the same for everyone.

        Parameters
        ----------
        subjects : dict
            The JSON containing the subject info.

        Returns
        -------
        None

        """
        for subject in subjects['data']:
            character_image = None

            # Get an easily usable image (PNG) instead of a vector.
            if subject['object'] == 'radical' and subject['data'][
                    'characters'] is None:
                for image in subject['data']['character_images']:
                    if image['content_type'] == 'image/png':
                        character_image = image['url']
                        break

            sbjt = Subject()
            sbjt.id = subject['id']
            sbjt.level = subject['data']['level']
            sbjt.type = subject['object']
            sbjt.image_url = character_image
            sbjt.characters = subject['data']['characters'] or '[Radical]'
            database.session.add(sbjt)
Ejemplo n.º 2
0
def init_subjects():
    for sg in list(C_SubjectGroup):
        saved_subject_group = SubjectGroup.query.filter_by(type=sg.name).first()
        if saved_subject_group is None:
            add_subject_group = SubjectGroup()
            add_subject_group.type = sg.name
            add_subject_group.name = sg.value
            db.session.add(add_subject_group)
            db.session.flush()
            saved_subject_group = add_subject_group
        for subj in C_SubjectGroup.get_subjects(saved_subject_group.type):
            saved_subject = Subject.query.filter_by(type=subj.name).first()
            if saved_subject is None:
                add_subject = Subject()
                add_subject.type = subj.name
                add_subject.name = subj.value
                add_subject.subject_group_id = saved_subject_group.id
                db.session.add(add_subject)
    db.session.commit()