Skip to content

Commit e4c3454

Browse files
committed
Update Main Page of Curriculum
1 parent 76a2275 commit e4c3454

3 files changed

Lines changed: 113 additions & 0 deletions

File tree

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
import os
2+
from datetime import datetime
3+
from dateutil.relativedelta import relativedelta
4+
from Google import GoogleConnector
5+
from Helpers import https_fn_custom, firebase_functions_custom
6+
7+
8+
@https_fn_custom()
9+
@firebase_functions_custom(auth_level=1)
10+
def activities_u_get(data):
11+
# Initialize the Google client
12+
google = GoogleConnector()
13+
14+
# Get details
15+
user_details = data.get('user_details')
16+
17+
# Get Calendar IDs
18+
CALENDAR_CLASSES_ID = os.getenv('CALENDAR_CLASSES_ID')
19+
CALENDAR_CAMPS_ID = os.getenv('CALENDAR_CAMPS_ID')
20+
21+
# Get today and same day next week
22+
first_day = datetime.combine(datetime.today(), datetime.min.time()).isoformat()
23+
last_day = (datetime.today() + relativedelta(months=0, days=7)).isoformat()
24+
25+
# Get Classes Events
26+
events_classes_result = google.calendar.events().list(
27+
calendarId=CALENDAR_CLASSES_ID,
28+
timeMin=first_day + 'Z',
29+
timeMax=last_day + 'Z',
30+
singleEvents=True,
31+
orderBy='startTime'
32+
).execute()
33+
events_classes = events_classes_result.get('items', [])
34+
35+
# Get Camps Events
36+
events_camps_result = google.calendar.events().list(
37+
calendarId=CALENDAR_CAMPS_ID,
38+
timeMin=first_day + 'Z',
39+
timeMax=last_day + 'Z',
40+
singleEvents=True,
41+
orderBy='startTime'
42+
).execute()
43+
events_camps = events_camps_result.get('items', [])
44+
45+
events = events_classes + events_camps
46+
47+
processed_events = [{
48+
"summary": event["summary"],
49+
"time": event["start"]["dateTime"][11:16] + " - " + event["end"]["dateTime"][11:16],
50+
"date": event["start"]["dateTime"][:10],
51+
} for event in events if
52+
user_details.get("email") in list(map(lambda x: x.get("email"), event.get("attendees", [])))]
53+
54+
sorted_events = sorted(processed_events, key=lambda x: (x["date"], x["time"]))
55+
56+
return {"data": {"response": sorted_events, "status": 200}}
57+
# events_classes = self.__process_google_events(
58+
# [event for event in events_classes if 'start' in event and 'dateTime' in event['start']])
59+
#
60+
# # Get Camp Events
61+
# events_camps_result = self.Client.calendar.events().list(
62+
# calendarId=CALENDAR_CAMPS_ID,
63+
# timeMin=first_day + 'Z',
64+
# timeMax=last_day + 'Z',
65+
# singleEvents=True,
66+
# orderBy='startTime'
67+
# ).execute()
68+
# events_camps = events_camps_result.get('items', [])
69+
# events_camps = self.__process_google_events(
70+
# [event for event in events_camps if 'start' in event and 'dateTime' in event['start']])
71+
#
72+
# # Get Additional Payments from SF
73+
# events_extra = sf.get_additional_payments(self.year, self.month)
74+
#
75+
# # Combine Events
76+
# events = events_classes + events_camps + events_extra
77+
#
78+
# # Process Events
79+
# return events
80+
#
81+
# def __process_google_events(self, events):
82+
# processed_events = []
83+
# for event in events:
84+
# not_match_list = lambda email: not any([re.compile(black).match(email) for black in self.blacklist])
85+
# try:
86+
# teachers = [attendee.get('email') for attendee in event.get('attendees') if
87+
# not_match_list(attendee.get('email'))] if event.get('attendees') else []
88+
# start = event['start']['dateTime']
89+
# end = event['end']['dateTime']
90+
# minutes = (datetime.fromisoformat(end) - datetime.fromisoformat(start)).total_seconds() / 60
91+
# minutes = round(minutes, 2)
92+
# start = start[:10]
93+
# code = event['summary'].split(' - ')[0].replace(' ', '')
94+
# held = not ('[' in code and ']' in code)
95+
# if ']' in code:
96+
# code = code.split(']')[1]
97+
# title = event['summary'].split(' - ')
98+
# title.pop(0)
99+
# title = '-'.join(title)
100+
# amount = round(self.__calculate_amount(code, minutes), 2)
101+
# nice_name = f" [{code}] {title} ({start}, {minutes}min, {amount}€)"
102+
# processed_events.append({
103+
# 'teachers': teachers,
104+
# 'held': held,
105+
# 'minutes': minutes,
106+
# 'amount': amount,
107+
# 'nice_name': nice_name
108+
# })
109+
# except Exception as e:
110+
# raise KeyError(f"[WARNING] - Problem with event {event.get('summary')} -> {e}")
111+
# return processed_events
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .Activities_U_Get import activities_u_get

functions/FunctionsCurriculum/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@
1313
from .PaymentsAdditional import *
1414
from .Replacements import *
1515
from .Reimbursements import *
16+
from .Activities import *

0 commit comments

Comments
 (0)