added bulk_import script + fixed TRAIT model
This commit is contained in:
		
							parent
							
								
									0a79c0579f
								
							
						
					
					
						commit
						a8048d8366
					
				
							
								
								
									
										65
									
								
								bulkData.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								bulkData.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | |||||||
|  | rooms: | ||||||
|  |   livingRoom: | ||||||
|  |     EN: "the living room" | ||||||
|  |     FR: "le salon" | ||||||
|  |   kitchen: | ||||||
|  |     EN: "the kitchen" | ||||||
|  |     FR: "La couisine >:(" | ||||||
|  | 
 | ||||||
|  | questions: | ||||||
|  |   where: | ||||||
|  |     text: | ||||||
|  |       - FR: "Ou étais tu ?" | ||||||
|  |       - FR: "Where were you ?" | ||||||
|  |   withwho: | ||||||
|  |     text: | ||||||
|  |       - FR: "Avec qui étais tu ?" | ||||||
|  |       - EN: "Who were you with ?" | ||||||
|  | 
 | ||||||
|  | traits: | ||||||
|  |   happy: | ||||||
|  |     name: | ||||||
|  |       FR: "Heureux" | ||||||
|  |       EN: "Happy" | ||||||
|  |     description: | ||||||
|  |       FR: "Une description" | ||||||
|  |       EN: "Some description" | ||||||
|  |   sad: | ||||||
|  |     name: | ||||||
|  |       FR: "Malheureux" | ||||||
|  |       EN: "sad" | ||||||
|  |     description: | ||||||
|  |       FR: "Une description 2" | ||||||
|  |       EN: "Some description 2" | ||||||
|  | 
 | ||||||
|  | npc: | ||||||
|  |   diva: | ||||||
|  |     name: | ||||||
|  |       FR: "La diva" | ||||||
|  |       EN: "The diva" | ||||||
|  |     reactions: | ||||||
|  |       neutral: | ||||||
|  |         img: "local/files/diva/neutral.png" | ||||||
|  |       happy: | ||||||
|  |         img: "local/files/diva/happy.png" | ||||||
|  |       sad: | ||||||
|  |         img: "local/files/diva/sad.png" | ||||||
|  |     answers: | ||||||
|  |       withwho: | ||||||
|  |         - EN: "I was in {ROOM}" | ||||||
|  |         - FR: "J'étais dans {ROOM}" | ||||||
|  |   agent: | ||||||
|  |     name: | ||||||
|  |       FR: "L'agent" | ||||||
|  |       EN: "The agent" | ||||||
|  |     reactions: | ||||||
|  |       neutral: | ||||||
|  |         img: "local/files/agent/neutral.png" | ||||||
|  |       sad: | ||||||
|  |         img: "local/files/agent/happy/1.png" | ||||||
|  | 
 | ||||||
|  |     answers: | ||||||
|  |       where: | ||||||
|  |         - EN: "I was in {ROOM}" | ||||||
|  |         - FR: "J'étais dans la salle {ROOM}" | ||||||
|  |         - EN: "{ROOM} reminds me of my travls" | ||||||
							
								
								
									
										152
									
								
								bulk_import.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								bulk_import.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,152 @@ | |||||||
|  | 
 | ||||||
|  | import argparse | ||||||
|  | import yaml | ||||||
|  | from dotenv import load_dotenv | ||||||
|  | load_dotenv() | ||||||
|  | from sqlalchemy.orm import sessionmaker | ||||||
|  | from truthinquiry.ext.database.models import * | ||||||
|  | from truthinquiry.ext.database.sa import engine | ||||||
|  | 
 | ||||||
|  | Session = sessionmaker(bind=engine) | ||||||
|  | session = Session() | ||||||
|  | 
 | ||||||
