def add_master_contender(self, game, user, word): if not game.is_master_selecting: raise GameError(u'Сейчас не время выбора ведущего') if game.is_user_already_master_contender(user): raise GameError(u'Вы уже предложили свое слово') self.check_word_is_valid(word) game.add_master_contender(user, word) connection_manager.emit_for_user_in_room(user.id, game.room_id, 'game_word_accepted', word=word) connection_manager.emit_for_room(game.room_id, 'master_contender', user_id=user.id)
def break_contact(self, user, game, contact_id, word): self.check_callbacks() contact = self.find_active_contact(contact_id, game) if user != game.master: raise GameError(u'Только ведущий может обрывать контакт') if not contact.is_active: raise GameError(u'Контакт уже не активен') if word == game.guessed_word: raise GameError(u'Нельзя пытаться разорвать контакт загаданным вами словом') if contact.is_right_word(word): contact.get_broken() self.persist_contact(contact) self.remove_contact(contact) connection_manager.emit_for_room(game.room_id, 'broken_contact', contact_id=contact_id, user_id=user.id) else: connection_manager.emit_for_user_in_room(user.id, game.room_id, 'unsuccessful_contact_breaking', { 'contact_id' : contact_id })