Compare commits

..

No commits in common. "38b66677ab8c01aee10cd59e745af9ce3ea88092" and "7e62a7af3fb4f20556066fc9b9ccb7620c0add91" have entirely different histories.

3 changed files with 26 additions and 31 deletions

View File

@ -106,7 +106,7 @@ in
'' ''
install -Dm600 ${envFile} /run/pvv-calendar-bot/env install -Dm600 ${envFile} /run/pvv-calendar-bot/env
${pkgs.replace-secret}/bin/replace-secret '@MATRIX_ACCESS_TOKEN@' ${cfg.settings.secretsFile} /run/pvv-calendar-bot/env ${pkgs.replace-secret}/bin/replace-secret '@MATRIX_ACCESS_TOKEN@' ${cfg.settings.secretsFile} /run/pvv-calendar-bot/env
${pkgs.replace-secret}/bin/replace-secret '@MYSQL_PASSWORD@' ${cfg.settings.database.passwordFile} /run/pvv-calendar-bot/env #${pkgs.replace-secret}/bin/replace-secret '@MYSQL_PASSWORD@' ${cfg.settings.database.passwordFile} /run/pvv-calendar-bot/env
''; '';
serviceConfig = { serviceConfig = {

View File

@ -10,14 +10,15 @@ from markdown2 import Markdown
import asyncio import asyncio
from .sql_connector import fetch_events, Event from .sql_connector import fetch_events, Event
MATRIX_URL=os.environ.get("MATRIX_URL","https://matrix.pvv.ntnu.no").strip() MATRIX_URL=os.environ.get("MATRIX_URL","https://matrix.pvv.ntnu.no")
MATRIX_USER=os.environ.get("MATRIX_USER","@bot_calendar:pvv.ntnu.no").strip() MATRIX_USER=os.environ.get("MATRIX_USER","@bot_calendar:pvv.ntnu.no")
MATRIX_TOKEN=os.environ.get("MATRIX_TOKEN").strip() MATRIX_TOKEN=os.environ.get("MATRIX_TOKEN")
ANNOUNCEMENT_CHANNEL=os.environ.get("ANNOUNCEMENT_CHANNEL", "!announcements:pvv.ntnu.no").strip() ANNOUNCEMENT_CHANNEL=os.environ.get("ANNOUNCEMENT_CHANNEL", "!announcements:pvv.ntnu.no")
client = None client = None
def create_announcement(event: Event, atEveryone: bool) -> str:
def create_announcement(event,atEveryone):
url = "https://www.pvv.ntnu.no/hendelser/info.php?id={}".format(event.id) url = "https://www.pvv.ntnu.no/hendelser/info.php?id={}".format(event.id)
msgText = dedent('''\ msgText = dedent('''\
## Dagens arrangement / Event of the Day: "{name}" ## Dagens arrangement / Event of the Day: "{name}"
@ -37,15 +38,10 @@ def create_announcement(event: Event, atEveryone: bool) -> str:
if atEveryone: if atEveryone:
msgText = msgText + '\n@room' msgText = msgText + '\n@room'
return msgText return msgText
async def sendMatrixAnnouncement( async def sendMatrixAnnouncement(event: Event, channel: str = ANNOUNCEMENT_CHANNEL, atEveryone: bool = False) -> None:
event: Event,
channel: str = ANNOUNCEMENT_CHANNEL,
atEveryone: bool = False
) -> None:
msgText = create_announcement(event,atEveryone) msgText = create_announcement(event,atEveryone)
return await client.room_send( return await client.room_send(
room_id=channel, room_id=channel,
@ -54,7 +50,7 @@ async def sendMatrixAnnouncement(
"msgtype": "m.text", "msgtype": "m.text",
"body": msgText, "body": msgText,
"format": "org.matrix.custom.html", "format": "org.matrix.custom.html",
"formatted_body": Markdown().convert(msgText), "formatted_body": Markdown().convert(msgText)
} }
) )

View File

@ -20,34 +20,33 @@ class Event:
def fetch_events(): def fetch_events():
mydb = mysql.connector.connect( mydb = mysql.connector.connect(
host = os.environ.get("MYSQL_URL","mysql.pvv.ntnu.no").strip(), host = os.environ.get("MYSQL_URL","mysql.pvv.ntnu.no"),
user = os.environ.get("MYSQL_USER","calendar-bot").strip(), user = os.environ.get("MYSQL_USER","calendar-bot"),
password = os.environ["MYSQL_PASSWORD"].strip(), password = os.environ["MYSQL_PASSWORD"], #lmao
database = "www-data_nettside", database = "www-data_nettside"
) )
mycursor = mydb.cursor() mycursor = mydb.cursor()
mycursor.execute(""" mycursor.execute("""
SELECT id,name,start,stop,location,description,organiser SELECT id,name,start,stop,location,description,organiser
FROM events FROM events
WHERE DATE(start) = CURDATE() WHERE DATE(start) = CURDATE()
""") """)
db_result = mycursor.fetchall() db_result = mycursor.fetchall()
results = [] results = []
for row in db_result: for row in db_result:
results.append(Event( results.append(Event(id=row[0],
id = row[0], name=row[1],
name = row[1], start=datetime.fromisoformat(row[2]),
start = datetime.fromisoformat(row[2]), stop=datetime.fromisoformat(row[3]),
stop = datetime.fromisoformat(row[3]), location=row[4],
location = row[4], description=row[5],
description = row[5], organiser=row[6],
organiser = row[6], ))
))
return results return results
if __name__ == "__main__": if __name__ == "__main__":
pprint(fetch_events()) pprint(fetch_events())