Compare commits

...

4 Commits

Author SHA1 Message Date
44910c183b Implement Archive builder. Change events layout 2023-08-30 13:09:10 +02:00
be37b42273 Update TODO 2023-08-30 13:00:09 +02:00
29c1b7ad55 Update events list 2023-08-30 12:59:10 +02:00
4233fe7f44 Implement events pages skeletons 2023-08-30 11:56:05 +02:00
9 changed files with 203 additions and 122 deletions

View File

@ -31,9 +31,12 @@ nginx -p . -s stop
## TODO: ## TODO:
- [x] create page builder - [x] create page builder
- rename `prep.py` to more informative name (`build_events.py`)
- [ ] create blogging system - [ ] create blogging system
- [ ] create xmpp bot that connects to events section. - [ ] create xmpp bot that connects to events section.
- [ ] webring system - [ ] webring system
- [x] make page - [x] make page
- [ ] populate page - [ ] populate page
- [ ] make english version (localisation) - [x] make english version
- double check spelling and wording
- add account and donations page and style them with the site style

View File

@ -5,6 +5,7 @@ PAGES = [
{'name': 'account', 'titleSR': 'Nalog', 'titleEN': 'Account', 'style': 'account'}, {'name': 'account', 'titleSR': 'Nalog', 'titleEN': 'Account', 'style': 'account'},
{'name': 'contact', 'titleSR': 'Kontakt', 'titleEN': 'Contact', 'style': 'contact'}, {'name': 'contact', 'titleSR': 'Kontakt', 'titleEN': 'Contact', 'style': 'contact'},
{'name': 'events', 'titleSR': 'Događaji', 'titleEN': 'Events', 'style': 'events'}, {'name': 'events', 'titleSR': 'Događaji', 'titleEN': 'Events', 'style': 'events'},
{'name': 'events_archive', 'titleSR': 'Arhiva događaja', 'titleEN': 'Events archive', 'style': 'events'},
{'name': 'services', 'titleSR': 'Servisi', 'titleEN': 'Services', 'style': 'services'}, {'name': 'services', 'titleSR': 'Servisi', 'titleEN': 'Services', 'style': 'services'},
{'name': 'webring', 'titleSR': 'Webring', 'titleEN': 'Webring', 'style': ''}, {'name': 'webring', 'titleSR': 'Webring', 'titleEN': 'Webring', 'style': ''},
] ]

View File

@ -1,21 +1,63 @@
datum, vreme, lokacija, tema datum, vreme, lokacija, tema
03-05-2023, 12:00, Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543, Otvaranje izlozbe (Q&A) 20-12-2022, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u računarske mreze, firewall
03-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hakaton žurka
16-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Radionica privatnosti na internetu
04-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hakaton žurka
13-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u Bitcoin radonica
14-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Privacy & Security predavanje
20-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cyber reconnisance radionica
21-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u konfiguraciju servera radionica (pomerena)
27-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Šta je Decentrala + hakaton
03-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u python
10-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u python
13-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, TLS (SSL) kriptografija
14-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Matrix chat protokol
20-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, LDAP protokol radionica
21-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Android reverse engineering
25-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Open hackerspace day - film
27-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, SQL baze podataka
28-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Esolang
03-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pentest radionica
04-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Runtime modification of Android apps
10-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hakaton
11-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u OpenBSD
17-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Lan party
18-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pentest radionica nastavak
23-04-2023, 19:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u mreže
03-05-2023, 12:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, Otvaranje izlozbe (Q&A)
03-05-2023, 18:00, KC Grad https://www.openstreetmap.org/node/4118716889, Linux install fest 03-05-2023, 18:00, KC Grad https://www.openstreetmap.org/node/4118716889, Linux install fest
04-05-2023, 17:00, Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A) 04-05-2023, 17:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A)
04-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u racunarske mreze 04-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u racunarske mreze
04-05-2023, 21:00, n/a, Online sastanak sa Zajednicom za slobodnu tehnologiju iz Kikinde 04-05-2023, 21:00, n/a, Online sastanak sa Zajednicom za slobodnu tehnologiju iz Kikinde
05-05-2023, 15:30, Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A) 05-05-2023, 15:30, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A)
06-05-2023, 12:00, Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A) 06-05-2023, 12:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A)
07-05-2023, 16:00, Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543, ULUS izlozba (diskusija) 07-05-2023, 16:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (diskusija)
08-05-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux install day 08-05-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux install day
09-05-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cryptoparty - Uvod u privatnost 09-05-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cryptoparty - Uvod u privatnost
11-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u racunarske mreze 11-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u računarske mreže
01-08-2023, 19:00, DC Krov, Tehno veče 05-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Šifre
07-08-2023, 19:00, DC Krov, Linux ricing 06-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Random i kriptografija
08-08-2023, 19:00, DC Krov, Lambda račun 12-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u Blender
14-08-2023, 19:00, DC Krov, Linux distro diskusija 13-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
15-08-2023, 19:00, DC Krov, Pirati 777 mora 19-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pisanje BASH skripti
21-08-2023, 19:00, DC Krov, Python vežbe 20-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
22-08-2023, 19:00, DC Krov, Autentifikacija na internetu 26-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Python vežbe
28-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Podesavanje Mail servera 27-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
29-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Prevodjenje wiki-a 03-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, DNS
04-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
10-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Blender, 3D modelovanje
11-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
17-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, OpenGL
18-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
24-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Web scraping
25-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
31-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Python - Web development
01-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Tehno veče
07-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux ricing
08-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Lambda račun
14-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux distro diskusija
15-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pirati 777 mora
21-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Python vežbe
22-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Autentifikacija na internetu
28-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Podešavanje Mail servera
29-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Prevođenje wiki-a

