Пример #1
0
def parse_date(text):
   x = None
   out = '<?>'
   date = TaskDate(None)
   try:
      x = text.split()[-1]
   except:
      return '<?>', text, date
   x = x.lower()
   found = True
   if re.match(r'\d{1,2}/\d{1,2}/\d{4}', x):
      out = x
      x = map(int, x.split('/'))
      date = TaskDate(date=make_time(x[2], x[0], x[1]))
   elif '/' in x:
      today = now()
      try:
         x = x.split('/')
         a = make_time(today.year, int(x[0]), int(x[1]))
         b = make_time(today.year + 1, int(x[0]), int(x[1]))
         if (a - today).days < -30:
            out = "%s next year" % b.strftime("%b %d")
            date = TaskDate(date=b)
         elif (a - today).days < 0:
            out = "%s (past)" % a.strftime("%b %d")
            date = TaskDate(date=a)
         else:
            out = a.strftime("%b %d")
            date = TaskDate(date=a)
      except:
         found = False
   elif len(x) >= 3:
      o, f = out, found # save in case date match fails
      verify, out, f_date, found = DATE_MATCH_DICT.get(x[0:3], ['', out, lambda: date, False])
      if found and not verify.startswith(x):
         out, found = o, f # reset on failed date match
      else:
         date = f_date() # assign date
   else:
      found = False
   if found:
      text = ' '.join(text.split()[:-1])
   return out, text, date
Пример #2
0
 def cal_selected(cal):
    self.eventcount += 1
    if self.eventcount == 1:
       cd = cal.get_date()
       d = make_time(cd[0], cd[1]+1, cd[2])
       task.date = TaskDate(date=d)
       finish()
       self.destroy_cal()
    else:
       self.eventcount = 0