|  | # full reset .w. | ||||||
|  | Base.metadata.drop_all(engine) | ||||||
|  | Base.metadata.create_all(engine) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class LocaleManager(): | ||||||
|  |     def __init__(self): | ||||||
|  |         self.used_lids = [0] | ||||||
|  |         [self.used_lids.append(locale.TEXT_ID) for locale in session.query(Locale).all()] | ||||||
|  | 
 | ||||||
|  |     def get_unused_lid(self): | ||||||
|  |         new_lid = max(self.used_lids) + 1 | ||||||
|  |         self.used_lids.append(new_lid) | ||||||
|  |         return new_lid | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def bulk_import(data): | ||||||
|  | 
 | ||||||
|  |     # Data list that will be commited to the db | ||||||
|  |     LID_LIST = [] | ||||||
|  |     TRAIT_LIST = [] | ||||||
|  |     REACTION_LIST = [] | ||||||
|  |     QUESTIONS_LIST = [] | ||||||
|  |     ANSWER_LIST = [] | ||||||
|  |     NPC_LIST = [] | ||||||
|  |     ROOMS_LIST = [] | ||||||
|  |      | ||||||
|  |     # helper list to simplify | ||||||
|  |     trait_names = {} | ||||||
|  |     lm = LocaleManager() | ||||||
|  |     getid = lm.get_unused_lid | ||||||
|  | 
 | ||||||
|  |     # Questions | ||||||
|  | 
 | ||||||
|  |     # Where type questions | ||||||
|  | 
 | ||||||
|  |     question_type_zero = Question(0, 0, getid()) | ||||||
|  |     QUESTIONS_LIST.append(question_type_zero) | ||||||
|  | 
 | ||||||
|  |     question_type_one = Question(0, 1, getid()) | ||||||
|  |     QUESTIONS_LIST.append(question_type_zero) | ||||||
|  | 
 | ||||||
|  |     questions = data["questions"] | ||||||
|  |     # handle where type quetions | ||||||
|  |     for question in questions["where"]["text"]: | ||||||
|  |         lang = list(question.keys())[0] | ||||||
|  |         text = list(question.values())[0] | ||||||
|  |         LID_LIST.append(Locale(question_type_zero.TEXT_LID, lang, text)) | ||||||
|  | 
 | ||||||
|  |     # handle with who type quetions | ||||||
|  |     for question in questions["withwho"]["text"]: | ||||||
|  |         lang = list(question.keys())[0] | ||||||
|  |         text = list(question.values())[0] | ||||||
|  |         LID_LIST.append(Locale(question_type_zero.TEXT_LID, lang, text)) | ||||||
|  | 
 | ||||||
|  |     # Traits | ||||||
|  |     traits = data["traits"] | ||||||
|  |     for trait in traits.values(): | ||||||
|  |         # create the new trait | ||||||
|  |         new_trait = Trait(0,getid(), getid()) | ||||||
|  | 
 | ||||||
|  |         for lang in trait["name"]: | ||||||
|  |             LID_LIST.append(Locale(new_trait.NAME_LID, | ||||||
|  |                             lang, trait["name"][lang])) | ||||||
|  |             trait_names[trait["name"][lang]] = new_trait.TRAIT_ID | ||||||
|  | 
 | ||||||
|  |         for lang in trait["description"]: | ||||||
|  |             LID_LIST.append(Locale(new_trait.DESC_LID, lang, | ||||||
|  |                             trait["description"][lang])) | ||||||
|  | 
 | ||||||
|  |         TRAIT_LIST.append(new_trait) | ||||||
|  | 
 | ||||||
|  |     # Npcs | ||||||
|  |     npcs = data["npc"] | ||||||
|  |     for npc in npcs.values(): | ||||||
|  |         new_npc = Npc(0, getid()) | ||||||
|  | 
 | ||||||
|  |         # handle the names | ||||||
|  |         for lang in npc["name"]: | ||||||
|  |             LID_LIST.append(Locale(new_npc.NAME_LID, lang, npc["name"][lang])) | ||||||
|  | 
 | ||||||
