def new_goal(request): error_message = None try: goal_text = request.POST['goal_text'] g = Goal() g.user = request.user try: g.parse(goal_text) except Exception: messages.error(request, "Invalid goal. Please enter a correctly formatted goal.") return HttpResponseRedirect(reverse("habits.views.main")) g.save() g.create_scheduled_instances(Goal.beginning_today(request.user), 5) return HttpResponseRedirect(reverse("habits.views.main")) except KeyError: error_message = "Please enter a valid goal" return render_to_response("main.html", standard_data(request, error_message), context_instance=RequestContext(request))
def setUp(self): self.user = User(username="******", password="******") self.user.save() simple_goal_text = "Go for a walk every day" self.simple_goal = Goal() self.simple_goal.user = self.user self.simple_goal.parse(simple_goal_text) self.simple_goal.save() byday_text = "Go to the gym every mon wed and fri starting jan 7 2013" self.byday_goal = Goal() self.byday_goal.user = self.user self.byday_goal.parse(byday_text) self.byday_goal.save() self.today = Goal.beginning_today(self.user) self.yesterday = self.today - datetime.timedelta(days=1) self.tomorrow = self.today + datetime.timedelta(days=1) self.day_after_tomorrow = self.today + datetime.timedelta(days=2) self.five_days_ago = self.today - datetime.timedelta(days=5) self.four_days_ago = self.today - datetime.timedelta(days=4) self.old_goal = Goal() self.old_goal.user = self.user self.old_goal.created_at = self.five_days_ago self.old_goal.creation_text = "foo" self.old_goal.description = "foo" self.old_goal.dtstart = self.five_days_ago self.old_goal.rrule = 'DTSTART:' + self.old_goal.dtstart.strftime("%Y%m%d") + '\nRRULE:FREQ=DAILY;INTERVAL=1' self.old_goal.save()
def update_tz(request): old_today = Goal.beginning_today(request.user) new_timezone = request.POST['timezone'] profile = request.user.userprofile profile.timezone = new_timezone profile.save() for goal in request.user.goal_set.all(): goal.scheduledinstance_set.filter(date__gt=timezone.now()).delete() goal.scheduledinstance_set.filter(date=old_today).delete() new_today = Goal.beginning_today(request.user) goal.create_scheduled_instances(new_today, 5) return HttpResponseRedirect(reverse("habits.views.main"))
def standard_data(request, error_message=None): todo = Goal.goals_for_today(request.user) completed = Goal.completed_goals_for_today(request.user) tomorrow = Goal.beginning_today(request.user) + datetime.timedelta(days=1) return {'skipped': Goal.skipped_goals_for_today(request.user), 'goals': Goal.objects.filter(user=request.user).select_related('scheduledinstances'), 'todo': todo, 'completed': completed, 'tomorrow': tomorrow, 'user_tz': request.user.userprofile.timezone, 'readable_tz': request.user.userprofile.readable(), 'error_message': error_message}
def test_splitting_input(self): goal = Goal() goal.user = self.user goal.parse("2 hours of studying every day") self.assertEqual(goal.creation_text, "2 hours of studying every day") self.assertEqual(goal.description, "2 hours of studying") self.assertEqual(goal.rrule, 'DTSTART:' + self.today.strftime("%Y%m%d") + '\nRRULE:FREQ=DAILY;INTERVAL=1') self.assertEqual(goal.dtstart, Goal.beginning_today(self.user)) self.assertEqual(goal.freq, "daily") self.assertEqual(goal.byday, None)
def setUp(self): self.user = User(username="******", password="******") self.user.save() simple_goal_text = "Go for a walk every day" self.simple_goal = Goal() self.simple_goal.user = self.user self.simple_goal.parse(simple_goal_text) self.simple_goal.save() self.today = Goal.beginning_today(self.user) self.i1 = ScheduledInstance(goal=self.simple_goal, date=self.today) self.i1.save()