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.

58 lines
1.5 KiB

import os
import os.path
import tempfile
from icalendar import Calendar, Event
from webdav3.client import Client as WDClient
class Client:
def __init__(self, config):
"""
Initializes a client
"""
options = {
'webdav_hostname': config["WEBDAV_SERVER"],
'webdav_login': config["WEBDAV_USER"],
'webdav_password': config["WEBDAV_PASSWORD"],
}
self.calendar_path = config["CALENDAR_PATH"]
self.client = WDClient(options)
def retrieve_calendars_list(self):
"""
Retrieves the calendar list
"""
return self.client.list(self.path)
def read_calendar(self, pathname):
"""
Given a filename, tries to read the calendar event
"""
f, temp_path = tempfile.mkstemp()
rpath = os.path.join(self.calendar_path, pathname)
self.client.download_sync(remote_path=rpath,
local_path=temp_path)
# Read the temporary data, close the file, remove it
data = f.read()
f.close()
os.remove(temp_path)
# Now with the data read, we can process it
return self.parse_calendar(data)
def parse_calendar(self, data):
"""
Parses ICS calendar data received
"""
calendar = Calendar.from_ical(data)
for component in calendar.walk():
if component.name == 'VEVENT':
pass
def get_todays_events(self):
"""
Get todays events
"""
pass