def view_entries(request, delta=0): """ Pull back a list of all entries for the current period for the current user """ delta = int(delta) if delta: # we only go back in time, not forward :) if delta < 0: raise Http404 # we have a delta, so show previous entries according to the delta entries = Entry.objects.previous(delta, request.user) next = delta - 1 has_next = True else: # no delta, so just show the current entries entries = Entry.objects.current(request.user) next = None has_next = False return render_to_response('pendulum/entry_list.html', {'entries': entries, 'period': determine_period(delta=delta), 'is_current': delta != 0, 'next_period': next, 'has_next': has_next, 'previous_period': delta + 1}, context_instance=RequestContext(request))
def current(self, user=None): """ This will pull back any log entries for the current period. """ try: set = self.in_period(utils.determine_period()) except PendulumConfiguration.DoesNotExist: raise Exception, "Please configure Pendulum!" else: if user: return set.filter(user=user) return set
def testDeterminePeriod(self): # try some dates dates_to_try = ( datetime(2005, 12, 13), datetime(2006, 4, 12), datetime(2006, 7, 19), datetime(2007, 1, 9), datetime(2007, 5, 21), datetime(2007, 6, 10), datetime(2007, 6, 26), datetime(2007, 7, 2), datetime(2007, 7, 31), datetime(2007, 9, 6), datetime(2007, 12, 2), datetime(2008, 1, 30), datetime(2008, 2, 27), datetime(2008, 6, 6), ) expected_results = [ (datetime(2005, 12, 1), datetime(2005, 12, 31)), # 13 dec 05 (datetime(2006, 4, 1), datetime(2006, 4, 30)), # 12 apr 06 (datetime(2006, 7, 1), datetime(2006, 7, 31)), # 19 jul 06 (datetime(2007, 1, 1), datetime(2007, 1, 31)), # 9 jan 07 (datetime(2007, 5, 1), datetime(2007, 5, 31)), # 21 may 07 (datetime(2007, 6, 1), datetime(2007, 6, 30)), # 10 jun 07 (datetime(2007, 6, 1), datetime(2007, 6, 30)), # 26 jun 07 (datetime(2007, 7, 1), datetime(2007, 7, 31)), # 2 jul 07 (datetime(2007, 7, 1), datetime(2007, 7, 31)), # 31 jul 07 (datetime(2007, 9, 1), datetime(2007, 9, 30)), # 6 sept 07 (datetime(2007, 12, 1), datetime(2007, 12, 31)), # 2 dec 07 (datetime(2008, 1, 1), datetime(2008, 1, 31)), # 30 jan 08 (datetime(2008, 2, 1), datetime(2008, 2, 29)), # 27 feb 08 (datetime(2008, 6, 1), datetime(2008, 6, 30)), # 6 jun 08 ] count = 0 for date in dates_to_try: start, end = determine_period(date) exp_s, exp_e = expected_results[count] # make sure the resulting start date matches the expected value self.assertEquals(start.year, exp_s.year) self.assertEquals(start.month, exp_s.month) self.assertEquals(start.day, exp_s.day) # make sure the resulting end date matches the expected value self.assertEquals(end.year, exp_e.year) self.assertEquals(end.month, exp_e.month) self.assertEquals(end.day, exp_e.day) # increment the counter so we can get the correct expected results count += 1
def previous(self, delta, user=None): set = self.in_period(utils.determine_period(delta=delta)) if user: return set.filter(user=user) return set