Mercurial > miniwiki
changeset 0:02b305e24667
Initial import
| author | sheep@atos.wmid.amu.edu.pl |
|---|---|
| date | Wed, 28 Nov 2007 16:47:02 +0100 |
| parents | |
| children | c2b4ae695ed4 |
| files | wiki00.py wiki01.py wiki02.py wiki03.py wiki04.py wiki05.py wiki06.py |
| diffstat | 7 files changed, 338 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki00.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,17 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer + + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + + def do_GET(self): + self.send_response(200) + self.send_header("Content-Type", "text/plain") + self.end_headers() + self.wfile.write("Hello world!") + + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.serve_forever()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki01.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,34 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer +import urllib + + +def esc(text): + return text.replace("&", "&").replace(">", ">").replace("<", "<") + + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + + def current_page(self): + return urllib.unquote(self.path.strip('/')) or "FrontPage" + + def do_GET(self): + self.send_response(200) + self.send_header("Content-Type", "text/html;charset=utf-8") + self.end_headers() + page = self.current_page() + title = unicode(esc(page), "utf-8") + head = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title> +<style><!--body {width:40em;margin:1em auto;} textarea {border:1px solid +#999;display:block;width:100%%;height:18em;}--></style></head> +<body><h1>%s</h1>""" % (title, title) + self.wfile.write(head.encode("utf-8")) + html = u"<pre>Hello world!</pre></body></html>" + self.wfile.write(html.encode("utf-8")) + + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.serve_forever()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki02.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,43 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer +import urllib +import re +import shelve + +def esc(text): + return text.replace("&", "&").replace(">", ">").replace("<", "<") + +def link(page): + return esc(urllib.quote(page)).replace('"', """) + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + + def current_page(self): + return urllib.unquote(self.path.strip('/')) or "FrontPage" + + def do_GET(self): + page = self.current_page() + if page in server.pages: + self.send_response(200) + else: + self.send_response(404) + self.send_header("Content-Type", "text/html;charset=utf-8") + self.end_headers() + text = self.server.pages.get(page, "Empty page.") + title = unicode(esc(page), "utf-8") + head = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title> +<style><!--body {width:40em;margin:1em auto;} textarea {border:1px solid +#999;display:block;width:100%%;height:18em;}--></style></head> +<body><h1>%s</h1>""" % (title, title) + url = link(page) + html = u"""<pre>%s</pre><p><hr><a +href="%s/edit">Edit text of this page</a></p>""" % (esc(text), url) + self.wfile.write((head + html + "</body></html>").encode("utf-8")) + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.pages = shelve.open("pages") +server.pages["FrontPage"] = "Hello world!" +server.serve_forever()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki03.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,50 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer +import urllib +import re +import shelve + +def esc(text): + return text.replace("&", "&").replace(">", ">").replace("<", "<") + +def link(page): + return esc(urllib.quote(page)).replace('"', """) + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + link_re = re.compile(r"\[\[([^]]+)\]\]") + + def link_repl(self, match): + title = match.group(1) + page = title.encode('utf-8') + url = link(page) + if page in self.server.pages: + return u"""<a href="%s">%s</a>""" % (url, title) + return u"""%s<a href="%s">?</a>""" % (title, url) + + def current_page(self): + return urllib.unquote(self.path.strip('/')) or "FrontPage" + + def do_GET(self): + page = self.current_page() + self.send_response(200) + self.send_header("Content-Type", "text/html;charset=utf-8") + self.end_headers() + text = self.server.pages.get(page, "Empty page.") + title = unicode(esc(page), "utf-8") + head = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title> +<style><!--body {width:40em;margin:1em auto;} textarea {border:1px solid +#999;display:block;width:100%%;height:18em;}--></style></head> +<body><h1>%s</h1>""" % (title, title) + url = link(page) + parsed = self.link_re.sub(self.link_repl, esc(text)) + html = u"""<pre>%s</pre><p><hr><a +href="%s/edit">Edit text of this page</a></p>""" % (parsed, url) + self.wfile.write((head + html + "</body></html>").encode("utf-8")) + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.pages = shelve.open("pages") +server.pages["FrontPage"] = "Hello [[world]]!" +server.serve_forever()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki04.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,58 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer +import urllib +import re +import shelve + +def esc(text): + return text.replace("&", "&").replace(">", ">").replace("<", "<") + +def link(page): + return esc(urllib.quote(page)).replace('"', """) + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + link_re = re.compile(r"\[\[([^]]+)\]\]") + + def link_repl(self, match): + title = match.group(1) + page = title.encode('utf-8') + url = link(page) + if page in self.server.pages: + return u"""<a href="%s">%s</a>""" % (url, title) + return u"""%s<a href="%s/edit">?</a>""" % (title, url) + + def current_page(self): + return urllib.unquote(self.path.strip('/').split("/",1)[0]) or "FrontPage" + + def do_GET(self): + page = self.current_page() + if page in self.server.pages: + self.send_response(200) + else: + self.send_response(404) + self.send_header("Content-Type", "text/html;charset=utf-8") + self.end_headers() + text = self.server.pages.get(page, "Empty page.") + title = unicode(esc(page), "utf-8") + head = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title> +<style><!--body {width:40em;margin:1em auto;} textarea {border:1px solid +#999;display:block;width:100%%;height:18em;}--></style></head> +<body><h1>%s</h1>""" % (title, title) + url = link(page) + if self.path.strip("/").endswith("/edit"): + html = u"""<form action="/%s" method="POST"> +<textarea name="text">%s</textarea> +<input type="submit" value="Save"></form>""" % (url, esc(text)) + else: + parsed = self.link_re.sub(self.link_repl, esc(text)) + html = u"""<pre>%s</pre><p><hr> +<a href="%s/edit">Edit text of this page</a></p>""" % (parsed, url) + self.wfile.write((head + html + "</body></html>").encode("utf-8")) + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.pages = shelve.open("pages") +server.pages["FrontPage"] = "Hello [[world]]!" +server.serve_forever()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki05.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,66 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer +import urllib +import re +import shelve + +def esc(text): + return text.replace("&", "&").replace(">", ">").replace("<", "<") + +def link(page): + return esc(urllib.quote(page)).replace('"', """) + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + link_re = re.compile(r"\[\[([^]]+)\]\]") + + def link_repl(self, match): + title = match.group(1) + page = title.encode('utf-8') + url = link(page) + if page in self.server.pages: + return u"""<a href="%s">%s</a>""" % (url, title) + return u"""%s<a href="%s">?</a>""" % (title, url) + + def current_page(self): + return urllib.unquote(self.path.strip('/').split("/",1)[0]) or "FrontPage" + + def do_GET(self): + page = self.current_page() + self.send_response(200) + self.send_header("Content-Type", "text/html;charset=utf-8") + self.end_headers() + text = self.server.pages.get(page, "Empty page.") + title = unicode(esc(page), "utf-8") + head = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title> +<style><!--body {width:40em;margin:1em auto;} textarea {border:1px solid +#999;display:block;width:100%%;height:18em;}--></style></head> +<body><h1>%s</h1>""" % (title, title) + url = link(page) + if self.path.strip("/").endswith("/edit"): + html = u"""<form action="/%s" method="POST"> +<textarea name="text">%s</textarea> +<input type="submit" value="Save"></form>""" % (url, esc(text)) + else: + parsed = self.link_re.sub(self.link_repl, esc(text)) + html = u"""<pre>%s</pre><p><hr> +<a href="%s/edit">Edit text of this page</a></p>""" % (parsed, url) + self.wfile.write((head + html + "</body></html>").encode("utf-8")) + + def do_POST(self): + data = self.rfile.read(int(self.headers.getheader('content-length'))) + fields = {} + for field in data.split("&"): + key, value = field.split("=",1) + fields[key] = unicode(urllib.unquote_plus(value), "utf-8") + text = fields["text"] + page = self.current_page() + self.server.pages[page] = text + self.server.pages.sync() + self.do_GET() + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.pages = shelve.open("pages") +server.serve_forever()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki06.py Wed Nov 28 16:47:02 2007 +0100 @@ -0,0 +1,70 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import BaseHTTPServer +import urllib +import re +import shelve + +def esc(text): + return text.replace("&", "&").replace(">", ">").replace("<", "<") + +def link(page): + return esc(urllib.quote(page)).replace('"', """) + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + link_re = re.compile(r"\[\[([^]]+)\]\]") + + def link_repl(self, match): + title = match.group(1) + page = title.encode('utf-8') + url = link(page) + if page in self.server.pages: + return u"""<a href="%s">%s</a>""" % (url, title) + return u"""%s<a href="%s">?</a>""" % (title, url) + + def current_page(self): + return urllib.unquote(self.path.strip('/').split("/",1)[0]) or "FrontPage" + + def do_GET(self): + page = self.current_page() + self.send_response(200) + self.send_header("Content-Type", "text/html;charset=utf-8") + self.end_headers() + text = self.server.pages.get(page, "Empty page.") + title = unicode(esc(page), "utf-8") + head = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" +"http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title> +<style><!--body {width:40em;margin:1em auto;} textarea {border:1px solid +#999;display:block;width:100%%;height:18em;}--></style></head> +<body><h1>%s</h1>""" % (title, title) + url = link(page) + if self.path.strip("/").endswith("/edit"): + html = u"""<form action="/%s" method="POST"> +<textarea name="text">%s</textarea> +<input type="submit" value="Save"></form>""" % (url, esc(text)) + else: + parsed = self.link_re.sub(self.link_repl, esc(text)) + html = u"""<pre>%s</pre><p><hr> +<a href="%s/edit">Edit text of this page</a></p>""" % (parsed, url) + self.wfile.write((head + html + "</body></html>").encode("utf-8")) + + def do_POST(self): + data = self.rfile.read(int(self.headers.getheader('content-length'))) + fields = {} + for field in data.split("&"): + key, value = field.split("=",1) + fields[key] = unicode(urllib.unquote_plus(value), "utf-8") + text = fields["text"] + page = self.current_page() + self.server.pages[page] = text + logline = u"%s - %s . . . [[%s]]" % (self.date_time_string(), address_string(), unicode(page, "utf-8")) + self.server.pages["RecentChanges"] = logline + self.server.pages.get("RecentChanges", "") + self.server.pages.sync() + self.send_response(303) + self.send_header("Location", "/%s" % urllib.quote(page)) + self.end_headers() + +server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8080), Handler) +server.pages = shelve.open("pages") +server.serve_forever()
