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)
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()