summaryrefslogtreecommitdiff
path: root/cgi-bin
diff options
context:
space:
mode:
authorCtibor Brančík <ctibor@brancik.cz>2017-03-22 23:45:34 +0100
committerCtibor Brančík <ctibor@brancik.cz>2017-03-22 23:45:34 +0100
commitd998c78e4e129727d7d828bd087b58310bd39bb0 (patch)
tree41e22fa673430a6bf3bf497e546e7d3be9e24b83 /cgi-bin
parent0cc775ee2a3d32564b9c9edf952d335f157d18f6 (diff)
downloadhnizdo-d998c78e4e129727d7d828bd087b58310bd39bb0.tar.gz
hnizdo-d998c78e4e129727d7d828bd087b58310bd39bb0.tar.bz2
Divide existing code into modules and introduce display and config
Diffstat (limited to 'cgi-bin')
-rw-r--r--cgi-bin/config.py2
-rw-r--r--cgi-bin/display.py65
-rwxr-xr-xcgi-bin/index.py118
-rw-r--r--cgi-bin/link.py74
4 files changed, 159 insertions, 100 deletions
diff --git a/cgi-bin/config.py b/cgi-bin/config.py
new file mode 100644
index 0000000..9c1426f
--- /dev/null
+++ b/cgi-bin/config.py
@@ -0,0 +1,2 @@
+datadir='img/'
+special = ('index', 'latest')
diff --git a/cgi-bin/display.py b/cgi-bin/display.py
new file mode 100644
index 0000000..26b0bf0
--- /dev/null
+++ b/cgi-bin/display.py
@@ -0,0 +1,65 @@
+# -*- coding: utf8 -*-
+import link, os, config
+
+class Body:
+ def __init__(self, site):
+ self.site=site
+ self.a=link.Link(site)
+ self.datadir=config.datadir
+
+ def menu(self):
+ print (self.a.link(self.a.delta('+w'), '-týden'))
+ print (self.a.link(self.a.delta('+d'), '-den'))
+ print (self.a.link(self.a.delta('+h'), '-hodina'))
+ print (self.a.link(self.a.delta('+m'), 'minulý'))
+ print (self.a.link(self.a.delta('-m'), 'následující'))
+ print (self.a.link(self.a.delta('-h'), '+hodina'))
+ print (self.a.link(self.a.delta('-d'), '+den'))
+ print (self.a.link(self.a.delta('-w'), '+týden'))
+ print ("<a href=\"?f=latest\">nejnovější</a>")
+
+
+ def articles(self):
+ print ("<header>")
+ print ("<h1>Hnízdo</h1>")
+ print ("<nav>")
+ self.menu()
+ print ("</nav>")
+ print ("</header>")
+ print ("<article id=\"prev\">")
+ print (self.a.imglink(self.a.delta('-m'),'prev'))
+ print ("</article>")
+ print ("<article id=\"now\">")
+ print (self.a.imglink(self.a.img, 'now'))
+ print ("</article>")
+ print ("<article id=\"next\">")
+ print (self.a.imglink(self.a.delta('+m'), 'next'))
+ print ("</article>")
+ print ("<footer>")
+ print ("<a href=\"?f=index\" title=\"všechny fotky\">vše</a>")
+ print ("</footer>")
+
+ def index(self):
+ index=os.listdir(os.path.realpath(self.datadir))
+ remove=['notfound.jpeg', 'latest.jpeg']
+ for r in remove:
+ index.remove(r)
+ print ("<header>")
+ print ("<h1>Hnízdo - Index</h1>")
+ print ("</header>")
+ print ("<ul>")
+ for f in index:
+ print("<li>")
+ print(self.a.link(f, f[:12]))
+ print("</li>")
+ print ("</ul>")
+
+ def page(self):
+ if self.site == "index":
+ self.index()
+ else:
+ self.articles()
+
+
+
+
diff --git a/cgi-bin/index.py b/cgi-bin/index.py
index 189c0f6..20480a4 100755
--- a/cgi-bin/index.py
+++ b/cgi-bin/index.py
@@ -1,83 +1,16 @@
#!/usr/bin/python
# -*- coding: utf8 -*-
-import cgi, cgitb, os.path, datetime, re
+import cgi, cgitb, re, display, config
+print ("Content-Type: text/html")
+print ("")
+# Enable CGI debugging
cgitb.enable()
-root="img/"
-src_root="../img/"
-
-class Link:
- def __init__(self, filename=""):
- if not filename or filename == "latest":
- self.img=os.path.split(os.path.realpath(root+"latest.jpeg"))[1]
- else:
- self.img=filename+".jpeg"
-
- def image(self, target):
- if self.detect(src_root+target):
- src=os.path.split(target)
- return os.path.relpath(src_root + src[1])
- else:
- return os.path.relpath(src_root + "notfound.jpeg")
-
- def href(self, target):
- #print os.path.realpath(root+target)
- if target == self.img:
- target = os.path.split(target)[1]
- return target[:12]
- else:
- return "?f=" + target[:12]
-
- def detect(self, filename):
- if os.path.exists(os.path.realpath(root+filename)):
- #print os.path.realpath(filename)
- return True
- else:
- #print os.path.realpath(filename)
- return False
-
- def link(self, target, link):
- #print target
- if self.detect(target):
- return "<a href=\""+self.href(target)+"\">"+link+"</a>"
- else:
- return "<span>"+link+"</span>"
-
- def delta(self, delta):
- date=os.path.split(self.img)
- date=os.path.splitext(date[1])
- date=date[0]
- curdate=datetime.datetime.strptime(date, "%Y%m%d%H%M")
- pm = delta[:0]
- if delta.endswith('m'):
- num = 10
- else:
- num = 1
- if delta.startswith('-'):
- num = num * -1
- if delta.endswith('w'):
- targetdate=curdate-datetime.timedelta(weeks=num)
- if delta.endswith('d'):
- targetdate=curdate-datetime.timedelta(days=num)
- if delta.endswith('h'):
- targetdate=curdate-datetime.timedelta(hours=num)
- if delta.endswith('m'):
- targetdate=curdate-datetime.timedelta(minutes=num)
- return datetime.datetime.strftime(targetdate, "%Y%m%d%H%M")+".jpeg"
-
-form = cgi.FieldStorage()
-
-param=form.getvalue("f")
-
-if re.match("^[a-zA-Z0-9]*$", str(param)):
- img = Link(param)
-else:
- img = Link("latest")
+query = cgi.FieldStorage()
+param = query.getvalue("f")
-print ("Content-Type: text/html")
-print ("")
print ("<!DOCTYPE html>")
print ("<html>")
print ("<head>")
@@ -86,30 +19,15 @@ print ("<title>Hnízdo</title>")
print ("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/style.css\">")
print ("</head>")
print ("<body>")
-#print (img.img)
-print ("<header>")
-print ("<h1>Hnízdo</h1>")
-print ("<nav>")
-print (img.link(img.delta('+w'), '-týden'))
-print (img.link(img.delta('+d'), '-den'))
-print (img.link(img.delta('+h'), '-hodina'))
-print (img.link(img.delta('+m'), 'minulý'))
-print ("<a href=\"?f=latest\">nejnovější</a>")
-print (img.link(img.delta('-m'), 'následující'))
-print (img.link(img.delta('-h'), '+hodina'))
-print (img.link(img.delta('-d'), '+den'))
-print (img.link(img.delta('-w'), '+týden'))
-print ("</nav>")
-print ("</header>")
-print ("<article id=\"prev\">")
-print ("<a href=\"" + img.href(img.delta('+m')) + "\"><img class=\"prev\" src=\"" + img.image(img.delta('-m')) + "\" alt=\"\" title=\"\" /></a>")
-print ("</article>")
-print ("<article id=\"now\">")
-print ("<img class=\"now\" src=\"" + img.image(img.img) + "\" alt=\"\" title=\"\" />")
-print ("</article>")
-print ("<article id=\"next\">")
-print ("<a href=\"" + img.href(img.delta('-m')) + "\"><img class=\"next\" src=\"" + img.image(img.delta('+m')) + "\" alt=\"\" title=\"\" /></a>")
-print ("</article>")
-print ("<footer>")
-print ("<a href=\"../all.html\" title=\"všechny fotky\">vše</a>")
-print ("</footer></body></html>")
+
+if param in config.special:
+ body=display.Body(param)
+elif re.match("^20[0-9]{2}(0[0-9]|1[1-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])([0-5][0-9])$", str(param)):
+ body=display.Body(param)
+else:
+ body=display.Body("latest")
+
+body.page()
+
+print("</body>")
+print("</html>")
diff --git a/cgi-bin/link.py b/cgi-bin/link.py
new file mode 100644
index 0000000..cfc1f0a
--- /dev/null
+++ b/cgi-bin/link.py
@@ -0,0 +1,74 @@
+# -*- coding: utf8 -*-
+import os.path, datetime, config
+
+class Link:
+ def __init__(self, filename=""):
+ if os.path.exists(os.path.realpath(config.datadir)):
+ self.datadir=config.datadir
+ self.src_datadir="../"+config.datadir
+ self.exists=""
+ else:
+ print ("Error: directory "+os.path.realpath(config.datadir)+" does not exist. Check config.py")
+ exit()
+ if not filename or filename == "latest":
+ self.img=os.path.split(os.path.realpath(self.datadir+"latest.jpeg"))[1]
+ else:
+ self.img=filename+".jpeg"
+
+ def src(self, target):
+ if self.detect(self.src_datadir+target):
+ src=os.path.split(target)
+ return os.path.relpath(self.src_datadir + src[1])
+ else:
+ return os.path.relpath(self.src_datadir + "notfound.jpeg")
+
+ def imglink(self, target, order):
+ if self.detect(target):
+ return "<a href=\""+self.href(target)+"\"><img src=\""+self.src(target)+"\" class=\""+order+"\"/></a>"
+ else:
+ return "<img src=\""+self.src(target)+"\" class=\""+order+"\"/>"
+
+ def href(self, target):
+ ##print os.path.realpath(root+target)
+ #if target == self.img:
+ #target = os.path.split(target)[1]
+ #return "?f="+target[:12]
+ #else:
+ return "?f=" + target[:12]
+
+ def detect(self, filename):
+ if os.path.exists(os.path.realpath(self.datadir+filename)):
+ #print os.path.realpath(filename)
+ return True
+ else:
+ #print os.path.realpath(filename)
+ return False
+
+ def link(self, target, link):
+ #print target
+ if self.detect(target):
+ return "<a href=\""+self.href(target)+"\">"+link+"</a>"
+ else:
+ return "<span>"+link+"</span>"
+
+ def delta(self, delta):
+ date=os.path.split(self.img)
+ date=os.path.splitext(date[1])
+ date=date[0]
+ curdate=datetime.datetime.strptime(date, "%Y%m%d%H%M")
+ pm = delta[:0]
+ if delta.endswith('m'):
+ num = 10
+ else:
+ num = 1
+ if delta.startswith('-'):
+ num = num * -1
+ if delta.endswith('w'):
+ targetdate=curdate-datetime.timedelta(weeks=num)
+ if delta.endswith('d'):
+ targetdate=curdate-datetime.timedelta(days=num)
+ if delta.endswith('h'):
+ targetdate=curdate-datetime.timedelta(hours=num)
+ if delta.endswith('m'):
+ targetdate=curdate-datetime.timedelta(minutes=num)
+ return datetime.datetime.strftime(targetdate, "%Y%m%d%H%M")+".jpeg"