59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
import os
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from pprint import pprint
|
|
|
|
import mysql.connector
|
|
|
|
|
|
@dataclass
|
|
class Event:
|
|
"""
|
|
An Event with id,name,start,stop,location,description,organiser
|
|
"""
|
|
|
|
id: int
|
|
name: str
|
|
start: datetime
|
|
stop: datetime
|
|
location: str
|
|
description: str
|
|
organiser: str
|
|
|
|
|
|
def fetch_events() -> list[Event]:
|
|
mydb = mysql.connector.connect(
|
|
host=os.environ.get("MYSQL_URL", "mysql.pvv.ntnu.no").strip(),
|
|
user=os.environ.get("MYSQL_USER", "calendar-bot").strip(),
|
|
password=os.environ["MYSQL_PASSWORD"].strip(),
|
|
database="www-data_nettside",
|
|
)
|
|
|
|
mycursor = mydb.cursor()
|
|
mycursor.execute("""
|
|
SELECT id,name,start,stop,location,description,organiser
|
|
FROM events
|
|
WHERE DATE(start) = CURDATE()
|
|
""")
|
|
|
|
db_result = mycursor.fetchall()
|
|
|
|
results = []
|
|
for row in db_result:
|
|
results.append(
|
|
Event(
|
|
id=row[0],
|
|
name=row[1],
|
|
start=datetime.fromisoformat(row[2]),
|
|
stop=datetime.fromisoformat(row[3]),
|
|
location=row[4],
|
|
description=row[5],
|
|
organiser=row[6],
|
|
),
|
|
)
|
|
return results
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pprint(fetch_events())
|