#!/usr/bin/python3 import mysql.connector as sql import datetime as dt import sys import re import glob import pytz def parseOptions(arr): if len(arr) == 1: return {'RAW': arr[0]} else: options = {} for i in arr: k = i.split('=') if len(k) == 1: options['RAW'] = k[0] else: options[k[0]] = k[1] return options def getEvents(baseDay, interval): if interval == 'week': rightLimit = (baseDay+dt.timedelta(weeks=1)).strftime('%s') elif interval == '4weeks': rightLimit = (baseDay+dt.timedelta(weeks=4)).strftime('%s') else: raise ValueError('Invalid argument passed to getEvents') leftLimit = baseDay.strftime('%s') c = sql.connect(unix_socket=glob.cfg['mysql']['unix_socket'], host=glob.cfg['mysql']['host'], user=glob.cfg['mysql']['user'], password=glob.cfg['mysql']['password'], db=glob.cfg['mysql']['db']) mycursor = c.cursor() # For repeated events (not yet supported) #sql = "SELECT obj.calendardata FROM oc_calendarobjects AS obj INNER JOIN oc_calendars AS cal ON obj.calendarid = cal.id WHERE cal.displayname='prova'AND obj.firstoccurence < %s AND obj.lastoccurence > %s" % (leftLimit, rightLimit) query = "SELECT obj.calendardata FROM oc_calendarobjects AS obj INNER JOIN oc_calendars AS cal ON obj.calendarid = cal.id WHERE cal.displayname='%s' AND obj.firstoccurence < %s AND obj.firstoccurence > %s" % (glob.cfg['caldav']['cal_name'], rightLimit, leftLimit) mycursor.execute(query) result = mycursor.fetchall() c.close() events = [] for event in result: # selected only first column event = event[0].decode('utf8') blockParsing = None event_dict = {} for item in event.split('\r\n'): try: k,v = item.split(':',1) except: continue k = k.split(';') v = re.split('(?