Compare commits

..

No commits in common. "f089d62e63b249710e9ffa34f3eb8aac0842d38c" and "cfcdf341292ce8fe6796211d7b578f13254eed2e" have entirely different histories.

20 changed files with 171 additions and 483 deletions

View File

@ -1,45 +0,0 @@
#! /usr/bin/python3
# needs lowdown and feegden installed
# feedgen can be installed with pip
# also expects that *.md files are in blog/ directory
from feedgen.feed import FeedGenerator
import subprocess
import os
blogs_dir = os.fsencode("blog")
def blogposts_list_gen():
output_list = []
for file in os.listdir(blogs_dir):
filename = os.fsdecode(file)
if filename.endswith(".md"):
full_path = "blog/" + filename
author = subprocess.run("lowdown -X author " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
title = subprocess.run("lowdown -X title " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
time = subprocess.run("lowdown -X time " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
content_html = subprocess.run("lowdown " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
output_list.append([author, title, time, content_html, full_path])
return output_list
def feedgen(blogs):
fg = FeedGenerator()
fg.id('http://dmz.rs/')
fg.title('Decentrala Blog')
fg.author( {'name':'Decentrala','email':'dmz@dmz.rs'} )
fg.link( href='https://dmz.rs/atom.xml', rel='self' )
for post in blogs:
fe = fg.add_entry()
fe.id("https://dmz.rs/" + post[4][:-3] + ".html")
fe.author({'name': post[0]})
fe.title(post[1])
fe.updated(post[2])
fe.content(content=post[3], type='html')
fg.atom_file('atom.xml')
feedgen(blogposts_list_gen())

43
blogs/Lorem Ipsum.html Normal file
View File

@ -0,0 +1,43 @@
<h1>Nulla possent lacrimas huius</h1>
<h2>Fratres quoque</h2>
<p>Lorem markdownum pariter: lata per tuae quo salus rorant septemfluus mecum
summisque feres potes Ulixes. Aeacus Tritonida reicere non convocat pariter
neque arma refovet quoque stabunt in. Velamina inrita, silvestribus, ut sarcina
memori, bellaque dummodo.</p>
<p>Factis dixit macies coissent! Nactasque molliter quam in memorant velamine;
praemia mundi <em>illo</em> Achille <strong>de</strong>.</p>
<h2>Velut Procrin</h2>
<p>Vobis <a href="http://www.palmae.net/aquis-inmota.html">grave</a> fessos ita Belides; poena
hora oculis celebrandaque audita guttur ad custodia exprobravit. Pacis monuere
et crimen loquor <em>contigit quae</em>! Nondum iudex, auro moratur rogaberis manet.
Faciem in dolor adusque, sum soror pectoris in reppulit superest caesis, Hebrum
e natura sonabunt. Incensaque An monitae, in animoque vulnerat terra cavo
torquet qui humili perque, cristis alii fruitur adacto.</p>
<ul>
<li>Est velavit idem</li>
<li>Naupliades tenebant instanti ense iactura ut nutantem</li>
<li>Miserarum corpore habet</li>
</ul>
<h2>Ad utque sic Charybdis iamque sequenti genitore</h2>
<p>Hesperien arida. Tibi caelo clavigeram saxoque capillos doleamne faveas testes
senex <strong>rudente lacrimis</strong> insula Cnosiacaeque? Dant ablato adulterium gemino,
pluvialibus una, dependent iactura illum redit atque dixi pondera. Eumque
sanguis errare, formasque parabat volubilibus satis creaverat dextera Iuppiter
te sero, est. Opem duceret quam tum pollentibus ramumque tauri; at Saturnia
erigitur imitamine ferens adunca delapsaque viminis, terras.</p>
<h2>Denique ostendit femina tamen</h2>
<p>Telum in ab utque ut et mihi <strong>auras Midan</strong> meo genus membra comites ne. Orbis
via necis. Romana deus, sub frangunt furor crepuscula equorum Teleboasque templa
virgineumque belua obsita est. Fragorem Somnus; ducebas placido oscula.</p>
<blockquote>
<p>Inmota manifesta producit, inquit verbisque fluctus iamque, quo fuerat ipse
nostra, iussit <strong>nec tenebat</strong>. Pars procul, pietate crinales meus <em>totiens</em>
haustus frondes, per sedebat. Domum vincite.</p>
</blockquote>
<h2>De curaque quoque reddat numina quae veniam</h2>
<p>Fessus iacit tantum elimat a medios vinoque finita adspergine liquerat munere
vultibus Atridae pecus positoque reluxit. Veniebat videtur laesae quod vacca,
lolium neu Perseus fraude nominibus contraria.</p>
<p>Parat <strong>ferus</strong> in actis terebrata animaeque <strong>quoque</strong>, deos et morte agitantem
ore. Proelia casus Gryneus. Quis mihi <em>ille cur</em> Assyrius per siquis, ille
Hecabe Arethusa, erigite perfectis.</p>

53
blogs/Lorem Ipsum.md Normal file
View File

@ -0,0 +1,53 @@
# Nulla possent lacrimas huius
## Fratres quoque
Lorem markdownum pariter: lata per tuae quo salus rorant septemfluus mecum
summisque feres potes Ulixes. Aeacus Tritonida reicere non convocat pariter
neque arma refovet quoque stabunt in. Velamina inrita, silvestribus, ut sarcina
memori, bellaque dummodo.
Factis dixit macies coissent! Nactasque molliter quam in memorant velamine;
praemia mundi *illo* Achille **de**.
## Velut Procrin
Vobis [grave](http://www.palmae.net/aquis-inmota.html) fessos ita Belides; poena
hora oculis celebrandaque audita guttur ad custodia exprobravit. Pacis monuere
et crimen loquor *contigit quae*! Nondum iudex, auro moratur rogaberis manet.
Faciem in dolor adusque, sum soror pectoris in reppulit superest caesis, Hebrum
e natura sonabunt. Incensaque An monitae, in animoque vulnerat terra cavo
torquet qui humili perque, cristis alii fruitur adacto.
- Est velavit idem
- Naupliades tenebant instanti ense iactura ut nutantem
- Miserarum corpore habet
## Ad utque sic Charybdis iamque sequenti genitore
Hesperien arida. Tibi caelo clavigeram saxoque capillos doleamne faveas testes
senex **rudente lacrimis** insula Cnosiacaeque? Dant ablato adulterium gemino,
pluvialibus una, dependent iactura illum redit atque dixi pondera. Eumque
sanguis errare, formasque parabat volubilibus satis creaverat dextera Iuppiter
te sero, est. Opem duceret quam tum pollentibus ramumque tauri; at Saturnia
erigitur imitamine ferens adunca delapsaque viminis, terras.
## Denique ostendit femina tamen
Telum in ab utque ut et mihi **auras Midan** meo genus membra comites ne. Orbis
via necis. Romana deus, sub frangunt furor crepuscula equorum Teleboasque templa
virgineumque belua obsita est. Fragorem Somnus; ducebas placido oscula.
> Inmota manifesta producit, inquit verbisque fluctus iamque, quo fuerat ipse
> nostra, iussit **nec tenebat**. Pars procul, pietate crinales meus *totiens*
> haustus frondes, per sedebat. Domum vincite.
## De curaque quoque reddat numina quae veniam
Fessus iacit tantum elimat a medios vinoque finita adspergine liquerat munere
vultibus Atridae pecus positoque reluxit. Veniebat videtur laesae quod vacca,
lolium neu Perseus fraude nominibus contraria.
Parat **ferus** in actis terebrata animaeque **quoque**, deos et morte agitantem
ore. Proelia casus Gryneus. Quis mihi *ille cur* Assyrius per siquis, ille
Hecabe Arethusa, erigite perfectis.

View File

@ -10,11 +10,3 @@ datum, vreme, lokacija, tema
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
11-05-2023, 18:00, Polyhedra https://www.openstreetmap.org/node/4856556781, Uvod u racunarske mreze
01-08-2023, 19:00, DC Krov, Tehno veče
07-08-2023, 19:00, DC Krov, Linux ricing
08-08-2023, 19:00, DC Krov, Lambda račun
14-08-2023, 19:00, DC Krov, Linux distro diskusija
15-08-2023, 19:00, DC Krov, Pirati 777 mora
21-08-2023, 19:00, DC Krov, Python vežbe
22-08-2023, 19:00, DC Krov, Autentifikacija na internetu
28-08-2023, 19:00, DC Krov, Kviz
1 datum vreme lokacija tema
10 08-05-2023 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Linux install day
11 09-05-2023 19:00 DC Krov https://www.openstreetmap.org/node/10594728522 Cryptoparty - Uvod u privatnost
12 11-05-2023 18:00 Polyhedra https://www.openstreetmap.org/node/4856556781 Uvod u racunarske mreze
01-08-2023 19:00 DC Krov Tehno veče
07-08-2023 19:00 DC Krov Linux ricing
08-08-2023 19:00 DC Krov Lambda račun
14-08-2023 19:00 DC Krov Linux distro diskusija
15-08-2023 19:00 DC Krov Pirati 777 mora
21-08-2023 19:00 DC Krov Python vežbe
22-08-2023 19:00 DC Krov Autentifikacija na internetu
28-08-2023 19:00 DC Krov Kviz

Binary file not shown.

Binary file not shown.

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="40"
height="40"
viewBox="0 0 10 10"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<g
id="layer1">
<path
id="path1336"
style="fill:#181715;stroke-width:0.504542;fill-opacity:1"
d="M 10 0 L 8.8911133 0.57714844 L 8.8862305 0.58544922 L 0.96435547 4.2792969 A 10 10 0 0 0 1.574707 5.3740234 L 7.6362305 2.5473633 L 4.1142578 8.0756836 A 10 10 0 0 0 5.1674805 8.7485352 L 8.6904297 3.21875 L 8.6904297 9.9086914 A 10 10 0 0 0 9.9404297 9.9975586 L 9.9404297 1.2568359 L 9.9453125 1.2490234 L 10 0 z " />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 773 B

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="40"
height="40"
viewBox="0 0 10 10"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<g
id="layer1">
<path
id="path1336"
style="fill:#181715;fill-opacity:1;stroke-width:0.504542"
d="M 5 0.0029296875 L 4.375 1.0859375 L 4.375 1.0952148 L 0.35400391 7.4072266 A 8.75 8.75 0 0 0 1.4614258 7.9956055 L 4.375 3.4213867 L 4.375 8.7265625 A 8.75 8.75 0 0 0 5 8.75 A 8.75 8.75 0 0 0 5.625 8.7265625 L 5.625 3.4213867 L 8.5390625 7.9956055 A 8.75 8.75 0 0 0 9.6464844 7.4072266 L 5.625 1.0952148 L 5.625 1.0859375 L 5 0.0029296875 z " />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 799 B

View File

@ -4,7 +4,6 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/styles/reset.css">
<link rel="stylesheet" href="/styles/style.css">
<link rel="stylesheet" href="/styles/home.css">
<link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">
@ -14,36 +13,43 @@
<body>
<header>
<a id="logo" href="/index.html">Decentrala</a>
<a class="logo" href="/index.html">Decentrala</a>
<span>
<button id="theme-switcher">turn the lights off</button>
<a class="account" href="/pages/account.html">Nalog</a>
</span>
</header>
<div id="main">
<h1>Dobrodošao!</h1>
<h1>Dobrodosli!</h1>
<p>
Mi smo <em>Decentrala</em> - grupa entuzijasta okupljena oko ideja decentralizacije i slobodnog širenja znanja.
Zvuči interesantno? Evo još nekih stvari o nama:
Mi smo <em>Decentrala</em> - grupa entuzijasta okupljena oko ideja decentralizacije i slobodnog sirenja znanja.
Zvuci interesantno? Evo jos nekih stvari o nama:
</p>
<dl>
<dt>Znanje:</dt>
<dd>Sve naše radionice su besplatne i otvorene za sve zainteresovane.
Ako želiš nešto da podeliš najavi se na našem <a href="https://forum.dmz.rs">Forumu</a> i održi radionicu kod nas!</dd>
<dd>Sve nase radionice su besplatne i otvorene za sve zainteresovane, a ako imate nesto sto zelite da
podelite, najavite se na nasem <a href="https://forum.dmz.rs">Forumu</a> i odrzite radionicu kod nas!</dd>
<dt>Akcije:</dt>
<dd>Povremeno organizujemo različite akcije, hakatone, crypto-partije, izložbe i slične događaje otvorene za sve zainteresovane. </dd>
<dd>Povremeno organizujemo razlicite akcije, hakatone, crypto-partije, izlozbe i slicne dogadjaje otvorene za sve
zainteresovane. </dd>
<dt>Servisi:</dt>
<dd>Na našim serverima pokrećemo razne servise (email, git, wiki i druge) koji su otvoreni za sve i koji se mogu koristiti sa ili bez našeg naloga.</dd>
<dd>Na nasim serverima pokrecemo neke servise (email, git, wiki i druge) koji su otvoreni za sve i koje mozes
koristiti sa ili bez naseg naloga.</dd>
<dt>Ljudi:</dt>
<dd>Lorem ipsum dolor sit amet.</dd>
</dl>
<p>
Ako si i dalje zainteresovan, možeš napraviti <a href="/pages/account.html">nalog</a> na našem serveru koji će ti omogućiti korišćenje svih naših <a href="/pages/services.html">servisa</a>.
Ako želiš prvo da vidiš kako to sve izgleda u realnosti, možeš doći na neki od naših <a href="/pages/events.html">događaja</a>, i tu nas upoznati!
Ako si procitao sve i i dalje si zainteresovan, mozes da napravis <a href="/pages/account.html">nalog</a> na nasem
serveru koji ce
ti omoguciti da koristis sve nase <a href="/pages/services.html">servise</a>, a ako prvo hoces da vidis kako to
sve izgleda u realnosti, mozes da dodjes na neki od nasih <a href="/pages/events.html">dogadjaja</a>, i tamo nas
upoznas!
</p>
<img id="mesh" src="/img/mesh-light.svg">
</div>
<footer>
<div id="sections-menu">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
@ -51,21 +57,19 @@
</div>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<span class="sections">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
<a href="/pages/contact.html">Kontakt</a>
</span>
<span class="copyleft">
<span class="links">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img src="/img/cc-light.svg"
alt="CreativeCommons"></a>
<a href=""><img src="/img/w-light.svg" alt="Webring"></a>
<a href="https://gitea.dmz.rs/eline/decentrala-website-static-new"><img src="/img/git-light.svg"
alt="SourceCode"></a>
<a href="https://balkan.fedive.rs/@decentrala"><img src="/img/mastodon-light.svg" alt="Mastodon"></a>
</span>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img src="/img/cc-light.svg"
alt="CreativeCommons"></a>
<a href=""><img src="/img/w-light.svg" alt="Webring"></a>
<a href="https://gitea.dmz.rs/eline/decentrala-website-static-new"><img src="/img/git-light.svg"
alt="SourceCode"></a>
<a href="https://balkan.fedive.rs/@decentrala"><img src="/img/mastodon-light.svg" alt="Mastodon"></a>
<span>Decentrala &copy; 2023</span>
</span>
</footer>

View File

@ -25,7 +25,7 @@
</div>
<footer>
<div id="sections-menu">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
@ -33,7 +33,7 @@
</div>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<span class="sections">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>

View File

@ -25,7 +25,7 @@
</div>
<footer>
<div id="sections-menu">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
@ -33,7 +33,7 @@
</div>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<span class="sections">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>

View File

@ -21,16 +21,16 @@
</header>
<div id="main">
<h1>Kontakt</h1>
<p>Možeš nam poslati mail na <a href="mailto:dmz@dmz.rs">dmz@dmz.rs</a> ili se mozes pridružiti našem <a
<p>Mozes nam poslati mail na <a href="mailto:dmz@dmz.rs">dmz@dmz.rs</a> ili se mozes pridruziti nasem <a
href="https://forum.dmz.rs">Forumu</a>.</p>
<p>Takođe smo i na <a href="https://balkan.fedive.rs/@decentrala">Fediversu!</a></p>
<p>Takodje smo i na <a href="https://balkan.fedive.rs/@decentrala">Fediversu!</a></p>
<p style="position: relative; top: 5rem;">U slucaju da nadjete <em>bug</em> na sajtu, bili bismo jako zahvalni
ako bi mogli da nam ga prijavite (npr. putem emaila).</p>
<img id="mesh" src="/img/mesh-light.svg">
</div>
<footer>
<div id="sections-menu">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
@ -38,7 +38,7 @@
</div>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<span class="sections">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>

View File

@ -25,7 +25,7 @@
</div>
<footer>
<div id="sections-menu">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
@ -33,7 +33,7 @@
</div>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<span class="sections">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>

View File

@ -66,7 +66,7 @@
</div>
<footer>
<div id="sections-menu">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>
@ -74,7 +74,7 @@
</div>
<button id="sections-button" opened="false"><img src="/img/strelica-closed-light.svg" alt="OpenMenu"></button>
<span class="sections">
<a href="/pages/events.html">Događaji</a>
<a href="/pages/events.html">Dogadjaji</a>
<a href="/pages/projects.html">Projekti</a>
<a href="/pages/blog.html">Blog</a>
<a href="/pages/services.html">Servisi</a>

View File

@ -1,9 +0,0 @@
<html><head><link rel="stylesheet" href="styles/poster.css"><head><body><main><h1>DECENTRALA</h1><h2>Plan za Avgust</h2><table><tr><td>UTO</td><td>1.</td><td> Tehno veče</td></tr>
<tr><td>PON</td><td>7.</td><td> Linux ricing</td></tr>
<tr><td>UTO</td><td>8.</td><td> Lambda račun</td></tr>
<tr><td>PON</td><td>14.</td><td> Linux distro diskusija</td></tr>
<tr><td>UTO</td><td>15.</td><td> Pirati 777 mora</td></tr>
<tr><td>PON</td><td>21.</td><td> Python vežbe</td></tr>
<tr><td>UTO</td><td>22.</td><td> Autentifikacija na internetu</td></tr>
<tr><td>PON</td><td>28.</td><td> Kviz</td></tr>
</table><p>Radionice počinju u <strong>19h</strong> u Društvenom centru Krov u <strong>Kraljice Marije 47</strong>.</p><p>Ulaz u zgradu je u prolazu pored Štark prodavnice slatkiša, odmah pored menjačnice. DC Krov je na poslednjem spratu.</p><div id=link>dmz.rs</div></main></body></html>

View File

@ -1,61 +0,0 @@
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>\n\t<meta charset=\"UTF-8\">\n\t<link rel=\"stylesheet\"\
href=\"styles/poster.css\">\n<head>"
header = "<h1>DECENTRALA</h1>"
subheader = f"<h2>Plan za {MONTHS_SR[NEXT_MONTH.month - 1]}</h2>"
link = "<div id=link>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>"
return f"<html>\n{head}\n<body>\n\t<main>\n\t\t{header}\n\t\t{subheader}\
\n\t\t<table>\n{table}\t\t</table>\n\t\t{p1}\n\t\t{p2}\n\t\t{link}\n\t</main>\
\n</body>\n</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()

View File

@ -22,7 +22,7 @@ if (theme !== null) {
}
theme_switcher.addEventListener("click", () => {
if (theme_switcher.getAttribute("title").indexOf("off") !== -1) {
if (theme_switcher.textContent.indexOf("off") !== -1) {
changeToDarkTheme();
} else {
changeToLightTheme();
@ -30,7 +30,7 @@ theme_switcher.addEventListener("click", () => {
});
function changeToDarkTheme() {
theme_switcher.setAttribute("title", "turn the light on");
theme_switcher.textContent = "turn the light on";
document.documentElement.style.setProperty("--border", "var(--dark-border)");
document.documentElement.style.setProperty("--text", "var(--dark-text)");
document.documentElement.style.setProperty("--bg", "var(--dark-bg)");
@ -41,7 +41,7 @@ function changeToDarkTheme() {
}
function changeToLightTheme() {
theme_switcher.setAttribute("title", "turn the light off");
theme_switcher.textContent = "turn the light off";
document.documentElement.style.setProperty("--border", "var(--light-border)");
document.documentElement.style.setProperty("--text", "var(--light-text)");
document.documentElement.style.setProperty("--bg", "var(--light-bg)");
@ -84,10 +84,12 @@ window.addEventListener("resize", () => {
}
});
main.addEventListener("click", () => {
main.addEventListener("click", (event) => {
if (sections_button.getAttribute("opened") === "true") {
closeMenu();
}
});
DEBUG;
console.log(window.innerWidth);
console.log(window.innerHeight);

View File

@ -1,68 +0,0 @@
html {
}
@font-face {
font-family: Facade;
src: url(../font/Facade-Sud.woff);
}
@font-face {
font-family: jetbrains-mono;
src: url(../font/JetBrainsMono-Regular.ttf);
}
html, body {
margin: 0;
padding: 0;
}
main {
max-width: 1200px;
margin: auto;
font-family: 'jetbrains-mono';
padding: 2.3rem;
}
h1 {
font-family: 'Facade';
text-align: center;
font-size: 5rem;
margin: 0rem;
}
h2 {
text-align: center;
margin-top: 0.0rem;
margin-bottom: 2rem;
font-size: 2rem;
}
p {
font-size: 1.5rem;
}
table {
margin: 4rem 0;
}
td {
font-size: 1.8rem;
padding-top: 0.5rem;
}
td:first-child {
width: 3.5rem;
}
td:nth-child(2) {
padding-right: 1rem;
}
#link {
margin-top: 8rem;
text-align: right;
font-size: 3rem;
}

View File

@ -1,149 +0,0 @@
/* Copyright (c) 2023 Luka Ivanovic */
/* https://github.com/luka-hash/css-reset */
/* This code is licensed under MIT licence */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
}
a,
article,
audio,
blockquote,
body,
canvas,
caption,
code,
dd,
del,
details,
div,
dl,
dt,
em,
fieldset,
figcaption,
figure,
footer,
form,
h1,
h2,
h3,
h4,
h5,
h6,
header,
hgroup,
html,
iframe,
img,
ins,
kbd,
label,
legend,
li,
mark,
menu,
nav,
ol,
output,
p,
pre,
s,
section,
small,
span,
strong,
sub,
summary,
sup,
table,
tbody,
td,
tfoot,
th,
thead,
time,
tr,
ul,
video {
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
article,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
ol,
ul {
list-style: none;
}
blockquote {
quotes: none;
}
blockquote::before,
blockquote::after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
img,
picture,
video,
canvas,
svg {
display: block;
max-width: 100%;
}
input,
button,
textarea,
select {
font: inherit;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
hyphens: auto;
}

View File

@ -5,7 +5,9 @@
--dark-text: #ffffff;
--dark-bg: #181715;
--dark-border: #ffffff;
--hightlight: #72dec2;
--border: var(--light-border);
--text: var(--light-text);
--bg: var(--light-bg);
@ -32,12 +34,10 @@ body {
body {
display: grid;
grid-template:
"header" 10vh
"main" 1fr
"footer" 10vh
/ 1fr;
gap: 0;
grid-template-columns: 1fr;
grid-template-rows: 5rem 1fr 5rem;
grid-column-gap: 0px;
grid-row-gap: 0px;
font-family: 'Iosevka';
}
@ -50,17 +50,17 @@ footer {
}
header {
grid-area: "header";
grid-area: 1 / 1 / 2 / 2;
border-bottom: 2px solid var(--border);
}
footer {
grid-area: "footer";
grid-area: 3 / 1 / 4 / 2;
border-top: 2px solid var(--border);
}
#main {
grid-area: "main";
grid-area: 2 / 1 / 3 / 2;
padding: 3rem 3rem 3rem 3rem;
font-size: 1.3rem;
line-height: 2rem;
@ -85,25 +85,11 @@ a:focus {
text-decoration: line-through var(--text);
}
#logo {
font-size: 2.5rem;
.logo {
font-size: 3rem;
font-weight: bold;
font-variant: small-caps;
}
#theme-switcher {
border: 3px solid var(--border);
width: 1.5rem;
height: 1.5rem;
border-radius: 3rem;
margin-left: auto;
background: linear-gradient(90deg, var(--border) 0%, var(--border) 50%, var(--bg) 51%, var(--bg) 100%);
}
#theme-switcher:hover {
border-color: var(--hightlight);
background: linear-gradient(90deg, var(--hightlight) 0%, var(--hightlight) 50%, var(--bg) 51%, var(--bg) 100%);
}
.account,
.sections,
#sections-menu {
@ -112,14 +98,27 @@ a:focus {
#mesh {
position: absolute;
bottom: 10vh;
bottom: 5rem;
right: 0;
user-select: none;
pointer-events: none;
}
.links {
display: flex;
@media screen and (max-height: 860px),
screen and (max-width: 1500px) {
#mesh {
display: none;
}
}
@media screen and (max-width: 1160px) {
.sections {
display: none;
}
#sections-button {
display: block !important;
}
}
#sections-button {
@ -134,13 +133,15 @@ a:focus {
border: 2px solid var(--border);
background-color: var(--bg);
position: absolute;
bottom: calc(10vh - 2px);
left: calc(0px - 2px);
bottom: calc(5rem - 2px);
left: 0;
align-items: center;
padding: 2rem 3rem;
display: none;
}
.copyleft a,
.sections a {
margin: 0 1rem 0 0;
@ -164,37 +165,4 @@ button {
background: var(--bg);
color: var(--text);
margin: 0 2rem 0 0;
cursor: pointer;
}
@media screen and (max-height: 860px),
screen and (max-width: 1500px) {
#mesh {
display: none;
}
}
@media screen and (max-width: 1160px) {
.sections {
display: none;
}
#sections-button {
display: block !important;
}
}
@media screen and (max-width: 540px) {
#logo {
font-size: 2.2rem;
}
.links {
display: none;
}
header,
footer {
padding: 0 1rem;
}
}