예제 #1
0
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))
예제 #2
0
 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
예제 #3
0
    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
예제 #4
0
    def previous(self, delta, user=None):
        set = self.in_period(utils.determine_period(delta=delta))

        if user:
            return set.filter(user=user)
        return set