add attend functionallity

This commit is contained in:
pstruebi
2022-06-14 12:19:47 +02:00
parent 7469d64043
commit bd5e5b0ae9
2 changed files with 56 additions and 5 deletions

25
app.py
View File

@@ -1,9 +1,10 @@
import calendar_interface import logging
import sqlite3 import json
from flask import Flask, render_template, g, request, url_for, flash, redirect from flask import Flask, render_template, g, request, url_for, flash, redirect
from werkzeug.exceptions import abort from werkzeug.exceptions import abort
import calendar_interface
import db import db
import auth import auth
@@ -29,3 +30,23 @@ def index():
# def post(post_id): # def post(post_id):
# post = get_post(post_id) # post = get_post(post_id)
# return render_template('show_event.html', post=post) # return render_template('show_event.html', post=post)
@app.route('/<id>/attend')
@auth.login_required
def attend(id):
event = calendar_interface.get_calendar_event(id)
user = g.user["username"]
email = g.user["email"]
# only update attendees, now the whole event
data = {}
data["attendees"] = event["attendees"]
logging.info("attempting to attend event with user: %s %s", email, user)
calendar_interface.add_attendee(data, user, email)
logging.info("Sending data for attendee update:\n%s", json.dumps(data, indent=2))
calendar_interface.update_calendar_event(id, data)
return redirect(url_for('index'))

View File

@@ -70,7 +70,9 @@ def execute_patch_request(token, endpoint, data):
#data=data, #data=data,
headers={'Authorization': 'Bearer ' + token['access_token']},).json() headers={'Authorization': 'Bearer ' + token['access_token']},).json()
def update_calendar_event(token, event_id, data, user_id=USER_ID): def update_calendar_event(event_id, data, user_id=USER_ID):
token = get_access_token()
endpoint= "https://graph.microsoft.com/v1.0/users/" + user_id + f"/calendar/events/{event_id}" endpoint= "https://graph.microsoft.com/v1.0/users/" + user_id + f"/calendar/events/{event_id}"
return execute_patch_request(token, endpoint, data) return execute_patch_request(token, endpoint, data)
@@ -87,6 +89,12 @@ def get_all_calendar_events():
return execute_user_request(token, f"calendars/{CALENDAR_ID}/events").get("value") return execute_user_request(token, f"calendars/{CALENDAR_ID}/events").get("value")
def get_calendar_event(id, filter: str=""):
token = get_access_token()
return execute_user_request(token, f"calendars/{CALENDAR_ID}/events/{id}{filter}")
def get_future_calendar_events(): def get_future_calendar_events():
t1=datetime.now() t1=datetime.now()
@@ -118,6 +126,27 @@ def convert_datetimes(events):
return events return events
def add_attendee(data, name, email):
d = {
"type": "required",
"status": {
"response": "none",
"time": "0001-01-01T00:00:00Z"
},
"emailAddress": {
"name": name,
"address": email
}
}
data["attendees"].append(d)
def delte_attendee(data, email):
for i, d in enumerate(data["attendees"]):
if d["emailAddress"]["address"] == email:
del data[i]
break
if __name__ == "__main__": if __name__ == "__main__":
@@ -176,8 +205,9 @@ if __name__ == "__main__":
data["attendees"][0]["emailAddress"]["address"] = "struebin.patrick@gmail.com" data["attendees"][0]["emailAddress"]["address"] = "struebin.patrick@gmail.com"
#Test2 #Test2
event_id = "AAMkADY0MDg1MTVjLTg5ZjItNGQxYS04MGQ3LWY2NjJmYjM0YmZhOQBGAAAAAADXD7SdVoWYQI4RYXbBumMEBwAf_ngZxs71RonY3GuLL8TVAADHFw_OAAAf_ngZxs71RonY3GuLL8TVAABLH9QmAAA=" event_id = "AAMkADY0MDg1MTVjLTg5ZjItNGQxYS04MGQ3LWY2NjJmYjM0YmZhOQBGAAAAAADXD7SdVoWYQI4RYXbBumMEBwAf_ngZxs71RonY3GuLL8TVAADHFw_OAAAf_ngZxs71RonY3GuLL8TVAADQqYjcAAA%3D"
ret = update_calendar_event(token, event_id, data) ret = get_calendar_event(event_id)
#ret = update_calendar_event(token, event_id, data)
print(json.dumps(ret, indent=2)) print(json.dumps(ret, indent=2))