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()
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()