calendarwatch_backend/Routine.py
Raphael Maenle ba912de7f3 updates routine to use calendar_id
- calendar name creates problems, when two
  calendars have the same name
- calendar id is unique and was added into the
  css of the frontend
y
2020-05-18 23:49:26 +02:00

48 lines
1.6 KiB
Python

from server import db
from server.models import User, Calendar
from backend import caltojson
import os
import google.oauth2.credentials
import json
class Routine:
def start(self, time=10):
self.updateCalendars()
def updateCalendars(self):
users = User.query.all()
for user in users:
# check google:
credentials = user.getGoogleCredentials()
if credentials is None:
continue
visualCals = []
calendars = db.session.query(Calendar).filter(Calendar.usr_id==user.id).all()
for calendar in calendars:
if calendar.toggle == 'True':
visualCals.append(calendar.calendar_id)
googleCreds = google.oauth2.credentials.Credentials(**credentials)
calendarjson = caltojson.generateJsonFromCalendarEntries(visualCals, googleCreds)
user.setJson(calendarjson)
directory = 'userinfo/' + user.id + '/'
if not os.path.exists(directory):
os.makedirs(directory)
with open(directory + 'calendarevents.json', 'w', encoding='utf-8') as f:
json.dump(calendarjson, f, ensure_ascii=False, indent=4)
def credentials_to_dict(credentials):
return{'token': credentials.token,
'refresh_token': credentials.refresh_token,
'token_uri': credentials.token_uri,
'client_id': credentials.client_id,
'client_secret': credentials.client_secret,
'scopes': credentials.scopes}
if __name__ == "__main__":
routine = Routine()
routine.start()