Compare commits
25
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b88d7fb48 | ||
|
|
20084e5dea | ||
|
|
15cfbc5b87 | ||
|
|
be3980a331 | ||
|
|
15942d2f24 | ||
|
|
30983b3699 | ||
|
|
ff616cb491 | ||
|
|
18f2a3009c | ||
|
|
3d244dbe03 | ||
|
|
4d115a29c6 | ||
|
|
2843f1763e | ||
|
|
d53aa42ecc | ||
|
|
db0169f34b | ||
|
|
b4a968d991 | ||
|
|
a823f3a8bf | ||
|
|
a3e9b61c5c
|
||
|
|
ec0b797f15 | ||
|
|
e63f6a85be | ||
|
|
3906aef068 | ||
|
|
1210930ff9 | ||
|
|
a212d2bece | ||
|
|
b34ed3c578 | ||
|
|
7e7dbe1b49 | ||
|
|
a58f5e4514 | ||
|
|
15c0354eb3 |
@@ -34,4 +34,3 @@ lint:
|
|||||||
|
|
||||||
format:
|
format:
|
||||||
./.venv/bin/black .
|
./.venv/bin/black .
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ PAGES = [
|
|||||||
env = Environment(loader=FileSystemLoader("template"))
|
env = Environment(loader=FileSystemLoader("template"))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
os.makedirs("site/en/", exist_ok=True)
|
os.makedirs("site/en/", exist_ok=True)
|
||||||
for page in PAGES:
|
for page in PAGES:
|
||||||
|
|||||||
+19
-1
@@ -362,6 +362,24 @@ datum, vreme, lokacija, tema, tip, link, temaEN
|
|||||||
11-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware hackathon,workshop,,Hardware hackathon
|
11-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware hackathon,workshop,,Hardware hackathon
|
||||||
12-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,OpenSCAD,lecture,,OpenSCAD
|
12-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,OpenSCAD,lecture,,OpenSCAD
|
||||||
18-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire (Bandit),workshop,https://forum.dmz.rs/t/overthewire-bandit-1-14/1196,OverTheWire (Bandit)
|
18-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire (Bandit),workshop,https://forum.dmz.rs/t/overthewire-bandit-1-14/1196,OverTheWire (Bandit)
|
||||||
19-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: The Seventh Seal (1957),movie,,Movie: The Seventh Seal (1957)
|
19-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,The Strange Loop videos,lecture,https://www.thestrangeloop.com/index.html,The Strange Loop videos
|
||||||
25-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Reverse engineering,workshop,,Reverse engineering
|
25-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Reverse engineering,workshop,,Reverse engineering
|
||||||
26-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: TPB-AFK (2013),movie,,Movie: TPB-AFK (2013)
|
26-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: TPB-AFK (2013),movie,,Movie: TPB-AFK (2013)
|
||||||
|
31-05-2026, 17:00, Drustveni centar Loza - Ivankovačka 21 https://www.openstreetmap.org/node/4013343518,Uvod u informacionu bezbednost,lecture,,Introduction to information security
|
||||||
|
01-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Sysadmin radionica,workshop,,Sysadmin workshop
|
||||||
|
02-06-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Software hackathon,workshop,,Software hackathon
|
||||||
|
07-06-2026, 10:00, KC Magacin - Marka Kraljevica 4 https://www.openstreetmap.org/#map=18/44.813246/20.453640, Zig Day,workshop,https://zig.day/europe/belgrade/1/,Zig Day
|
||||||
|
08-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Decentrala offline forum,workshop,,Decentrala offline forum
|
||||||
|
15-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire - Bandit CTF,workshop,,OverTheWire - Bandit CTF
|
||||||
|
16-06-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606, OSM contributing,workshop,,OSM contributing
|
||||||
|
22-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire - Bandit CTF,workshop,,OverTheWire - Bandit CTF
|
||||||
|
29-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,LAN party,party,,LAN Party
|
||||||
|
06-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Linux ricing,lightning,,Linux ricing
|
||||||
|
13-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware CTF/Logic analyzer,workshop,,Hardware CTF/Logic analyzer
|
||||||
|
20-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,T-shirt workshop,workshop,,T-shirt workshop
|
||||||
|
27-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Lightning talks,lightning,,Lightning talks
|
||||||
|
03-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Sysadmin radionica,workshop,,Sysadmin workshop
|
||||||
|
10-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,LAN party,party,,LAN Party
|
||||||
|
17-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Mail server - 1. deo,workshop,, Mail server - part 1
|
||||||
|
24-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Film: Primer (2004),movie,,Movie: Primer (2004)
|
||||||
|
31-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Lightning talks,lightning,,Lightning talks
|
||||||
|
|||||||
|
+1
-1
@@ -11,7 +11,7 @@ from cairosvg import svg2png
|
|||||||
CURRENT_TIME = dt.date.today()
|
CURRENT_TIME = dt.date.today()
|
||||||
NEXT_MONTH = CURRENT_TIME + relativedelta.relativedelta(months=1, day=1)
|
NEXT_MONTH = CURRENT_TIME + relativedelta.relativedelta(months=1, day=1)
|
||||||
DAYS_OF_WEEK_SR = ("PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED")
|
DAYS_OF_WEEK_SR = ("PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED")
|
||||||
DAYS_OF_WEEK_EN = ("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUn")
|
DAYS_OF_WEEK_EN = ("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
|
||||||
|
|
||||||
MONTHS_SR = (
|
MONTHS_SR = (
|
||||||
"Januar",
|
"Januar",
|
||||||
|
|||||||
@@ -66,14 +66,14 @@
|
|||||||
<a href="https://github.com/searxng/searxg/">SearXNG</a> instance used for
|
<a href="https://github.com/searxng/searxg/">SearXNG</a> instance used for
|
||||||
Web searching.
|
Web searching.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr> -->
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="https://pastebin.dmz.rs/">Pastebin</a></td>
|
<td><a href="https://pastebin.dmz.rs/">Pastebin</a></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="https://privatebin.info/">PrivateBin</a> instance we use for
|
<a href="https://privatebin.info/">PrivateBin</a> instance we use for
|
||||||
sharing text files
|
sharing text files
|
||||||
</td>
|
</td>
|
||||||
</tr> -->
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td>
|
<td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -69,14 +69,14 @@
|
|||||||
<a href="https://github.com/searxng/searxng/">SearXNG</a> instanca koju
|
<a href="https://github.com/searxng/searxng/">SearXNG</a> instanca koju
|
||||||
koristimo za pretraživanje Interneta. Zamena za Google.
|
koristimo za pretraživanje Interneta. Zamena za Google.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>-->
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="https://pastebin.dmz.rs/">Pastebin</a></td>
|
<td><a href="https://pastebin.dmz.rs/">Pastebin</a></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="https://privatebin.info/">PrivateBin</a> instanca koju koristimo
|
<a href="https://privatebin.info/">PrivateBin</a> instanca koju koristimo
|
||||||
za brzo deljenje tekstualnih fajlova
|
za brzo deljenje tekstualnih fajlova
|
||||||
</td>
|
</td>
|
||||||
</tr>-->
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td>
|
<td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -5,6 +5,13 @@ import os
|
|||||||
|
|
||||||
DAYS_SR = ["PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED"]
|
DAYS_SR = ["PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED"]
|
||||||
DAYS_EN = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
|
DAYS_EN = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
|
||||||
|
ICAL_LOCATION_ADDRESSES = {
|
||||||
|
"Xecut": "XECUT\\, Jovana Ćirilova 15\\, Local 3\\, Beograd\\, Serbia",
|
||||||
|
"Matematički fakultet (Učionica JAG2)": "Matematički fakultet (JAG2)\\, Vatroslava Jagića 5\\, Beograd\\, Serbia",
|
||||||
|
"Matematički fakultet (Učionica JAG3)": "Matematički fakultet (JAG3)\\, Vatroslava Jagića 5\\, Beograd\\, Serbia",
|
||||||
|
"Matematički fakultet (Učionica 153)": "Matematički fakultet\\, Svetog Nikole 39\\, Beograd\\, Serbia",
|
||||||
|
}
|
||||||
|
|
||||||
TYPES_DICT = {
|
TYPES_DICT = {
|
||||||
"hack": ("hakaton", "hackathon"),
|
"hack": ("hakaton", "hackathon"),
|
||||||
"lecture": ("predavanje", "lecture"),
|
"lecture": ("predavanje", "lecture"),
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||||||
/* Functions */
|
/* Functions */
|
||||||
|
|
||||||
const changeToDarkTheme = () => {
|
const changeToDarkTheme = () => {
|
||||||
|
window.localStorage.setItem("theme", "dark");
|
||||||
document.documentElement.classList.add("dark");
|
document.documentElement.classList.add("dark");
|
||||||
themeBtn?.setAttribute("title", "turn the light on");
|
themeBtn?.setAttribute("title", "turn the light on");
|
||||||
Array.from(imgs).forEach((img) => {
|
Array.from(imgs).forEach((img) => {
|
||||||
@@ -23,6 +24,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const changeToLightTheme = () => {
|
const changeToLightTheme = () => {
|
||||||
|
window.localStorage.setItem("theme", "light");
|
||||||
document.documentElement.classList.remove("dark");
|
document.documentElement.classList.remove("dark");
|
||||||
themeBtn?.setAttribute("title", "turn the light off");
|
themeBtn?.setAttribute("title", "turn the light off");
|
||||||
Array.from(imgs).forEach((img) => {
|
Array.from(imgs).forEach((img) => {
|
||||||
@@ -46,6 +48,27 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||||||
|
|
||||||
window.addEventListener("resize", () => isMenuOpen() && closeMenu());
|
window.addEventListener("resize", () => isMenuOpen() && closeMenu());
|
||||||
main.addEventListener("click", () => isMenuOpen() && closeMenu());
|
main.addEventListener("click", () => isMenuOpen() && closeMenu());
|
||||||
|
|
||||||
|
/* Language persistence */
|
||||||
|
const currentLang = document.documentElement.lang || "sr";
|
||||||
|
const anchors = document.getElementsByTagName("a");
|
||||||
|
Array.from(anchors).forEach((a) => {
|
||||||
|
// Skip language switcher links
|
||||||
|
if (a.classList.contains("lang")) return;
|
||||||
|
const href = a.getAttribute("href");
|
||||||
|
if (!href) return;
|
||||||
|
if (href.startsWith("/")) {
|
||||||
|
// Replace existing language prefix or add one
|
||||||
|
if (href.startsWith("/sr") || href.startsWith("/en")) {
|
||||||
|
if (!href.startsWith(`/${currentLang}`)) {
|
||||||
|
a.setAttribute("href", `/${currentLang}${href.slice(3)}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// No language prefix, prepend currentLang
|
||||||
|
a.setAttribute("href", `/${currentLang}${href}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
hamburger?.addEventListener("click", () => isMenuOpen() ? closeMenu() : openMenu());
|
hamburger?.addEventListener("click", () => isMenuOpen() ? closeMenu() : openMenu());
|
||||||
|
|
||||||
themeBtn.addEventListener("click", () => {
|
themeBtn.addEventListener("click", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user