Ejemplo n.º 1
0
 def can_join(self, user=None):
     """
         Join in session with different status: ready to play, not ready etc.
          
     """
     if not self.has_free_slots():
         return False
     if user is not None:
         self.set_user(user)
     ''' decrement slots '''
     self.session.available_slots -= 1
     """ check again if session has free slots. 
         if no slots available then change session status to "ready to play" (game),
         and set the player
     """ 
     if not self.has_free_slots():
         self.session.status = SessionStatus.ready_to_play.value
     
     player_status = PlayerStatus.not_ready.value
     if self.session.status == SessionStatus.ready_to_play.value:
         player_status = PlayerStatus.ready_to_play.value
     ''' create player object '''
     player = Player(uid = self.user.uid,
                     status = player_status
                     )
     ''' set player additional info '''
     player.get_player_info(self.user)
     ''' add player to current session '''
     self.add_player(player)
     ''' save session '''
     self.session.save()
     return True
Ejemplo n.º 2
0
 def create(self):
     """
         Create new session. default status is 'incomplete'
     """
     if self.user is None:
         raise TypeError("USER object must be provided!")
     
     ''' generate random name if not provided '''
     while not self.find_session(self.generate_session_name()):
         """ create new session with one player and status 'free' """
         player = Player(uid = self.user.uid,
                         status = PlayerStatus.ready_to_play.value
                         )
         ''' get player info based on current user '''
         player.get_player_info(self.user)
         ''' set available slots '''
         self.slots -= 1
         ''' create session object '''
         self.session = Session(name = self.session_name,
                                owner_uid = self.user.uid,
                                status = SessionStatus.incomplete.value,
                                is_active = True,
                                expired_at = self.expire_in(),
                                players = [player],
                                slots = self.slots,
                                game_name = self.game_name,
                                available_slots = self.slots
                           )
         self.session.save()
         return self.session
     return None