Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa07029393 | ||
|
|
3c07abb72a | ||
|
|
0c2df231e9 | ||
|
|
494550d6fe | ||
|
|
974728a97b | ||
|
|
256cbca3bc | ||
|
|
d2a6463756 | ||
|
|
1200b4faa4 | ||
|
|
0757fbe434 | ||
|
|
42aa844ea0 |
@@ -4,8 +4,8 @@ help:
|
|||||||
@echo "Available commands:"
|
@echo "Available commands:"
|
||||||
@echo " make prep - Create venv and install requirements"
|
@echo " make prep - Create venv and install requirements"
|
||||||
@echo " make events - Update site from CSV (build pages + images)"
|
@echo " make events - Update site from CSV (build pages + images)"
|
||||||
@echo " make dev - Start development server"
|
@echo " make dev - Start development server (might need a sudo)"
|
||||||
@echo " make stop - Stop development server"
|
@echo " make stop - Stop development server (might need a sudo)"
|
||||||
@echo " make build - Full website build sequence"
|
@echo " make build - Full website build sequence"
|
||||||
@echo " make help - Show this help message"
|
@echo " make help - Show this help message"
|
||||||
|
|
||||||
@@ -27,10 +27,11 @@ dev:
|
|||||||
nginx -p . -c nginx.dev.conf
|
nginx -p . -c nginx.dev.conf
|
||||||
|
|
||||||
stop:
|
stop:
|
||||||
nginx -p . -c nginx.dev.conf -s stop
|
nginx -p . -s stop
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
./.venv/bin/flake8 . --config .flake8 --exclude .venv
|
./.venv/bin/flake8 . --config .flake8 --exclude .venv
|
||||||
|
|
||||||
format:
|
format:
|
||||||
./.venv/bin/black .
|
./.venv/bin/black .
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ 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:
|
||||||
|
|||||||
+1
-19
@@ -362,24 +362,6 @@ 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,The Strange Loop videos,lecture,https://www.thestrangeloop.com/index.html,The Strange Loop videos
|
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)
|
||||||
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",
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
# Start nginx in this directory with `nginx -p . -c nginx.conf`
|
# Start nginx in this directory with `nginx -p . -c nginx.conf`
|
||||||
# Stop nginx with `nginx -p . -s stop`
|
# Stop nginx with `nginx -p . -s stop`
|
||||||
pid nginx.pid;
|
|
||||||
|
|
||||||
events {}
|
events {}
|
||||||
|
|
||||||
http {
|
http {
|
||||||
# edit this for your system
|
# edit this for your system
|
||||||
types_hash_max_size 2048;
|
|
||||||
types_hash_bucket_size 128;
|
types_hash_bucket_size 128;
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
|
|
||||||
|
|||||||
@@ -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,13 +5,6 @@ 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,7 +15,6 @@ 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) => {
|
||||||
@@ -24,7 +23,6 @@ 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) => {
|
||||||
@@ -48,27 +46,6 @@ 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