|  |         for reaction in npc["reactions"]: | ||||||
|  |             if reaction in list(trait_names.keys()): | ||||||
|  |                 new_reaction = Reaction(0,new_npc.NPC_ID, trait_names[reaction]) | ||||||
|  |                 REACTION_LIST.append(new_reaction) | ||||||
|  |         for question_type in npc["answers"]: | ||||||
|  |             question_type_id = 0 if question_type == "where" else 1 | ||||||
|  | 
 | ||||||
|  |             new_answer = Answer(0, question_type_id, new_npc.NPC_ID, getid()) | ||||||
|  |             ANSWER_LIST.append(new_answer) | ||||||
|  | 
 | ||||||
|  |             for answer in npc["answers"][question_type]: | ||||||
|  |                 lang = list(answer.keys())[0] | ||||||
|  |                 text = list(answer.values())[0] | ||||||
|  |                 LID_LIST.append(Locale(new_answer.TEXT_LID, lang, text)) | ||||||
|  | 
 | ||||||
|  |         NPC_LIST.append(new_npc) | ||||||
|  | 
 | ||||||
|  |     # rooms | ||||||
|  |     rooms = data["rooms"] | ||||||
|  |     for room in rooms.values(): | ||||||
|  |         new_room = Place(0,getid()) | ||||||
|  |         for lang in room: | ||||||
|  |             LID_LIST.append(Locale(new_room.NAME_LID, lang, room[lang])) | ||||||
|  |         ROOMS_LIST.append(new_room) | ||||||
|  |      | ||||||
|  |     for text in LID_LIST: | ||||||
|  |         print("Locale : "+str(text)) | ||||||
|  |         session.add(text) | ||||||
|  |         session.commit() | ||||||
|  |     for question in QUESTIONS_LIST: | ||||||
|  |         print("Question : "+str(question)) | ||||||
|  |         session.add(question) | ||||||
|  |         session.commit() | ||||||
|  |     for trait in TRAIT_LIST: | ||||||
|  |         print("Trait : "+ str(trait)) | ||||||
|  |         session.add(trait) | ||||||
|  |         session.commit() | ||||||
|  |     for npc in NPC_LIST: | ||||||
|  |         print("Npc : "+ str(npc)) | ||||||
|  |         session.add(npc) | ||||||
|  |         session.commit() | ||||||
|  |     for reaction in REACTION_LIST: | ||||||
|  |         print("Reaction : " + str(reaction)) | ||||||
|  |         session.add(reaction) | ||||||
|  |         session.commit() | ||||||
|  |     for answer in ANSWER_LIST: | ||||||
|  |         print("Answer : "+ str(answer)) | ||||||
|  |         session.add(answer) | ||||||
|  |         session.commit() | ||||||
|  |     for room in ROOMS_LIST: | ||||||
|  |         print("Room : "+str(room)) | ||||||
|  |         session.add(room) | ||||||
|  |         session.commit() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | file = open("bulkData.yml", "r") | ||||||
|  | 
 | ||||||
|  | bulk_import(yaml.load(file, yaml.Loader)) | ||||||
| @ -116,9 +116,10 @@ class Trait(Base): | |||||||
|     Desc = relationship("Locale",foreign_keys=[DESC_LID]) |     Desc = relationship("Locale",foreign_keys=[DESC_LID]) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def __init__(self, TRAIT_ID, NAME_LID): |     def __init__(self, TRAIT_ID, NAME_LID, DESC_LID): | ||||||
|         self.TRAIT_ID = TRAIT_ID |         self.TRAIT_ID = TRAIT_ID | ||||||
|         self.NAME_LID = NAME_LID |         self.NAME_LID = NAME_LID | ||||||
|  |         self.DESC_LID = DESC_LID | ||||||
| 
 | 
 | ||||||
|     def __str__(self) -> str: |     def __str__(self) -> str: | ||||||
|         return f"{self.TRAIT_ID} {self.NAME_LID}" |         return f"{self.TRAIT_ID} {self.NAME_LID}" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user