class ExportToSqlite (SqliteModel): def __init__ (self,basepath, database): super(ExportToSqlite,self).__init__(basepath) self.database = database self.defaultColorStringFaction = "0,0,255,255" self.nb_heros_inserted = [" ajout de Heros ",0] self.nb_groupes_inserted = [" ajout de Groupes",0] self.nb_kingdom_inserted = [" ajout de Royaumes ",0] self.nb_empire_inserted = [" ajout d' Empires ",0] self.nb_faction_inserted = [" ajout de Factions ",0] self.nb_heros_unchanged= [" unchanged Heros ",0] self.nb_groupes_unchanged= [" unchanged Groupes",0] self.nb_kingdom_unchanged= [" unchanged Royaumes ",0] self.nb_empire_unchanged= [" unchanged Empires ",0] self.nb_faction_unchanged= [" unchanged Factions ",0] def setDefaultValues (self, default_dict): self.defaultValues = default_dict def addFaction (self, faction_name): result = self.database.select("*","gm_faction",True,'name=="'+faction_name+'"') if result.first() == 0 : print ('faction inexistante') attribs = {"name":faction_name,'icon':faction_name+'.png'} self.database.insert("gm_faction",attribs) result = self.database.select("*","gm_faction",False,'name=="'+faction_name+'"') self.nb_faction_inserted[1] = self.nb_faction_inserted[1] + 1 else: print ('faction deja persante') self.nb_empire_unchanged[1] = self.nb_empire_unchanged[1] + 1 return result def addEmpire (self, empire_name,id_faction,empire_color=""): result = self.database.select("*","gm_empire",True,'name=="'+empire_name+'"') if result.first() == 0 : attribs = {"name":empire_name,"ID_faction":id_faction,"icon":str(empire_name)+".png","color":empire_color} self.database.insert("gm_empire",attribs) result = self.database.select("*","gm_empire",True,'name=="'+empire_name+'"') self.nb_empire_inserted[1] = self.nb_empire_inserted[1] + 1 else: self.nb_empire_unchanged[1] = self.nb_empire_unchanged[1] + 1 return result def addKingdom (self, kingdom_name, id_empire): result = self.database.select("*","gm_kingdom",True,'name=="'+kingdom_name+'"') if result.first() == 0 : default_couleur = str(self.defaultValues['kingdom_couleur'][0]) +','+ str(self.defaultValues['kingdom_couleur'][1])+','+str(self.defaultValues['kingdom_couleur'][2])+','+str(self.defaultValues['kingdom_couleur'][3]) attribs = {"name":kingdom_name,"ID_empire":id_empire,"armee":self.defaultValues['kingdom_armee'],"description":self.defaultValues['kingdom_description'],"couleur":default_couleur} self.database.insert("gm_kingdom",attribs) result = self.database.select("*","gm_kingdom",True,'name=="'+kingdom_name+'"') self.nb_kingdom_inserted[1] = self.nb_kingdom_inserted[1] + 1 else: self.nb_kingdom_unchanged[1] = self.nb_kingdom_unchanged[1] + 1 return result def addGroupe(self, group,id_kingdom,id_group_parent=0): #on suppose que chaque groupe a un nom unique pour un royaume donne result = self.database.select("*","gm_groupe",True,'name=="'+group+'" AND ID_kingdom=='+str(id_kingdom)) if result.first() == 0 : attribs = {'name':group,'ID_kingdom':id_kingdom,'description':self.defaultValues['groupe_description'],'color':self.defaultValues['groupe_color'],'rank':self.defaultValues['groupe_rank'],'parent':id_group_parent} self.database.insert("gm_groupe",attribs) result = self.database.select("*","gm_groupe",True,'name=="'+group+'" AND ID_kingdom=='+str(id_kingdom)) print ('add groupe ',group,id_kingdom) self.nb_groupes_inserted[1] = self.nb_groupes_inserted[1] + 1 else: self.nb_groupe_unchanged[1] = self.nb_groupe_unchanged[1] + 1 return result def addHeros (self,heros,id_groupe): #on suppose que chaque heros a un nom unique pour un groupe result = self.database.select("*","gm_perso",True,'name=="'+heros+'" AND ID_groupe=='+str(id_groupe)) if result.first() == 0 : attribs = {'name':heros,'ID_groupe':id_groupe,'description':self.defaultValues['heros_description'],'techniques':self.defaultValues['heros_techniques'],'historique':self.defaultValues['heros_historique'],'latitude':self.defaultValues['heros_latitude'],'longitude':self.defaultValues['heros_longitude'],'place':self.defaultValues['heros_place'],"level":"",'leader':self.defaultValues['heros_level'],'rank':self.defaultValues['heros_rank'],'status':self.defaultValues['heros_status'],'complete':1,'HP':1,'MP':1,'HP_max':1,'MP_max':1,'ATK':0,'DEF':0,'MATK':0,'MATK':0,'AGL':0,'LUCK':0} self.database.insert("gm_perso",attribs) #print ('attribs',attribs) result = self.database.select("*","gm_perso",True,'name=="'+heros+'" AND ID_groupe=='+str(id_groupe)) self.nb_heros_inserted[1] = self.nb_heros_inserted[1] + 1 else: self.nb_heros_unchanged[1] = self.nb_heros_unchanged[1] + 1 return result @staticmethod def hasSubGroup (path): sub_list = os.listdir (path) print ('hasSubGroup',sub_list) if len(sub_list)!= 0 and os.path.isdir(os.path.join(path,sub_list[0])): sub_list2 = os.listdir(os.path.join(path,sub_list[0])) print ('sub_list_2',sub_list2) if os.path.isdir(os.path.join(path,sub_list[0],sub_list2[0])): print ('return true') return True return False def process (self, faction,empire,kingdom): super(ExportToSqlite,self).process(faction,empire,kingdom) self.progress.setLabelText("Export to sqlite") self.progress.setMinimum(0) self.progress.setMaximum(self.total_heros) self.success = False nb_heros = 0 #si la faction n existe pas encore la creer result = self.addFaction (self.faction) result.next() print ('result',result.value("name")) id_faction = result.value("ID") print ('ID faction',id_faction) #si l empire n existe pas encore le creer color = "" empire = self.empire if len(self.empire.split["-"])>=2 : color = self.empire.split["-"][1] empire = self.empire.split["-"][0] result = self.addEmpire(empire,id_faction,color) result.next() id_empire= result.value("ID") print ('ID empire',id_empire) #si le royaume n existe pas encore le creer result = self.addKingdom(self.kingdom,id_empire) result.next() id_kingdom= result.value("ID") print ('ID kingdom',id_kingdom) list_group = list(filter(SqliteModel.isValid,os.listdir (self.fullPath))) for group in list_group : result = self.addGroupe(group,id_kingdom) result.next() id_groupe= result.value("ID") currentPath = os.path.join(self.fullPath,group) if (ExportToSqlite.hasSubGroup(currentPath)): list_sub_group = list(filter(SqliteModel.isValid,os.listdir(currentPath))) id_master_group = id_groupe for sub in list_sub_group : result = self.addGroupe(sub, id_kingdom, id_master_group) result.next() id_groupe= result.value("ID") list_heros = list(filter(SqliteModel.isValid,os.listdir(os.path.join(currentPath,sub)))) for heros in list_heros : self.createDescriptionFile(heros,os.path.join(currentPath,sub,heros)) self.addHeros(heros,id_groupe) nb_heros+=1 self.progress.setValue(nb_heros) else: list_heros = list(filter(SqliteModel.isValid,os.listdir(currentPath))) for heros in list_heros : self.createDescriptionFile(heros,os.path.join(currentPath,heros)) self.success = True self.addHeros(heros,id_groupe) nb_heros+=1 self.progress.setValue(nb_heros) if self.stop == True : break self.progress.setValue(self.total_heros) result_info = [self.nb_faction_inserted,self.nb_empire_inserted,self.nb_kingdom_inserted,self.nb_groupes_inserted,self.nb_heros_inserted,self.nb_faction_unchanged,self.nb_empire_unchanged,self.nb_kingdom_unchanged,self.nb_groupes_unchanged,self.nb_heros_unchanged] self.showResultInfos(result_info) def createDescriptionFile(self, name, path_file): file_name = "description.html" file = open(os.path.join(Config().instance.settings.value("global/resources_path"),"template_profil.html")) ddd = file.read() print ('ooooo',type(ddd)) ddd = ddd.replace("tname",name) print ('mmmm',ddd) chemin = os.path.join(path_file,file_name) if (not os.path.exists(chemin)): self.textEdit = QTextEdit() self.textEdit.setText(ddd) writer = QTextDocumentWriter(chemin) success = writer.write(self.textEdit.document())