Implemented poster script
This commit is contained in:
58
poster.py
Normal file
58
poster.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import csv
|
||||
import datetime as dt
|
||||
from dateutil import relativedelta
|
||||
|
||||
EVENTS_CSV_PATH = "dogadjaji.csv"
|
||||
CURRENT_TIME = dt.date.today()
|
||||
NEXT_MONTH = CURRENT_TIME + relativedelta.relativedelta(months=1, day=1)
|
||||
DAYS_OF_WEEK_SR = ("PON", "UTO", "SRE", "CET", "PET", "SUB", "NED")
|
||||
MONTHS_SR = ("Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar")
|
||||
|
||||
def load_events(csv_path:str) -> list[dict]:
|
||||
events = []
|
||||
with open(csv_path) as csv_file:
|
||||
csv_reader = csv.reader(csv_file)
|
||||
next(csv_reader, None)
|
||||
for event in csv_reader:
|
||||
event_date = event[0]
|
||||
event_date_parsed = dt.datetime.strptime(event_date, "%d-%m-%Y").date()
|
||||
event_time = event[1]
|
||||
event_title = event[3]
|
||||
current_event = {"date":event_date_parsed,
|
||||
"time":event_time,
|
||||
"title":event_title}
|
||||
|
||||
if event_date_parsed >= NEXT_MONTH:
|
||||
events.append(current_event)
|
||||
|
||||
return events
|
||||
|
||||
def render_table(events:list[dict])-> str:
|
||||
html = ""
|
||||
for event in events:
|
||||
date = DAYS_OF_WEEK_SR[event["date"].weekday()]
|
||||
day = event["date"].day
|
||||
title = event["title"]
|
||||
html += f"<tr><td>{date}</td><td>{day}.</td><td>{title}</td></tr>\n"
|
||||
return html
|
||||
|
||||
def render_page(table: str) -> str:
|
||||
head = "<head><link rel=\"stylesheet\" href=\"styles/poster.css\"><head>"
|
||||
header = "<h1>DECENTRALA</h1>"
|
||||
subheader = f"<h2>Plan za {MONTHS_SR[NEXT_MONTH.month - 1]}</h2>"
|
||||
link = "<div id=link>dmz.rs</div>"
|
||||
p1 = "<p>Radionice počinju u <strong>19h</strong> u Društvenom centru Krov u <strong>Kraljice Marije 47</strong>.</p>"
|
||||
p2 = "<p>Ulaz u zgradu je u prolazu pored Štark prodavnice slatkiša, odmah pored menjačnice. DC Krov je na poslednjem spratu.</p>"
|
||||
return f"<html>{head}<body><main>{header}{subheader}<table>{table}</table>{p1}{p2}{link}</main></body></html>"
|
||||
|
||||
def main():
|
||||
events = load_events(EVENTS_CSV_PATH)
|
||||
table = render_table(events)
|
||||
page = render_page(table)
|
||||
f = open("poster.html", "w")
|
||||
f.write(page)
|
||||
f.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user