Example #1
0
    def _start_next_phase(self):
        _User__VisitedPhase.get_or_create(self._user.id, self._user.current_phase_id)

        possible_user_phase_infos = PhaseLengthByGoal.get_phases_for_goal_id(self.goal_id)
        possible_user_phase_infos = [phase_info for phase_info in possible_user_phase_infos if phase_info.phase.id != self._user.current_phase_id]

        user_phase_infos_not_visited = [phase_info for phase_info in possible_user_phase_infos if not self.has_visited_phase(phase_info.phase.id)]
        use_max_length = False
        if len(user_phase_infos_not_visited) > 0:
            use_max_length = True
            possible_user_phase_infos = user_phase_infos_not_visited

        new_phase_info = random.choice(possible_user_phase_infos)
        self._user.current_phase_id = new_phase_info.phase.id
        self._user.current_week_in_phase = 1
        if use_max_length:
            self._user.total_weeks_in_phase = new_phase_info.max_length
        else:
            self._user.total_weeks_in_phase = random.randint(new_phase_info.min_length, new_phase_info.max_length)
        self._user.save()
Example #2
0
 def _start_first_phase(self):
     self._user.current_phase_id = Goal.get_by_id(self.goal_id).start_phase_id
     self._user.current_week_in_phase = 1
     min_length, max_length = PhaseLengthByGoal.get_min_max_phase_length_for_goal_phase(self.goal_id, self._user.current_phase_id)
     self._user.total_weeks_in_phase = random.randint(min_length, max_length)
     self._user.save()