X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=263c4829187a28dd11e3fd3cd0eff068eabedaf1;hb=488a02407fffcc35f0ec91dbe6a44eb13730df91;hp=f906c07c53e638a08e55d9062aa0d10b95cfcbf6;hpb=68d4178e022cfe5946b7a574fb20aaae41d98f14;p=geekigeeki.git
diff --git a/geekigeeki.py b/geekigeeki.py
index f906c07..263c482 100755
--- a/geekigeeki.py
+++ b/geekigeeki.py
@@ -8,19 +8,13 @@
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
+# (at your option) any later version. You should have received a copy
+# of the GNU General Public License along with this program.
+# If not, see .
__version__ = '4.0-' + '$Id$'[4:11]
-from time import clock
+from time import clock, localtime, gmtime, strftime
start_time = clock()
title_done = False
@@ -42,6 +36,9 @@ def config_get(key, default=None):
def script_name():
return os.environ.get('SCRIPT_NAME', '')
+def script_path():
+ return os.path.split(os.environ.get('SCRIPT_FILENAME', ''))[0]
+
def query_string():
path_info = os.environ.get('PATH_INFO', '')
if len(path_info) and path_info[0] == '/':
@@ -108,7 +105,9 @@ def url_args(kvargs):
return ''
# Formatting stuff --------------------------------------------------
-def emit_header(mime_type="text/html"):
+def emit_header(mtime=None, mime_type="text/html"):
+ if mtime:
+ print("Last-Modified: " + strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime(mtime)))
print("Content-type: " + mime_type + "; charset=utf-8\n")
def send_guru(msg_text, msg_type):
@@ -122,12 +121,12 @@ def send_guru(msg_text, msg_type):
print('' \
% relative_url('sys/GuruMeditation.js'))
-def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=False):
+def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=False, mtime=None):
global title_done
if title_done: return
# Head
- emit_header()
+ emit_header(mtime)
print('')
print('')
@@ -147,7 +146,7 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=Fal
editable = name and writable and config_get('privileged_url') is not None
if editable:
print(' ' \
- % (privileged_path() + '?a=edit&q=' + name))
+ % relative_url('?a=edit&q=' + name, privileged=True))
history = config_get('history_url')
if history is not None:
@@ -158,7 +157,7 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=Fal
# Body
if editable:
- print('
')
+ print('')
else:
print('')
@@ -231,16 +230,20 @@ def link_inline(name, descr=None, kvargs={}):
elif image_re.match(name):
return '' % (url, url + url_args(kvargs), descr)
elif file_re.match(name) and not ext_re.search(name): # FIXME: this guesses a wiki page
- return Page(name).send_naked(kvargs)
+ Page(name).send_naked(kvargs) # FIXME: we should return the page as a string rather than print it
+ return ''
else:
return '' \
% (url, url, name)
def link_inline_glob(pattern, descr=None, kvargs={}):
- s = ''
- for name in glob.glob(pattern):
- s += link_inline(name, descr, kvargs)
- return s
+ if not url_re.match(pattern) and bool(set(pattern) & set('?*[')):
+ s = ''
+ for name in glob.glob(pattern):
+ s += link_inline(name, descr, kvargs)
+ return s
+ else:
+ return link_inline(pattern, descr, kvargs)
# Search ---------------------------------------------------
@@ -331,7 +334,7 @@ def handle_get(pagename, form):
else:
send_httperror("403 Forbidden", pagename)
-# Used by macros/WordIndex and macros/TitleIndex
+# Used by sys/macros/WordIndex and sys/macros/TitleIndex
def make_index_key():
links = ['%s' % (ch, ch) for ch in 'abcdefghijklmnopqrstuvwxyz']
return '