def _doPost(self, dataObject): if "name" and "game" and "photo" in dataObject: try: GameMapper = GM.GameMapper() if dataObject["game"] is not None and str(dataObject["game"]).isdigit(): # Get the user by ID game = GameMapper.find(str(dataObject["game"])) if game is None: raise NotFound("The specified player type does not exist.") else: raise BadRequest("Argument provided for this player type is invalid.") print "GAME GOOD "+str(game) PlayerMapper = PM.PlayerMapper() player = Player() player.setName(dataObject["name"]) player.setGame(game) player.setPhoto(dataObject["photo"]) player.setUser(self.user) PlayerMapper.insert(player) print "PLAYER GOOD "+str(player) GameMapper.joinGame(self.user, player) return self._response(player.dict(3), CODE.CREATED) except mdb.DatabaseError, e: raise ServerError("Unable to search the user database (%s)" % e.args[1])
def add_member(): """ Adds a member to a team """ content = request.json try: if content['type'] == 'manager': member1 = Manager(content['f_name'], content['l_name'], content['address'], content['phone'], content['position'], content['salary'], content['type']) num = member_mgr.add_member(member1) response = app.response_class( response="New member ID: %s" % (str(num)), status=200 ) elif content['type'] == 'player': member1 = Player(content['f_name'], content['l_name'], content['address'], content['phone'], content['position'], content['jersey_number'], content['wage'], content["type"]) num = member_mgr.add_member(member1) response = app.response_class( response="New member ID: %s" % (str(num)), status=200 ) else: raise ValueError('JSON object invalid') except ValueError as e: response = app.response_class( response=str(e), status=400 ) return response
def update_member(member_id): """ Updates a member on a team """ content = request.json try: if content["type"] == "manager": member1 = Manager(content['f_name'], content['l_name'], content['address'], content['phone'], content['position'], content['salary'], content["type"]) member1.member_id = member_id member_mgr.update(member1) response = app.response_class( response="ok", status=200 ) return response elif content["type"] == "player": member1 = Player(content['f_name'], content['l_name'], content['address'], content['phone'], content['position'], content['jersey_number'], content['wage'], content["type"]) member1.member_id = member_id member_mgr.update(member1) response = app.response_class( response="ok", status=200 ) return response except KeyError: print("Wrong JSON format") except ValueError as e: response = app.response_class( response=str(e), status=400 ) return response
def get_players_list(self, tournament): """Get the tournament's players list from DB""" players = list() for player in tournament["players"]: player = Player(player["name"], player["first_name"], player["birthday"], player["gender"], player["elo"], player["score"]) players.append(player) return players
def enter_players(self): """Add 8 players to tournament's players list getting informations from the user from player_view""" for i in range(8): name = get_player_name() first_name = get_player_first_name() birthday = get_player_birthday() gender = get_player_gender() elo = get_player_elo() player = Player(name, first_name, birthday, gender, elo) self.tournament.add_player(player)
def test_get_member(self): """ 030A - valid Soccer Team member return by id """ manager = Manager('M2.F NAME', 'M2.L NAME', 'M2.ADDR', 'M2.PHONE', 'M2.POSITION', 60000, "manager") player = Player('P1.F NAME', 'P1.L NAME', 'P1.ADDR', 'P1.PHONE', 'P1.POSITION', 41, 50.1, 'player') id = self.member_mgr.add_member(manager) temp_student = self.member_mgr.get_member(id) self.assertEqual(manager.member_id, temp_student.member_id) id = self.member_mgr.add_member(player) temp_student = self.member_mgr.get_member(id) self.assertEqual(player.member_id, temp_student.member_id)
def test_add_member(self): """ 020A - Successfully add member to soccer team """ manager = Manager('M2.F NAME', 'M2.L NAME', 'M2.ADDR', 'M2.PHONE', 'M2.POSITION', 60000, "manager") player = Player('P1.F NAME', 'P1.L NAME', 'P1.ADDR', 'P1.PHONE', 'P1.POSITION', 41, 50.1, 'player') self.member_mgr.add_member(manager) all_points = self.member_mgr.get_team_members() self.assertEqual(len(all_points), 1) self.member_mgr.add_member(player) all_points = self.member_mgr.get_team_members() self.assertEqual(len(all_points), 2)
def get_member(self, member_id): """ Returns the member object that matches the given ID """ Player._validate_int_input('Member Id', member_id) session = self._db_session() existing_member = session.query(Player).filter( Player.member_id == member_id).first() existing_member2 = session.query(Manager).filter( Manager.member_id == member_id).first() print(existing_member) print(existing_member2) session.close() if existing_member is None and existing_member2 is None: raise ValueError('Member does not exist') if existing_member.type == 'player': return existing_member elif existing_member2.type == 'manager': return existing_member2 else: raise ValueError('Member does not exist')
def test_get_team_members(self): """ 040A - Successful Soccer Team List Member Retrieval """ manager = Manager('M2.F NAME', 'M2.L NAME', 'M2.ADDR', 'M2.PHONE', 'M2.POSITION', 60000, "manager") player = Player('P1.F NAME', 'P1.L NAME', 'P1.ADDR', 'P1.PHONE', 'P1.POSITION', 41, 50.1, 'player') members = self.member_mgr.get_team_members() self.assertEqual(len(members), 0) self.member_mgr.add_member(manager) self.member_mgr.add_member(player) students = self.member_mgr.get_team_members() self.assertEqual(len(students), 2)
def test_delete_member(self): """ 070A - Successfully delete member in soccer team""" manager = Manager('M2.F NAME', 'M2.L NAME', 'M2.ADDR', 'M2.PHONE', 'M2.POSITION', 60000, "manager") player = Player('P1.F NAME', 'P1.L NAME', 'P1.ADDR', 'P1.PHONE', 'P1.POSITION', 41, 50.1, 'player') self.assertEqual(len(self.member_mgr.get_team_members()), 0, "There should be no members in the list") self.member_mgr.add_member(player) self.assertEqual(len(self.member_mgr.get_team_members()), 1, "There should be 1 member in the list") self.member_mgr.delete(player.member_id) self.assertEqual(len(self.member_mgr.get_team_members()), 0, "There should be no members in the list") """ Manager delete """ self.assertEqual(len(self.member_mgr.get_team_members()), 0, "There should be no members in the list") self.member_mgr.add_member(manager) self.assertEqual(len(self.member_mgr.get_team_members()), 1, "There should be 1 member in the list") self.member_mgr.delete(manager.member_id) self.assertEqual(len(self.member_mgr.get_team_members()), 0, "There should be no members in the list")
def LoadConfigPlayer(player): conf = configparser.ConfigParser() conf.read(r"..\config\player.config") player = Player(conf.getint(player, 'player_strength'), conf.getint(player, 'player_agile'), conf.getint(player, 'player_intelligence'), conf.getint(player, 'player_physique'), conf.get(player, 'player_name'), conf.getint(player, 'player_blood'), conf.getint(player, 'player_mana'), conf.getint(player, 'player_attack'), conf.getint(player, 'player_speed'), conf.getint(player, 'player_criticalChance'), conf.getint(player, 'player_defenses'), conf.getint(player, 'player_experience'), conf.getint(player, 'player_level')) # 初始化 player.attack = 0 player.blood = 0 player.mana = 0 player.speed = 0 player.defenses = 0 return player
def deserializer(self, tournament): """Deserializes tournament with DB informations and recreats tournament, round, match and player in class instances. Update player's score and opponents list""" self.tournament = Tournament( name=tournament["name"], place=tournament["place"], start=tournament["start"], end=tournament["end"], time_control=tournament["time_control"], ) for player in tournament["players"]: new_player = Player(player["name"], player["first_name"], player["birthday"], player["gender"], player["elo"]) new_player.set_score(player["score"]) new_player.set_opponents(player["opponents"]) self.tournament.add_player(new_player) for round in tournament["rounds"]: new_round = Round(round["number"], round["start"], round["end"]) for match in round["matchs"]: player1 = self.get_player(match["player1"]["name"], match["player1"]["first_name"], match["player1"]["birthday"], match["player1"]["gender"], match["player1"]["elo"], match["player1"]["score"]) player2 = self.get_player(match["player2"]["name"], match["player2"]["first_name"], match["player2"]["birthday"], match["player2"]["gender"], match["player2"]["elo"], match["player2"]["score"]) new_match = Match(player1, player2) new_match.set_score(match["score_player1"], match["score_player2"]) new_round.add_reload_match(new_match) self.tournament.add_round(new_round)
def launch(): # Creation d'un joueur au centre de la map player1 = Player(1, int(1024 / 2) - 40, int(768 / 2) - 40, 100) player_position = (player1.get_x(), player1.get_y()) quantitefuel = player1.get_fuel() #Creation d'une game game1 = Game(0, 0) # score et time #Creation plateforme plateformes = game1.generatePlateformes().copy() #Creation objet powerups = game1.generate_objet().copy() # Test des evenements pygame.init() screen = pygame.display.set_mode((1024, 768), RESIZABLE) # Background fond = pygame.image.load( "../Model/data/map_background.png").convert() #map jusqu'a 10000px defilmap = -14000 # Chargement et collage du personnage # convert alpha pour la transparance du png perso = pygame.image.load( "../Model/data/cosmonaut-idle-100.png") #image du perso de base background_objects = [[0.25, [120, 10, 70, 400]], [0.25, [280, 30, 40, 400]], [0.5, [30, 40, 40, 400]], [0.5, [130, 90, 100, 400]], [0.5, [300, 80, 120, 400]]] ## ici variables pour retenir en mémoire l’état des touches #variable deplacement droite = False gauche = False haut = False bas = False fall = True boost = False fuelHit = False niveauFall = 0 fallspeed = game1.get_diffculty_set() listekeypressed = [] fall = True # de base le perso chute #timeinsecond = int(time.time() % 60) timefuel = 0 nbboucle = 0 boucle = 0 true_scroll = [0, 0] launched = True powerup = False #powerup actif ou non propulsion = pygame.image.load("../Model/data/air_propulsion.png") estSurPlateforme = False new_game = True def crash(screen): crash = True while crash: text = pygame.font.Font('freesansbold.ttf', 75) carb = text.render('Game Over', True, (0, 0, 0)) screen.blit(carb, (295, 300)) for event in pygame.event.get(): # print(event) if event.type == pygame.KEYDOWN: crash = False pygame.display.flip() while launched: if (new_game): time_var = T.time() new_game = False fall = True # Pour le faire rechuter quand il quitte la plateforme for event in pygame.event.get(): if event.type == pygame.QUIT: launched = False elif event.type == pygame.KEYDOWN: #Si une touche est enfoncée listekeypressed.append( event.key) #insertion des touches enfoncées dans la liste if pygame.K_RIGHT in listekeypressed: perso = pygame.image.load( "../Model/data/cosmonaut-idle2-100.png") #Sprite droit droite = True if estSurPlateforme == True: perso = pygame.image.load( "../Model/data/cosmonaut-march-100.png") elif pygame.K_LEFT in listekeypressed: perso = pygame.image.load( "../Model/data/cosmonaut-idle-100-gauche.png") gauche = True if estSurPlateforme == True: perso = pygame.image.load( "../Model/data/cosmonaut-march-100-gauche.png") if pygame.K_UP in listekeypressed: perso = pygame.image.load( "../Model/data/cosmonaut-jump-wind-100-gauche.png") haut = True if estSurPlateforme == False: fall = True if pygame.K_LEFT in listekeypressed: perso = pygame.image.load( "../Model/data/cosmonaut-idle-100-gauche.png") elif pygame.K_RIGHT in listekeypressed: perso = pygame.image.load( "../Model/data/cosmonaut-idle2-100.png") else: perso = pygame.image.load( "../Model/data/cosmonaut-jump-100.png") elif pygame.K_DOWN in listekeypressed: perso = pygame.image.load( "../Model/data/cosmonaut-jump-100.png") bas = True elif event.type == pygame.KEYUP: #Si une touche est relachée if len(listekeypressed) != 0: listekeypressed.remove( event.key) ## supression de la touche relâchée if event.key == pygame.K_RIGHT: droite = False elif event.key == pygame.K_LEFT: gauche = False elif event.key == pygame.K_UP: haut = False elif event.key == pygame.K_DOWN: bas = False # calcul de la surface de l'image du player min_x = int(player1.get_x()) max_x = int(player1.get_x() + 65) min_y = int(player1.get_y()) max_y = int(player1.get_y() + 90) #Gestion des bords de l'ecran # Droite / Gauche if max_x >= 1060: droite = False elif min_x <= 0: gauche = False # Haut / Bas if min_y <= 5: haut = False elif max_y >= 768: launched = False file_highscore = open("../Model/highscore.txt", "a") file_highscore.write(str(game1.get_score()) + "\n") file_highscore.close() #pygame.mixer.init() #pygame.mixer.music.load('../Model/data/game_over.mp3') #pygame.mixer.music.play(0) effect = pygame.mixer.Sound('../Model/data/gameover.wav') effect.play() crash(screen) new_game = True # Gestion collision player-plateformes for plateforme in plateformes: # surface de la plateforme courante min_xplat = int(plateforme.get_x()) max_xplat = int(plateforme.get_x() + plateforme.get_long()) min_yplat = int(plateforme.get_y()) max_yplat = int(plateforme.get_y() + plateforme.get_larg()) if min_xplat <= max_x and min_x <= max_xplat and powerup == False: # Est sur la longueur de la plateforme if (max_yplat - 5) <= min_y <= (max_yplat + 5): # collision par le bas haut = False player_position = player1.movePositCourante( 0, fallspeed) # descends à la vitesse des plateformes if plateforme.get_type() == 'teleportation': effect = pygame.mixer.Sound( '../Model/data/telepotation2.wav') effect.play() player_position = player1.movePositTeleportation() if (min_yplat - 10) <= max_y <= (min_yplat + 10): # colisation par en haut if plateforme.get_type() == 'poison': launched = False file_highscore = open("../Model/highscore.txt", "a") file_highscore.write(str(game1.get_score()) + "\n") file_highscore.close() effect = pygame.mixer.Sound( '../Model/data/gameover.wav') effect.play() crash(screen) new_game = True elif plateforme.get_type() == 'teleportation': effect = pygame.mixer.Sound( '../Model/data/telepotation2.wav') effect.play() player_position = player1.movePositTeleportation() elif plateforme.get_type() == 'CarburantMoins': player1.remove_fuel() fuelHit = True bas = False fall = False player_position = player1.movePositCourante( 0, fallspeed) # descends à la vitesse des plateformes # Rechargement du fuel player1.add_fuel(0.2) quantitefuel = int(player1.get_fuel()) if min_y <= min_yplat and max_y >= max_yplat and powerup == False: # Est sur la largeur de la plateforme if (max_xplat - 5) <= min_x <= ( max_xplat + 5 ): # collision par la droite (petite marge pour eviter les bug de traversement) gauche = False if (min_xplat - 5) <= max_x <= (min_xplat + 5): # collision par la gauche droite = False if min_y <= min_yplat and max_y >= max_yplat and powerup == False and min_xplat <= max_x and min_x <= max_xplat: # Il est sur une plateforme fall = False estSurPlateforme = True else: estSurPlateforme = False # Re-collage du fond et du player defilmap += 1 # defilement de la map screen.blit(fond, (0, defilmap)) # recollage map # Re-collage defilmap += 1 #defilement de la map screen.blit(fond, (0, defilmap)) if defilmap == 0: screen.fill((0, 0, 0)) screen.blit(perso, player_position) if haut == True: #Affichage de la propulsion (rajouter le son de la propulsion ici) screen.blit(propulsion, ((min_x - 15), max_y)) # Fuel timefuel += 1 if ( timefuel % 20 ) == 0: #Retourne la duree depuis que pygame.init a été appeler en ms quantitefuel -= 1 #diminue de 1 le fuel à chaque boucle modulo 20 du timefuel player1.set_fuel(quantitefuel) if quantitefuel <= 0: launched = False file_highscore = open("../Model/highscore.txt", "a") file_highscore.write(str(game1.get_score()) + "\n") file_highscore.close() effect = pygame.mixer.Sound('../Model/data/gameover.wav') effect.play() crash(screen) new_game = True rect = pygame.Rect(740, 677, quantitefuel * 2, 25) pygame.draw.rect(screen, (255, 0, 0), rect) text = pygame.font.Font('freesansbold.ttf', 20) fuel = text.render('Carburant : {}'.format(int(player1.get_fuel())), True, (0, 0, 0)) screen.blit(fuel, (750, 680)) #Fuel reduit alert if fuelHit == True: text = pygame.font.Font('freesansbold.ttf', 85) carb = text.render('-75', True, (255, 0, 0)) screen.blit(carb, (900, 650)) fuelHit = False # Message alerte fuel if player1.get_fuel() <= 30: text = pygame.font.Font('freesansbold.ttf', 35) carb = text.render('Alerte ! Alerte ! Niveau carburant bas', True, (255, 0, 0)) screen.blit(carb, (195, 165)) # Score game1.set_time(int(pygame.time.get_ticks() / 1000)) #time in ms depuis pygame.init() if (timefuel % 50) == 0: # ajout de score vitesse de base game1.add_score(1) text = pygame.font.Font('freesansbold.ttf', 60) text2 = pygame.font.Font('freesansbold.ttf', 15) time_end = T.time() if niveauFall < 6: score = text.render('Score : {}'.format(game1.get_score()), True, (0, 0, 0)) time = text2.render( 'Temps : {} secondes'.format(int(time_end - time_var)), True, (0, 0, 0)) else: score = text.render('Score : {}'.format(game1.get_score()), True, (255, 255, 255)) time = text2.render( 'Temps : {} secondes'.format(int(time_end - time_var)), True, (255, 255, 255)) screen.blit(score, (15, 20)) screen.blit(time, (20, 70)) # Collage des plateformes sur l'ecran timesprite = 1000 for plateforme in plateformes: if plateforme.get_y() >= 0 and plateforme.get_y() <= 768: if (plateforme.get_type() == 'poison'): if plateforme.get_long() == 50: if (boucle % timesprite) == 0: pique = pygame.image.load( "../Model/data/plateformes/pike_50_1.png") else: pique = pygame.image.load( "../Model/data/plateformes/pike_50_2.png") elif plateforme.get_long() == 100: if (boucle % timesprite) == 0: pique = pygame.image.load( "../Model/data/plateformes/pike_100_1.png") else: pique = pygame.image.load( "../Model/data/plateformes/pike_100_2.png") elif plateforme.get_long() == 150: if (boucle % timesprite) == 0: pique = pygame.image.load( "../Model/data/plateformes/pike_150_1.png") else: pique = pygame.image.load( "../Model/data/plateformes/pike_150_2.png") screen.blit(pique, (plateforme.get_x(), plateforme.get_y())) elif (plateforme.get_type() == 'teleportation'): if plateforme.get_long() == 50: if (boucle % timesprite) == 0: portal = pygame.image.load( "../Model/data/plateformes/portal_50_1.png") else: portal = pygame.image.load( "../Model/data/plateformes/portal_50_2.png") elif plateforme.get_long() == 100: if (boucle % timesprite) == 0: portal = pygame.image.load( "../Model/data/plateformes/portal_100_1.png") else: portal = pygame.image.load( "../Model/data/plateformes/portal_100_2.png") elif plateforme.get_long() == 150: if (boucle % timesprite) == 0: portal = pygame.image.load( "../Model/data/plateformes/portal_150_1.png") else: portal = pygame.image.load( "../Model/data/plateformes/portal_150_3.png") screen.blit(portal, (plateforme.get_x(), plateforme.get_y())) elif (plateforme.get_type() == 'CarburantMoins'): if plateforme.get_long() == 50: if (boucle % timesprite) == 0: fire = pygame.image.load( "../Model/data/plateformes/fire_50_1.png") else: fire = pygame.image.load( "../Model/data/plateformes/fire_50_2.png") elif plateforme.get_long() == 100: if (boucle % timesprite) == 0: fire = pygame.image.load( "../Model/data/plateformes/fire_100_1.png") else: fire = pygame.image.load( "../Model/data/plateformes/fire_100_2.png") elif plateforme.get_long() == 150: if (boucle % timesprite) == 0: fire = pygame.image.load( "../Model/data/plateformes/fire_150_1.png") else: fire = pygame.image.load( "../Model/data/plateformes/fire_150_2.png") screen.blit(fire, (plateforme.get_x(), plateforme.get_y())) else: if plateforme.get_long() == 50: cloud = pygame.image.load( "../Model/data/plateformes/cloud_50.png") elif plateforme.get_long() == 100: cloud = pygame.image.load( "../Model/data/plateformes/cloud_100.png") elif plateforme.get_long() == 150: cloud = pygame.image.load( "../Model/data/plateformes/cloud_150.png") screen.blit(cloud, (plateforme.get_x(), plateforme.get_y())) #Chute des plateformes if plateforme.get_y() <= 800: plateforme.set_position(0, fallspeed) # screen.blit(perso, player_position) #Augmentation de difficulte if timefuel % 500 == 0: niveauFall += 1 fallspeed += 0.25 print(niveauFall) #Power up for objet in powerups: if objet.get_y() >= 0 and objet.get_y() <= 768: if (objet.get_name() == "carburant"): # pygame.draw.circle(screen, (255, 0, 0), (objet.get_x(), objet.get_y()), 40, False) fuelimg = pygame.image.load("../Model/data/fuel.png") screen.blit(fuelimg, (objet.get_x(), objet.get_y())) elif (objet.get_name() == "bouteille"): # pygame.draw.circle(screen, (128, 128, 128), (objet.get_x(), objet.get_y()), 20) bottleimg = pygame.image.load( "../Model/data/oxygen_tank.png") screen.blit(bottleimg, (objet.get_x(), objet.get_y())) # Verif si le player est sur le power up #surface de l'objet min_yobj = int(objet.get_y() - 20) # 20 == rayon du cercle max_yobj = int(objet.get_y() + 20) min_xobj = int(objet.get_x() - 20) max_xobj = int(objet.get_x() + 20) if min_yobj <= max_y and max_yobj >= min_y: #sur la largeur de l'objet if min_xobj <= max_x and max_xobj >= min_x: #Sur la longueur de l'objet # L'astronaute est sur l'objet if (objet.get_name() == "carburant" ): #Action des powerups effect = pygame.mixer.Sound( '../Model/data/bouteille.wav') effect.play() player1.add_fuel(objet.get_quantite()) quantitefuel = player1.get_fuel() if (objet.get_name() == "bouteille"): effect = pygame.mixer.Sound( '../Model/data/boost2.wav') effect.play() fallspeed = fallspeed + 4 fall = False powerup = True game1.add_score(40) nbboucle = boucle powerups.remove(objet) #Desactivation de l'effet du powerup if nbboucle <= ( boucle - 150 ) and powerup == True: # On remet la vitesse normal apres 200 boucles fallspeed = fallspeed - 4 fall = True powerup = False #chute des objets if objet.get_y() <= 800: objet.set_position(0, fallspeed) ## Traitement des deplacements # Droite / Gauche if droite: player_position = player1.movePositCourante(3.75, 0) player_position = player1.movePositCourante(0, 0.25) # chute elif gauche: player_position = player1.movePositCourante(-3.75, 0) player_position = player1.movePositCourante(0, 0.25) # chute # Haut / Bas if haut: if niveauFall == 0 or niveauFall == 1: player_position = player1.movePositCourante(0, -0.50) player_position = player1.movePositCourante(0, -1.5) player_position = player1.movePositCourante(0, -3.5) elif niveauFall == 2 or niveauFall == 3: player_position = player1.movePositCourante(0, -1.5) player_position = player1.movePositCourante(0, -2.5) player_position = player1.movePositCourante(0, -4.25) else: player_position = player1.movePositCourante(0, -2.25) player_position = player1.movePositCourante(0, -2.75) player_position = player1.movePositCourante(0, -4.75) elif bas: player_position = player1.movePositCourante(0, 5) # Chute if fall: if niveauFall == 0: player_position = player1.movePositCourante(0, 2.5) elif niveauFall == 1: player_position = player1.movePositCourante(0, 2.75) elif niveauFall == 2: player_position = player1.movePositCourante(0, 3) elif niveauFall == 3: player_position = player1.movePositCourante(0, 3.25) elif niveauFall == 4: player_position = player1.movePositCourante(0, 3.50) elif niveauFall == 5: player_position = player1.movePositCourante(0, 3.75) elif niveauFall == 6: player_position = player1.movePositCourante(0, 4) elif niveauFall == 7: player_position = player1.movePositCourante(0, 4.25) elif niveauFall == 8: player_position = player1.movePositCourante(0, 5.50) elif niveauFall > 8: player_position = player1.movePositCourante(0, 6) # recollage du pers screen.blit(perso, player_position) # Rafraichissement pygame.display.flip() boucle += 1
def _doCreateObject(self, data): """Builds the kill object using the raw data provided from the database""" from Model.player import Player player_ = Player(data["id"]) gmapper = GameMapper() game_ = gmapper.find(data["game_id"]) # If the game is deleted and the player is still linked, then errors can occur player_.setGame(game_) umapper = UserMapper() user_ = umapper.find(data["user_id"]) if user_ is not None: player_.setUser(user_) player_.setName(data["name"]) player_.setPhoto(data["photo"]) player_.setLat(data["lat"]) player_.setLon(data["lon"]) player_.setScore(data["score"]) player_.setTime(data["time"]) return player_
def players_elo_descending_order(self): """Deserialize players from DB and sort players in elo descending order""" players = Player.players_deserialized() players.sort(reverse=True, key=lambda x: x.elo) for i in players: print("****************************\n", i)
def players_alphabetic_order(self): """Deserialize players from DB and sort players by alphabetic order""" players = Player.players_deserialized() players.sort(key=lambda x: (x.name, x.first_name)) for i in players: print("****************************\n", i)
def _doPost(self, dataObject): if "name" and "game" and "photo" in dataObject: try: GM = GameMapper() if dataObject["game"] is not None and str(dataObject["game"]).isdigit(): # Get the user by ID game = GM.find(str(dataObject["game"])) if game is None: raise NotFound("The specified player type does not exist.") else: raise BadRequest("Argument provided for this player type is invalid.") print "GAME GOOD "+str(game) PM = PlayerMapper() player = Player() player.setName(dataObject["name"]) player.setGame(game) player.setPhoto(dataObject["photo"]) player.setUser(self.user) PM.insert(player) print "PLAYER GOOD "+str(player) return self._response(player.dict(3), CODE.CREATED) except mdb.DatabaseError, e: raise ServerError("Unable to search the user database (%s)" % e.args[1])