Contact: fumanchu@aminus.org

Log in as guest/misc to create tickets

Changeset 99

Show
Ignore:
Timestamp:
07/31/06 13:43:49
Author:
dowski
Message:

Fix for Dejavu #66.

getmonth, getweek and getyear coerce incoming datetime.datetime values for startDate to a datetime.date.

Worker.motivate deals with the possibility of being handed either a datetime.datetime or datetime.date object from recurrence.next().

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • recur.py

    r98 r99  
    365365    If weekday is out of bounds (0-6), it will be brought in bounds. 
    366366    """ 
     367    if hasattr(startDate, 'time'): 
     368        startDate = startDate.date() 
    367369    weekday = int(weekday) 
    368370    offset = (7 + weekday) - startDate.weekday() 
     
    413415    sequence, that last item is not yielded, and the sequence ends. 
    414416    """ 
     417    if hasattr(startDate, 'time'): 
     418        startDate = startDate.date() 
    415419    day = int(day) 
    416420    highzero = (day < 1) 
     
    490494    sequence, that last item is not yielded, and the sequence ends. 
    491495    """ 
     496    if hasattr(startDate, 'time'): 
     497        startDate = startDate.date() 
    492498    month = int(month) 
    493499    day = int(day) 
     
    727733            if self.recurrence: 
    728734                # Start a recurring, timed thread. 
    729                 now = datetime.datetime.now() 
     735                try: 
     736                    next = self.recurrence.next() 
     737                except StopIteration: 
     738                    # The recurrence series was exhausted immediately. 
     739                    return 
     740                # next can be either a datetime.datetime or a datetime.date - 
     741                # get the correct representation of "now" from either one. 
     742                now = getattr(next, 'now', getattr(next, 'today'))() 
    730743                while True: 
     744                    diff = next - now 
     745                    diff = (diff.days * 86400) + diff.seconds 
     746                    if diff >= 0: 
     747                        self.nextrun = next 
     748                        break 
    731749                    try: 
    732750                        next = self.recurrence.next() 
     
    734752                        # The recurrence series was exhausted. 
    735753                        return 
    736                     diff = next - now 
    737                     diff = (diff.days * 86400) + diff.seconds 
    738                     if diff >= 0: 
    739                         self.nextrun = next 
    740                         break 
    741754                iv = diff 
    742755                func = self._cycle