forked from Decentrala/website
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#! /usr/bin/env python3
 | 
						|
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", "ČET", "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.strip()}
 | 
						|
            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"\t\t\t<tr> <td>{date}</td> <td>{day}.</td> <td>{title}</td> </tr>\n"
 | 
						|
    return html
 | 
						|
 | 
						|
def render_page(table: str) -> str:
 | 
						|
    head = "<head><meta charset=\"UTF-8\"><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><img src=\"/img/logo-light.svg\"> 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>"
 | 
						|
    footer = f"{p1}{p2}{link}"
 | 
						|
    return f"<html>{head}<body><main>{header}{subheader}\
 | 
						|
<table>{table}</table>{footer}</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()
 |