Changeset 176
- Timestamp:
- 07/11/08 20:01:29 (5 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/antimatter/luke/myplugs/libtracker/entry.py
r175 r176 5 5 def add(user, adjustment): 6 6 restconn = TimeObj('http://localhost:8888/timedb/') 7 result = restconn.add(user.name, 'default', adjustment.start, adjustment.duration)7 result = restconn.add(user.name, adjustment.category, adjustment.start, adjustment.duration) 8 8 return result trunk/antimatter/luke/myplugs/libtracker/timeadjustment.py
r175 r176 10 10 end = 0 11 11 duration = 0 12 category = "Default" 12 13 13 14 # If we aren't given a complete duration of time, we will need to wait … … 15 16 waiting = 0 16 17 17 def __init__(self, start=None, end=None, duration=None, date=None):18 def __init__(self, category, start=None, end=None, duration=None, date=None): 18 19 # All of these should be datetime objects, except for duration which should be 19 20 # a relativedelta object … … 29 30 self.duration = (duration.days)*86400+(duration.hours)*3600+(duration.minutes)*60+int(duration.seconds) 30 31 waiting = 0 32 if (not category == None): 33 self.category = category 31 34 trunk/antimatter/luke/myplugs/libtracker/timeparser.py
r175 r176 11 11 12 12 def msgparse(ievent): 13 dtime = extractor(ievent)13 dtime = add_extract(ievent) 14 14 if (dtime): 15 15 user = check_auth(ievent) … … 17 17 ievent.reply(result) 18 18 19 def extractor(ievent):20 """ The extractor19 def add_extract(ievent): 20 """ Extracts data for add operations 21 21 INPUT: Ircevent 22 OUTPUT: (string, TimeAdjustment or int)or None22 OUTPUT: TimeAdjustment or None 23 23 """ 24 #TODO:25 # clean parser up26 # seperate the contents into functions27 24 28 25 #First part: On $date: 29 26 # where $date is in the form: "Friday", "07-23-1989", or "July 23, 1989" 30 27 setdate_re = r"^(?:(?:on )?(?P<prefix>\b\w+\b|\b\d{2,2}\b.\b\d{1,2}\b.\b\d{2,4}\b|\b\w+\b.\b\d{1,2}(?:,.\d{2,4})?).?[,:] ?)?" 31 setdate = re.search(setdate_re + r"(?P<rest>.*)", ievent.txt, re.I).groupdict()32 28 29 setdate = re.search(setdate_re + r"(?P<rest>.*)", ievent.txt, re.I) 33 30 if (setdate): 31 setdate = setdate.groupdict() 34 32 day = setdate['prefix'] 35 33 36 #We will need to check what kind of command this is before parsing, but37 # this will do for now38 34 #Second part: $time to $time 39 35 # where $time is in the form: "11:30 PM" or "10:30" 40 time_re = r"(?:\d{1,2}(?::\d{2}) ?(?:[ap]m)?)"36 time_re = r"(?:\d{1,2}(?::\d{2})? ?(?:[ap]m?))" 41 37 second = r"(?:(?P<t_one>" + time_re + ") to (?P<t_two>" + time_re + "))" 38 42 39 #Last part: for $category 43 last = r"(?: for (.*))?$" 40 last = r"(?: for (?P<cat>.*))?$" 41 when = re.search(second + last, setdate['rest'], re.I) 42 44 43 #setdate = re.findall(r"^on (\b\w+\b).?[,:](.*)", ievent.txt, re.I) 45 when = re.search(second + last, setdate['rest'], re.I)46 44 if (when): 47 45 when = when.groupdict() … … 50 48 adjustment = dt.timedelta(days=0) 51 49 weekdays = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] 50 weekdays += ['mon','tue','wed','thu','fri','sat','sun'] 52 51 if (day.lower() in weekdays): 53 52 adjustment = dt.timedelta(days=7) 54 53 date = parse(day, fuzzy = True) - adjustment 54 55 55 start = parse(t_one, fuzzy = True) 56 56 end = parse(t_two, fuzzy = True) 57 57 time = relativedelta(end, start) 58 59 end = date + relativedelta(end, dt.datetime.today()) 58 60 start = date + relativedelta(start, dt.datetime.today()) 59 end = date + relativedelta(end, dt.datetime.today()) 60 reply = "Worked on: " + date.ctime() + " for " + repr(time) 61 62 if (when.has_key('cat')): 63 category = when['cat'] 64 else: 65 category = None 66 67 reply = "Worked on: " + date.ctime() + " for " + repr(time) + " on " + category 61 68 ievent.reply(reply) 62 adjustment = TimeAdjustment(start, end, time, day) 69 70 adjustment = TimeAdjustment(category, start, end, time, day) 63 71 return ("add", adjustment) 72 73 return None 74