1 datum datum, vreme, lokacija, tema vreme lokacija tema
2 03-05-2023 20-12-2022, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u računarske mreze, firewall 12:00 Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543 Otvaranje izlozbe (Q&A)
3 03-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hakaton žurka
4 16-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Radionica privatnosti na internetu
5 04-01-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hakaton žurka
6 13-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u Bitcoin radonica
7 14-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Privacy & Security predavanje
8 20-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cyber reconnisance radionica
9 21-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u konfiguraciju servera radionica (pomerena)
10 27-02-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Šta je Decentrala + hakaton
11 03-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u python
12 10-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u python
13 13-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, TLS (SSL) kriptografija
14 14-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Matrix chat protokol
15 20-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, LDAP protokol radionica
16 21-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Android reverse engineering
17 25-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Open hackerspace day - film
18 27-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, SQL baze podataka
19 28-03-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Esolang
20 03-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pentest radionica
21 04-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Runtime modification of Android apps
22 10-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Hakaton
23 11-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u OpenBSD
24 17-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Lan party
25 18-04-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pentest radionica nastavak
26 23-04-2023, 19:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u mreže
27 03-05-2023, 12:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, Otvaranje izlozbe (Q&A)
28 03-05-2023 03-05-2023, 18:00, KC Grad https://www.openstreetmap.org/node/4118716889, Linux install fest 18:00 KC Grad https://www.openstreetmap.org/node/4118716889 Linux install fest
29 04-05-2023 04-05-2023, 17:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A) 17:00 Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543 ULUS izlozba (Q&A)
30 04-05-2023 04-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u racunarske mreze 18:00 Polyhedra https://www.openstreetmap.org/node/4856556781 Uvod u racunarske mreze
31 04-05-2023 04-05-2023, 21:00, n/a, Online sastanak sa Zajednicom za slobodnu tehnologiju iz Kikinde 21:00 n/a Online sastanak sa Zajednicom za slobodnu tehnologiju iz Kikinde
32 05-05-2023 05-05-2023, 15:30, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A) 15:30 Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543 ULUS izlozba (Q&A)
33 06-05-2023 06-05-2023, 12:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (Q&A) 12:00 Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543 ULUS izlozba (Q&A)
34 07-05-2023 07-05-2023, 16:00, Cvijeta Zuzorić https://www.openstreetmap.org/node/256367543, ULUS izlozba (diskusija) 16:00 Cvijeta Zuzoric https://www.openstreetmap.org/node/256367543 ULUS izlozba (diskusija)
35 08-05-2023 08-05-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux install day 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Linux install day
36 09-05-2023 09-05-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cryptoparty - Uvod u privatnost 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Cryptoparty - Uvod u privatnost
37 11-05-2023 11-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u računarske mreže 18:00 Polyhedra https://www.openstreetmap.org/node/4856556781 Uvod u racunarske mreze
38 01-08-2023 05-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Šifre 19:00 DC Krov Tehno veče
39 07-08-2023 06-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Random i kriptografija 19:00 DC Krov Linux ricing
40 08-08-2023 12-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Uvod u Blender 19:00 DC Krov Lambda račun
41 14-08-2023 13-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana 19:00 DC Krov Linux distro diskusija
42 15-08-2023 19-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pisanje BASH skripti 19:00 DC Krov Pirati 777 mora
43 21-08-2023 20-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana 19:00 DC Krov Python vežbe
44 22-08-2023 26-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Python vežbe 19:00 DC Krov Autentifikacija na internetu
45 28-08-2023 27-06-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Podesavanje Mail servera
46 29-08-2023 03-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, DNS 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Prevodjenje wiki-a
47 04-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
48 10-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Blender, 3D modelovanje
49 11-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
50 17-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, OpenGL
51 18-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
52 24-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Web scraping
53 25-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Cybersecurity odbrana
54 31-07-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Python - Web development
55 01-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Tehno veče
56 07-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux ricing
57 08-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Lambda račun
58 14-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Linux distro diskusija
59 15-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Pirati 777 mora
60 21-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Python vežbe
61 22-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Autentifikacija na internetu
62 28-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Podešavanje Mail servera
63 29-08-2023, 19:00, DC Krov https://www.openstreetmap.org/node/10594728522, Prevođenje wiki-a

