import datetime def genday(dt): now = datetime.date.today().strftime("%Y%m%dT000000Z") then = dt.strftime("%Y%m%d") di = "%i" ds = "%s" return '''BEGIN:VEVENT UID:%s@kumig.it DTSTAMP:%s DTSTART;VALUE=DATE:%s SUMMARY:%s days since %s END:VEVENT ''' % (ds, now, then, di, ds) def gencal(dt, offset = None, string = None, futuredays = 14): offset = offset or (datetime.date.today() - dt).days rv = '''BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Klaus-Uwe Mitterer//DaysSince//EN METHOD:PUBLISH ''' for day in range(offset + futuredays): rv += genday(dt + datetime.timedelta(days = day)) % ("%i%i%i%i" % (dt.year, dt.month, dt.day, day), day, "%i/%i/%i" % (dt.year, dt.month, dt.day)) rv += "END:VCALENDAR" return rv def cal(dt, string = None): offset = (datetime.date.today() - dt).days if offset < 0: return "" else: return iter([gencal(dt, string).replace("\n", "\r\n").encode()])