diff --git a/app.py b/app.py index 47b862e..99109dc 100644 --- a/app.py +++ b/app.py @@ -2,7 +2,7 @@ import os import logging import json -from flask import Flask, current_app, render_template, g, request, url_for, flash, redirect +from flask import Flask, render_template, g, url_for, redirect from werkzeug.exceptions import abort import calendar_interface @@ -28,23 +28,38 @@ if not (app.config["DEBUG"] or app.config["TESTING"]): @app.route('/') @auth.login_required def index(): - events = calendar_interface.get_future_calendar_events().get("value") calendar_interface.convert_datetimes(events) # Check current users attendance in event for event in events: ret = calendar_interface.check_attendee_presence(event, g.user["email"]) event["user_attends"] = ret - logging.info("User %s attending: %s", g.user["email"], ret) if events is None: abort(404) else: return render_template('index.html', events=events, user=g.user) -# @app.route('/') # TODO: access detailed event view -# def post(post_id): -# post = get_post(post_id) -# return render_template('show_event.html', post=post) + +@app.route('/') +@auth.login_required +def show_event(id): + event = calendar_interface.get_calendar_event(id) + calendar_interface.convert_datetime(event) + + attendees= ", ".join( + [a["emailAddress"]["name"] + " (" + a["emailAddress"]["name"] + ")" for a in event["attendees"]] + ) + location= "
".join(event["location"]["address"].values()) + + return render_template( + 'show_event.html', + subject=event["subject"], + attendees=attendees, + content=event["body"]["content"], + location=location, + start=event["start"]["date"] + " - " + event["start"]["time"], + end=event["end"]["date"] + " - " + event["end"]["time"] + ) @app.route('//attend') @auth.login_required diff --git a/calendar_interface.py b/calendar_interface.py index 3c97022..00f3240 100644 --- a/calendar_interface.py +++ b/calendar_interface.py @@ -126,24 +126,29 @@ def get_future_calendar_events(): return execute_user_request(token, f"calendars/{MsalConfig.CALENDAR_ID}/calendarview{filter}") + +def convert_datetime(event): + start_date_time = datetime.fromisoformat(event["start"]["dateTime"][:-1]) \ + .replace(tzinfo=ZoneInfo('UTC')).astimezone(ZoneInfo('localtime')) + + stop_date_time = datetime.fromisoformat(event["end"]["dateTime"][:-1]) \ + .replace(tzinfo=ZoneInfo('UTC')).astimezone(ZoneInfo('localtime')) + + event["start"]["date"] = start_date_time.strftime("%d.%m.%Y") + event["start"]["time"] = start_date_time.strftime("%H:%M:%S") + event["end"]["date"] = stop_date_time.strftime("%d.%m.%Y") + event["end"]["time"] = stop_date_time.strftime("%H:%M:%S") + event["duration"] = str(stop_date_time - start_date_time)[:-3] + event["weekday"] = WEEKDAYS[start_date_time.weekday()] + return event + def convert_datetimes(events): for event in events: - - start_date_time = datetime.fromisoformat(event["start"]["dateTime"][:-1]) \ - .replace(tzinfo=ZoneInfo('UTC')).astimezone(ZoneInfo('localtime')) - - stop_date_time = datetime.fromisoformat(event["end"]["dateTime"][:-1]) \ - .replace(tzinfo=ZoneInfo('UTC')).astimezone(ZoneInfo('localtime')) - - event["start"]["date"] = start_date_time.strftime("%d.%m.%Y") - event["start"]["time"] = start_date_time.strftime("%H:%M:%S") - event["end"]["date"] = stop_date_time.strftime("%d.%m.%Y") - event["end"]["time"] = stop_date_time.strftime("%H:%M:%S") - event["duration"] = str(stop_date_time - start_date_time)[:-3] - event["weekday"] = WEEKDAYS[start_date_time.weekday()] + convert_datetime(event) return events + def add_attendee(data, name, email): d = { "type": "required", diff --git a/templates/index.html b/templates/index.html index 74ec291..69e5386 100644 --- a/templates/index.html +++ b/templates/index.html @@ -11,7 +11,9 @@

{{event["weekday"] + " " + event["start"]["date"] }}

{% endif %} -

{{ event['subject'] }}

+ +

{{ event['subject'] }}

+
{% if not event["user_attends"] %} diff --git a/templates/show_event.html b/templates/show_event.html new file mode 100644 index 0000000..47ed9a2 --- /dev/null +++ b/templates/show_event.html @@ -0,0 +1,13 @@ +{% extends 'base.html' %} + +{% block content %} +

{{ title }}

+

{{ subject }}

+
+

Start: {{ start }}

+

Ende: {{ end }}

+

{{ content |safe }}

+

{{ attendees }}

+

{{ location |safe }}

+ +{% endblock %} \ No newline at end of file