Software Freedom Law Center

Changeset 176

Show
Ignore:
Timestamp:
07/11/08 20:01:29 (5 months ago)
Author:
landon
Message:

Further cleaned parser so that it now has seperate handlers for seperate commands (defaulting to add), add operation now supports a category

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/antimatter/luke/myplugs/libtracker/entry.py

    r175 r176  
    55def add(user, adjustment): 
    66    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) 
    88    return result 
  • trunk/antimatter/luke/myplugs/libtracker/timeadjustment.py

    r175 r176  
    1010    end = 0 
    1111    duration = 0 
     12    category = "Default" 
    1213 
    1314    # If we aren't given a complete duration of time, we will need to wait 
     
    1516    waiting = 0 
    1617 
    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): 
    1819        # All of these should be datetime objects, except for duration which should be 
    1920        # a relativedelta object 
     
    2930            self.duration = (duration.days)*86400+(duration.hours)*3600+(duration.minutes)*60+int(duration.seconds) 
    3031            waiting = 0 
     32        if (not category == None): 
     33            self.category = category 
    3134 
  • trunk/antimatter/luke/myplugs/libtracker/timeparser.py

    r175 r176  
    1111 
    1212def msgparse(ievent): 
    13     dtime = extractor(ievent) 
     13    dtime = add_extract(ievent) 
    1414    if (dtime): 
    1515        user = check_auth(ievent) 
     
    1717        ievent.reply(result) 
    1818 
    19 def extractor(ievent): 
    20     """ The extractor 
     19def add_extract(ievent): 
     20    """ Extracts data for add operations 
    2121    INPUT: Ircevent 
    22     OUTPUT: (string, TimeAdjustment or int) or None 
     22    OUTPUT: TimeAdjustment or None 
    2323    """ 
    24     #TODO: 
    25     #   clean parser up 
    26     #   seperate the contents into functions 
    2724 
    2825    #First part: On $date: 
    2926    #   where $date is in the form: "Friday", "07-23-1989", or "July 23, 1989" 
    3027    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() 
    3228 
     29    setdate = re.search(setdate_re + r"(?P<rest>.*)", ievent.txt, re.I) 
    3330    if (setdate): 
     31        setdate = setdate.groupdict() 
    3432        day = setdate['prefix'] 
    3533 
    36     #We will need to check what kind of command this is before parsing, but 
    37     #   this will do for now 
    3834    #Second part: $time to $time 
    3935    #   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?))" 
    4137    second = r"(?:(?P<t_one>" + time_re + ") to (?P<t_two>" + time_re + "))" 
     38 
    4239    #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 
    4443    #setdate = re.findall(r"^on (\b\w+\b).?[,:](.*)", ievent.txt, re.I) 
    45     when = re.search(second + last, setdate['rest'], re.I) 
    4644    if (when): 
    4745        when = when.groupdict() 
     
    5048        adjustment = dt.timedelta(days=0) 
    5149        weekdays = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] 
     50        weekdays += ['mon','tue','wed','thu','fri','sat','sun'] 
    5251        if (day.lower() in weekdays): 
    5352            adjustment = dt.timedelta(days=7) 
    5453        date = parse(day, fuzzy = True) - adjustment 
     54 
    5555        start = parse(t_one, fuzzy = True) 
    5656        end = parse(t_two, fuzzy = True) 
    5757        time = relativedelta(end, start) 
     58 
     59        end = date + relativedelta(end, dt.datetime.today()) 
    5860        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 
    6168        ievent.reply(reply) 
    62         adjustment = TimeAdjustment(start, end, time, day) 
     69 
     70        adjustment = TimeAdjustment(category, start, end, time, day) 
    6371        return ("add", adjustment) 
     72 
     73    return None 
     74 

SFLC Main Page

[frdm] Support SFLC