[Gobal] added flake8 and did format

This commit is contained in:
coja
2026-05-04 10:33:09 +02:00
parent 732640cf90
commit aa26a3675e
13 changed files with 308 additions and 150 deletions

127
prep.py
View File

@@ -18,11 +18,12 @@ TYPES_DICT = {
"party": ("zabava", "entertainment"),
}
env = Environment(loader=FileSystemLoader('template'))
env = Environment(loader=FileSystemLoader("template"))
def load_events(csv_path:str) -> list[dict]:
def load_events(csv_path: str) -> list[dict]:
events = []
with open(csv_path, encoding='utf-8') as csv_file:
with open(csv_path, encoding="utf-8") as csv_file:
csv_reader = csv.DictReader(csv_file, skipinitialspace=True)
for event in csv_reader:
event_date = event["datum"]
@@ -30,17 +31,20 @@ def load_events(csv_path:str) -> list[dict]:
event_time = event["vreme"]
event_location = event["lokacija"]
event_title = event["tema"]
types = event["tip"].split()
types = event["tip"].split()
link = event.get("link", "")
current_event = {"date":event_date_parsed,
"time":event_time,
"location": event_location,
"title":event_title.strip(),
"types": types,
"link": link}
current_event = {
"date": event_date_parsed,
"time": event_time,
"location": event_location,
"title": event_title.strip(),
"types": types,
"link": link,
}
events.append(current_event)
return events
def build_ical(events: list[dict]) -> str:
today = datetime.today().now()
events_ical = ""
@@ -54,8 +58,17 @@ def build_ical(events: list[dict]) -> str:
url = event["link"]
uid = str(date.month).zfill(2) + str(date.day).zfill(2) + time[:2]
date_str = str(date.year) + str(date.month).zfill(2) + str(date.day).zfill(2)
created = str(today.year) + str(today.month).zfill(2) + str(today.day).zfill(2) + "T" + str(today.hour).zfill(2) + str(today.minute).zfill(2) + str(today.second).zfill(2) + "Z"
date_str = str(date.year) + str(date.month).zfill(2) + str(date.day).zfill(2)
created = (
str(today.year)
+ str(today.month).zfill(2)
+ str(today.day).zfill(2)
+ "T"
+ str(today.hour).zfill(2)
+ str(today.minute).zfill(2)
+ str(today.second).zfill(2)
+ "Z"
)
date_str = date_str + "T" + time.replace(":", "") + "00"
event_template_str = env.get_template("event.ical").render(
@@ -64,7 +77,15 @@ def build_ical(events: list[dict]) -> str:
DATE=date_str,
TITLE=title,
URL=url,
LOCATION="DC Krov\\, Kraljice Marije 47\\, 6\\, Beograd\\, Serbia" if location.startswith("DC Krov") else ("Matematički fakultet\\, Svetog Nikole 39\\, Beograd\\, Serbia" if location.startswith("Matematički fakultet (Učionica 153)") else location)
LOCATION=(
"DC Krov\\, Kraljice Marije 47\\, 6\\, Beograd\\, Serbia"
if location.startswith("DC Krov")
else (
"Matematički fakultet\\, Svetog Nikole 39\\, Beograd\\, Serbia"
if location.startswith("Matematički fakultet (Učionica 153)")
else location
)
),
)
events_ical += event_template_str
@@ -72,27 +93,34 @@ def build_ical(events: list[dict]) -> str:
events_ical += file.read()
return events_ical
def render_page(template_name, output_path, context):
template = env.get_template(template_name)
with open(output_path, "w") as file:
file.write(template.render(context))
# Main execution
events = sorted(load_events("dogadjaji.csv"), key=lambda e: e["date"])
today = datetime.today().date()
past_events = sorted([e for e in events if e["date"] <= today], key=lambda e: e["date"], reverse=True)
new_events = [e for e in events if e["date"] >= today]
past_events = sorted(
[e for e in events if e["date"] <= today], key=lambda e: e["date"], reverse=True
)
new_events = [e for e in events if e["date"] >= today]
sr_types = {k: v[0] for k, v in TYPES_DICT.items()}
en_types = {k: v[1] for k, v in TYPES_DICT.items()}
# Build Serbian Pages
render_page("events-sr.html", "pages/sr/events.html", {
"lang": "sr",
"title": "Događaji",
"sr_link": "/events_archive",
"events_html": env.from_string("""
render_page(
"events-sr.html",
"pages/sr/events.html",
{
"lang": "sr",
"title": "Događaji",
"sr_link": "/events_archive",
"events_html": env.from_string("""
{% for event in events %}
<div class='event'>
<div class='date'>{{ event.date.strftime('%a, %d. %b. %Y') }}, {{ event.time }}h</div>
@@ -116,14 +144,18 @@ render_page("events-sr.html", "pages/sr/events.html", {
{% endif %}
</div>
{% endfor %}
""").render(events=new_events, types_names=sr_types)
})
""").render(events=new_events, types_names=sr_types),
},
)
render_page("events-en.html", "pages/en/events.html", {
"lang": "en",
"title": "Events",
"sr_link": "/events_archive",
"events_html": env.from_string("""
render_page(
"events-en.html",
"pages/en/events.html",
{
"lang": "en",
"title": "Events",
"sr_link": "/events_archive",
"events_html": env.from_string("""
{% for event in events %}
<div class='event'>
<div class='date'>{{ event.date.strftime('%a, %d. %b. %Y') }}, {{ event.time }}h</div>
@@ -147,15 +179,19 @@ render_page("events-en.html", "pages/en/events.html", {
{% endif %}
</div>
{% endfor %}
""").render(events=new_events, types_names=en_types)
})
""").render(events=new_events, types_names=en_types),
},
)
# Build Archive Pages
render_page("events_archive-sr.html", "pages/sr/events_archive.html", {
"lang": "sr",
"title": "Arhiva događaja",
"sr_link": "/events",
"events_html": env.from_string("""
render_page(
"events_archive-sr.html",
"pages/sr/events_archive.html",
{
"lang": "sr",
"title": "Arhiva događaja",
"sr_link": "/events",
"events_html": env.from_string("""
{% for event in events %}
<div class='event'>
<div class='date'>{{ event.date.strftime('%a, %d. %b. %Y') }}, {{ event.time }}h</div>
@@ -179,14 +215,18 @@ render_page("events_archive-sr.html", "pages/sr/events_archive.html", {
{% endif %}
</div>
{% endfor %}
""").render(events=past_events, types_names=sr_types)
})
""").render(events=past_events, types_names=sr_types),
},
)
render_page("events_archive-en.html", "pages/en/events_archive.html", {
"lang": "en",
"title": "Events archive",
"sr_link": "/en/events",
"events_html": env.from_string("""
render_page(
"events_archive-en.html",
"pages/en/events_archive.html",
{
"lang": "en",
"title": "Events archive",
"sr_link": "/en/events",
"events_html": env.from_string("""
{% for event in events %}
<div class='event'>
<div class='date'>{{ event.date.strftime('%a, %d. %b. %Y') }}, {{ event.time }}h</div>
@@ -210,8 +250,9 @@ render_page("events_archive-en.html", "pages/en/events_archive.html", {
{% endif %}
</div>
{% endfor %}
""").render(events=past_events, types_names=en_types)
})
""").render(events=past_events, types_names=en_types),
},
)
# Build ical
with open("site/events.ical", "w") as file: