Compare commits
1 Commits
fec09edb88
...
056779f7d2
Author | SHA1 | Date | |
---|---|---|---|
056779f7d2 |
@ -135,7 +135,7 @@ def toNaturalColor(colormap, orgColor):
|
|||||||
# uses the event color id to convert it to a hex color
|
# uses the event color id to convert it to a hex color
|
||||||
# does this for every event in events
|
# does this for every event in events
|
||||||
# this is used for Google Calendars
|
# this is used for Google Calendars
|
||||||
def colorizeEvents(events, colors):
|
def colorizeGoogleEvents(events, colors):
|
||||||
COLORS_FILE = os.path.join(os.path.dirname(__file__), 'colors.json')
|
COLORS_FILE = os.path.join(os.path.dirname(__file__), 'colors.json')
|
||||||
with open(COLORS_FILE) as f:
|
with open(COLORS_FILE) as f:
|
||||||
colormap = json.load(f)
|
colormap = json.load(f)
|
||||||
@ -190,17 +190,18 @@ def getTimeStamps():
|
|||||||
|
|
||||||
# define today and tomorrow
|
# define today and tomorrow
|
||||||
now = datetime.datetime.now(datetime.timezone.utc).astimezone()
|
now = datetime.datetime.now(datetime.timezone.utc).astimezone()
|
||||||
today = now.replace(hour=0, minute=0, second = 0).isoformat()
|
today = now.replace(hour=0, minute=0, second = 0)
|
||||||
tomorrow = now.replace(hour=23, minute=59, second=59).isoformat() # + '+01:00'
|
tomorrow = now.replace(hour=23, minute=59, second=59).isoformat() # + '+01:00'
|
||||||
twodaysfromnow = datetime.datetime.today() + datetime.timedelta(days=2)
|
twodaysfromnow = datetime.datetime.today() + datetime.timedelta(days=2)
|
||||||
twodaysfromnow = twodaysfromnow.replace(hour=23, minute=59, second=59).astimezone().isoformat()
|
twodaysfromnow = twodaysfromnow.replace(hour=23, minute=59, second=59).astimezone()
|
||||||
|
|
||||||
return today, twodaysfromnow
|
return today, twodaysfromnow
|
||||||
|
|
||||||
def generateJsonFromCalendarEntries(events, colors):
|
def generateJsonFromCalendarEntries(events, colors):
|
||||||
|
|
||||||
# fix all colors in events that have a different event color
|
# fix all colors in events that have a different event color
|
||||||
colorizeEvents(events, colors)
|
if colors != None:
|
||||||
|
colorizeGoogleEvents(events, colors)
|
||||||
# if not events:
|
# if not events:
|
||||||
# print('No upcoming events found.')
|
# print('No upcoming events found.')
|
||||||
|
|
||||||
|
63
icalHandler.py
Normal file
63
icalHandler.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
from server import db
|
||||||
|
from database.models import Calendar as dbCalendar
|
||||||
|
from backend import Event as bEvent
|
||||||
|
from ics import Calendar as iCalendar
|
||||||
|
import requests
|
||||||
|
|
||||||
|
def icalToCalendarDb(url, name, user):
|
||||||
|
try:
|
||||||
|
c = iCalendar(requests.get(url).text)
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
c = dbCalendar(calendar_id = url,
|
||||||
|
calendar_type = 'ical',
|
||||||
|
name = name,
|
||||||
|
toggle = "False",
|
||||||
|
color = "#000000")
|
||||||
|
db.session.add(c)
|
||||||
|
user.calendars.append(c)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
def fetchCalendarEvents(calendars, startDate, endDate):
|
||||||
|
|
||||||
|
all_events = []
|
||||||
|
for calendar in calendars:
|
||||||
|
if calendar.toggle == "True" and calendar.calendar_type == "ical":
|
||||||
|
ical = iCalendar(requests.get(calendar.calendar_id).text)
|
||||||
|
for event in ical.events:
|
||||||
|
|
||||||
|
name = event.name
|
||||||
|
start = event.begin.format()
|
||||||
|
end = event.end.format()
|
||||||
|
|
||||||
|
newEvent = bEvent(name, start, end)
|
||||||
|
|
||||||
|
|
||||||
|
if eventWithinStartEnd(startDate, endDate, event):
|
||||||
|
if not eventAllDay(event):
|
||||||
|
|
||||||
|
all_events.append(newEvent)
|
||||||
|
|
||||||
|
return all_events
|
||||||
|
|
||||||
|
|
||||||
|
# converts everything to epoch seconds and utc
|
||||||
|
# and then checks if at either event start or event end
|
||||||
|
# is is within startDate and endDate
|
||||||
|
def eventWithinStartEnd(startDate, endDate, event):
|
||||||
|
if((startDate.timestamp() <= event.begin.timestamp and
|
||||||
|
event.begin.timestamp <= endDate.timestamp()) or
|
||||||
|
startDate.timestamp() <= event.end.timestamp and
|
||||||
|
event.end.timestamp <= endDate.timestamp()):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def eventAllDay(event):
|
||||||
|
beginDay = event.begin.replace(hour=0, minute=0, second=0)
|
||||||
|
endDay = event.end.replace(hour=0, minute=0, second=0)
|
||||||
|
delta = endDay - beginDay
|
||||||
|
if delta.days >= 2:
|
||||||
|
return True
|
||||||
|
return False
|
Reference in New Issue
Block a user