def loaddb_sessions(filename): """ Populates the database with sessions and session-related relationships from a yml file. Requires loaddb_games and loaddb_users """ sessions = yaml.safe_load(open(filename)) # premier tour de boucle, creation des sessions et des timeslots dico_timeslots = dict() # k=session_yml_id, v=timeslot_object dico_sessions = dict() # k=session_yml_id, v=session_object for id, s in sessions.items(): session_object = Session(nb_players_required=s["nb_players_required"], notifactions_sent=s["notifactions_sent"], confirmed=s["confirmed"], timeout=s["timeout"], archived=s["archived"]) db.session.add(session_object) dico_sessions[id] = session_object timeslot = s["timeslot"] timeslot_object = TimeSlot(beginning=timeslot["beginning"], end=timeslot["end"], day=timeslot["day"]) db.session.add(timeslot_object) dico_timeslots[id] = timeslot_object db.session.commit() # deuxieme tour de boucle, ajout des relations SessionXTimeslot, SessionXGame et SessionXUser for id, s in sessions.items(): session_object = dico_sessions[id] session_object.timeslot_id = dico_timeslots[id].id load_relationship(s, 'session_id', session_object.id, 'games', Use, Game.from_title, 'game_id', ['expected_time'], 'title') load_relationship(s, 'session_id', session_object.id, 'players', Play, User.from_username, 'user_id', ['confirmed', 'won'], 'username') db.session.commit()