View File

@ -1 +1,2 @@
<h1>Events</h1> <h1>Events</h1>
<p>Following list contains all forthcoming events. Held events are listed in <a href="/en/events_archive">archive</a></p>

View File

@ -0,0 +1,2 @@
<h1>Events archive</h1>
<p>All events that we organized so far.</p><br>

View File

@ -1 +1,2 @@
<h1>Događaji</h1> <h1>Događaji</h1>
<p>Naredna lista sadrži sve predstojeće događaje. Za listu održanih događaja pogledajte <a href="/events_archive">arhivu</a></p>

View File

@ -0,0 +1,2 @@
<h1>Arhiva događaja</h1>
<p>Svi događaji koje smo do sada organzivali.</p><br>

152
prep.py
View File

@ -1,92 +1,88 @@
#! /usr/bin/env python #! /usr/bin/env python
import csv
from datetime import datetime from datetime import datetime
from functools import cmp_to_key
DAYS_SR = ["Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"] DAYS_SR = ["PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED"]
DAYS_EN = ["Monday ", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] DAYS_EN = ["MON ", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
MONTHS_SR = [
"Januar", "Februar", "Mart", "April", "Maj", "Jun", def load_events(csv_path:str) -> list[dict]:
"Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar", events = []
] with open(csv_path) as csv_file:
MONTHS_EN = [ csv_reader = csv.reader(csv_file)
"January", "February", "March", "April", "May", "June", next(csv_reader, None)
"July", "August", "September", "October", "November", "December", for event in csv_reader:
] event_date = event[0]
event_date_parsed = datetime.strptime(event_date, "%d-%m-%Y").date()
event_time = event[1]
event_location = event[2]
event_title = event[3]
current_event = {"date":event_date_parsed,
"time":event_time,
"location": event_location,
"title":event_title.strip()}
events.append(current_event)
return events
def build_html(events: list[dict], dayNames: list[str]) -> str:
events_html = []
for event in events:
title = event["title"]
location = event["location"]
date = event["date"]
date = dayNames[date.weekday()]+", "+str(date.day)+". "+str(date.month)+". "+str(date.year)+", "
time = event["time"]+"h"
event_html = []
event_html.append(f"<div class='date'>{date} {time}</div>")
event_html.append(f"<div class='title'>{title}</div>")
if "https://" in location:
place,link = location.split("https://")
event_html.append(f"<div class='place'><a href=\"https://{link}\">@{place.strip()}</a></div>")
else:
event_html.append(f"<div class='place'>@{location.strip()}</div>")
event_html = "".join(event_html)
events_html.append(f"\n<div class='event'>{event_html}</div>")
return events_html
events = sorted(load_events("dogadjaji.csv"), key=lambda e: e["date"])
today = datetime.today().date() today = datetime.today().date()
def parse_date(date): past_events = list(filter(lambda e: e["date"] <= today, events))
return datetime.strptime(date,"%d-%m-%Y").date() new_events = list(filter(lambda e: e["date"] >= today, events))
def compare_events(one, two):
one = parse_date(one.split(", ")[0])
two = parse_date(two.split(", ")[0])
if one>two:
return 1
elif one==two:
return 0
else:
return -1
def is_past_event(event):
return event < today
def load_events():
events = []
with open("dogadjaji.csv", "rt") as file:
file.readline()
for event in file.readlines():
event = event.strip()
if event != "":
events.append(event)
return events
def write_events(events):
with open("dogadjaji.csv", "wt") as file:
file.write("datum, vreme, lokacija, tema\n")
for event in events:
file.write(event+"\n")
def sort_events(events):
return sorted(events, key = cmp_to_key(compare_events))
def build_html(events, dayNames, monthNames): page_template = ""
newevents = []
for event in events:
date, time, location, title = event.split(", ")
date = parse_date(date)
if is_past_event(date):
continue
date = dayNames[date.weekday()]+", "+str(date.day)+". "+monthNames[date.month-1]+" "+str(date.year)+"."
time = time+"h"
future_event = []
future_event.append("<td> "+date+" </td>")
future_event.append("<td> "+time+" </td>")
if "https://" in location:
place,link = location.split("https://")
future_event.append("<td> <a href=\"https://"+link+"\""+"> "+place.strip()+" </a> </td>")
else:
future_event.append("<td> "+location.strip()+" </td>")
future_event.append("<td> "+title+" </td>")
newevents.append("<tr>\n"+"\n".join(future_event)+"\n</tr>")
return newevents
events = load_events() # Build Serbian Events page
events = sort_events(events) new_events_html = build_html(new_events, DAYS_SR)
write_events(events) with open("pages/sr/events.html", "r") as file:
page_template = ([line for line in file])[:2]
newevents = build_html(events, DAYS_SR, MONTHS_SR) with open("pages/sr/events.html", "w") as file:
file.writelines(page_template + new_events_html)
with open("pages/sr/events.html","wt") as file: # Build English Events page
file.writelines(["<h1>Događaji</h1>\n", "<table>\n", "<tr><th>Datum</th><th>Vreme</th><th>Mesto</th><th>Tema</th></tr>\n"]) new_events_html = build_html(new_events, DAYS_EN)
file.writelines(newevents) with open("pages/en/events.html", "r") as file:
file.writelines(["</table>"]) page_template = ([line for line in file])[:2]
newevents = build_html(events, DAYS_EN, MONTHS_EN) with open("pages/en/events.html", "w") as file:
file.writelines(page_template + new_events_html)
with open("pages/en/events.html","wt") as file: # Build Serbian Archive page
file.writelines(["<h1>Events</h1>\n", "<table>\n", "<tr><th>Date</th><th>Time</th><th>Place</th><th>Topic</th></tr>"]) past_events_html = build_html(past_events, DAYS_SR)
file.writelines(newevents) with open("pages/sr/events_archive.html", "r") as file:
file.writelines(["</table>"]) page_template = ([line for line in file])[:2]
with open("pages/sr/events_archive.html", "w") as file:
file.writelines(page_template + past_events_html)
# Build English Archive page
past_events_html = build_html(past_events, DAYS_EN)
with open("pages/en/events_archive.html", "r") as file:
page_template = ([line for line in file])[:2]
with open("pages/en/events_archive.html", "w") as file:
file.writelines(page_template + past_events_html)

View File

@ -1,30 +1,63 @@
table {
table-layout: fixed;
border-spacing: 0;
}
th,
td {
padding: 0 1rem 0 1rem;
text-align: left;
border-left: 2px solid var(--border);
}
th {
padding: 1rem 1rem 0 1rem;
border-bottom: 2px solid var(--border);
}
td:nth-child(odd) {
white-space: nowrap;
}
td {
padding: 0 1rem 1rem 1rem;
vertical-align: top;
}
h1 { h1 {
margin-bottom: 2rem; margin-bottom: 2rem;
font-weight: normal; font-weight: normal;
} }
.event {
display: flex;
flex-direction: row;
}
.event:hover {
border-bottom: 5px var(--hightlight) solid;
}
.event:hover>div {
padding-bottom: calc(0.5rem - 5px);
}
.event>div {
padding: 0.5rem;
white-space: nowrap;
}
.date {
width: 250px;
font-size: 0.9em;
overflow-x: hidden;
white-space: nowrap;
}
.title {
border-left: 2px solid var(--border);
font-weight: bold;
}
.place {
font-size: 0.9em;
}
@media screen and (max-width: 1160px) {
.event {
flex-direction: column;
margin-bottom: 1rem;
border-left: 2px solid var(--border);
}
.event > div {
padding: 0 0.5rem;
white-space: normal;
}
.event:hover {
border-bottom: none;
}
.event:hover> div {
padding-bottom: 0;
}
.title {
border-left: none;
}
}