|
|
from dateutil import rrulefrom gcalendar import dateTimeimport datetimeimport pickleimport jsonLOCATION = "5500 St Louis Ave, Chicago, IL 60625"# event = { # 'summary': 'Google I/O 2015', # 'location': '800 Howard St., San Francisco, CA 94103', # 'description': 'A chance to hear more about Google\'s developer products.', # 'start': { # 'dateTime': '2015-05-28T09:00:00-07:00', # 'timeZone': 'America/Los_Angeles', # }, # 'end': { # 'dateTime': '2015-05-28T17:00:00-07:00', # 'timeZone': 'America/Los_Angeles', # }, # 'recurrence': [ # 'RRULE:FREQ=DAILY;COUNT=2' # ], # 'attendees': [ # {'email': 'lpage@example.com'}, # {'email': 'sbrin@example.com'}, # ], # 'reminders': { # 'useDefault': False, # 'overrides': [ # {'method': 'email', 'minutes': 24 * 60}, # {'method': 'popup', 'minutes': 10}, # ], # },# }
def rrule_former(class_obj): days = class_obj.days start =datetime.datetime.combine(class_obj.date_range[0],class_obj.time_range[0]).astimezone() end =datetime.datetime.combine(class_obj.date_range[1],class_obj.time_range[1]).astimezone() days = [ (day -1) % 7 for day in days] ret = rrule.rrule(freq=rrule.WEEKLY,dtstart=start,wkst=rrule.SU,until=end,byweekday=days) return ret
def create_body(_class): if _class.time_range: body = {} body['recurrence'] = [str(rrule_former(_class))] body['start'] = dateTime(datetime.datetime.combine(_class.date_range[0],_class.time_range[0])) body['end'] = dateTime(datetime.datetime.combine(_class.date_range[1],_class.time_range[0])) body['summary'] = _class.title body['description'] = 'location: {}'.format(_class.location) body['location'] = LOCATION return body
def test_rrule(): #test now = datetime.datetime.now() from munch import Munch test_obj = Munch( days=[1,3,5], time_range=[ now.time(), (now+datetime.timedelta(seconds=50*60)).time() ], date_range=[ now.date(), (now+datetime.timedelta(days=20)).date() ], ) test_result = rrule_former(test_obj) return locals()
def test_class2body(): with open('classes.pkl','rb') as file: classes = pickle.load(file) test_result = list(map(create_body,classes)) return test_result
|