From d998c78e4e129727d7d828bd087b58310bd39bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ctibor=20Bran=C4=8D=C3=ADk?= Date: Wed, 22 Mar 2017 23:45:34 +0100 Subject: Divide existing code into modules and introduce display and config --- cgi-bin/config.py | 2 + cgi-bin/display.py | 65 +++++++++++++++++++++++++++++ cgi-bin/index.py | 118 ++++++++--------------------------------------------- cgi-bin/link.py | 74 +++++++++++++++++++++++++++++++++ 4 files changed, 159 insertions(+), 100 deletions(-) create mode 100644 cgi-bin/config.py create mode 100644 cgi-bin/display.py create mode 100644 cgi-bin/link.py (limited to 'cgi-bin') 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 ("nejnovější") + + + def articles(self): + print ("
") + print ("

Hnízdo

") + print ("") + print ("
") + print ("
") + print (self.a.imglink(self.a.delta('-m'),'prev')) + print ("
") + print ("
") + print (self.a.imglink(self.a.img, 'now')) + print ("
") + print ("
") + print (self.a.imglink(self.a.delta('+m'), 'next')) + print ("
") + print ("") + + def index(self): + index=os.listdir(os.path.realpath(self.datadir)) + remove=['notfound.jpeg', 'latest.jpeg'] + for r in remove: + index.remove(r) + print ("
") + print ("

Hnízdo - Index

") + print ("
") + print ("") + + 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 ""+link+"" - else: - return ""+link+"" - - 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 ("") print ("") print ("") @@ -86,30 +19,15 @@ print ("Hnízdo") print ("") print ("") print ("") -#print (img.img) -print ("
") -print ("

Hnízdo

") -print ("") -print ("
") -print ("
") -print ("\"\"") -print ("
") -print ("
") -print ("\"\"") -print ("
") -print ("
") -print ("\"\"") -print ("
") -print ("") + +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("") +print("") 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 "" + else: + return "" + + 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 ""+link+"" + else: + return ""+link+"" + + 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" -- cgit v1.2.3