add attend functionallity
This commit is contained in:
25
app.py
25
app.py
@@ -1,9 +1,10 @@
|
||||
import calendar_interface
|
||||
import sqlite3
|
||||
import logging
|
||||
import json
|
||||
|
||||
from flask import Flask, render_template, g, request, url_for, flash, redirect
|
||||
from werkzeug.exceptions import abort
|
||||
|
||||
import calendar_interface
|
||||
import db
|
||||
import auth
|
||||
|
||||
@@ -29,3 +30,23 @@ def index():
|
||||
# def post(post_id):
|
||||
# post = get_post(post_id)
|
||||
# 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'))
|
||||
@@ -70,7 +70,9 @@ def execute_patch_request(token, endpoint, data):
|
||||
#data=data,
|
||||
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}"
|
||||
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")
|
||||
|
||||
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():
|
||||
|
||||
t1=datetime.now()
|
||||
@@ -118,6 +126,27 @@ def convert_datetimes(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__":
|
||||
|
||||
@@ -176,8 +205,9 @@ if __name__ == "__main__":
|
||||
data["attendees"][0]["emailAddress"]["address"] = "struebin.patrick@gmail.com"
|
||||
|
||||
#Test2
|
||||
event_id = "AAMkADY0MDg1MTVjLTg5ZjItNGQxYS04MGQ3LWY2NjJmYjM0YmZhOQBGAAAAAADXD7SdVoWYQI4RYXbBumMEBwAf_ngZxs71RonY3GuLL8TVAADHFw_OAAAf_ngZxs71RonY3GuLL8TVAABLH9QmAAA="
|
||||
ret = update_calendar_event(token, event_id, data)
|
||||
event_id = "AAMkADY0MDg1MTVjLTg5ZjItNGQxYS04MGQ3LWY2NjJmYjM0YmZhOQBGAAAAAADXD7SdVoWYQI4RYXbBumMEBwAf_ngZxs71RonY3GuLL8TVAADHFw_OAAAf_ngZxs71RonY3GuLL8TVAADQqYjcAAA%3D"
|
||||
ret = get_calendar_event(event_id)
|
||||
#ret = update_calendar_event(token, event_id, data)
|
||||
|
||||
print(json.dumps(ret, indent=2))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user