You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.6 KiB
59 lines
1.6 KiB
from dateutil import rrule
|
|
import datetime
|
|
import pickle
|
|
# 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 = list(map(lambda day: (day -1) % 7,days))
|
|
ret = rrule.rrule(freq=rrule.WEEKLY,dtstart=start,wkst=rrule.SU,until=end,byweekday=days)
|
|
return ret
|
|
|
|
|
|
|
|
def test():
|
|
#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()
|