projects
/
geekigeeki.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New git command naming in git-cat
[geekigeeki.git]
/
geekigeeki.py
diff --git
a/geekigeeki.py
b/geekigeeki.py
index 36083f7845f9151549ab19db12e07750731cc056..01027ee23b69b7da0a60f32c2925ab4f04dcfb1c 100755
(executable)
--- a/
geekigeeki.py
+++ b/
geekigeeki.py
@@
-24,7
+24,7
@@
from time import clock
start_time = clock()
title_done = False
start_time = clock()
title_done = False
-import cgi, sys, os, re, errno, stat
+import cgi, sys, os, re, errno, stat
, glob
image_ext = 'png|gif|jpg|jpeg|bmp|ico'
video_ext = "ogg|ogv|oga" # Not supported by Firefox 3.5: mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt
image_ext = 'png|gif|jpg|jpeg|bmp|ico'
video_ext = "ogg|ogv|oga" # Not supported by Firefox 3.5: mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt
@@
-116,7
+116,7
@@
def send_guru(msg_text, msg_type):
print('<pre id="guru" onclick="this.style.display = \'none\'" class="' + msg_type + '">')
if msg_type == 'error':
print(' Software Failure. Press left mouse button to continue.\n')
print('<pre id="guru" onclick="this.style.display = \'none\'" class="' + msg_type + '">')
if msg_type == 'error':
print(' Software Failure. Press left mouse button to continue.\n')
- print(
msg_text
)
+ print(
cgi.escape(msg_text)
)
if msg_type == 'error':
print '\n Guru Meditation #DEADBEEF.ABADC0DE'
print('</pre><script language="JavaScript" type="text/javascript" src="%s" defer="defer"></script>' \
if msg_type == 'error':
print '\n Guru Meditation #DEADBEEF.ABADC0DE'
print('</pre><script language="JavaScript" type="text/javascript" src="%s" defer="defer"></script>' \
@@
-236,6
+236,12
@@
def link_inline(name, descr=None, kvargs={}):
return '<iframe width="100%%" scrolling="auto" frameborder="0" src="%s"><a href="%s">%s</a></iframe>' \
% (url, url, name)
return '<iframe width="100%%" scrolling="auto" frameborder="0" src="%s"><a href="%s">%s</a></iframe>' \
% (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
+
# Search ---------------------------------------------------
def print_search_stats(hits, searched):
# Search ---------------------------------------------------
def print_search_stats(hits, searched):
@@
-325,7
+331,7
@@
def handle_get(pagename, form):
else:
send_httperror("403 Forbidden", pagename)
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 = ['<a href="#%s">%s</a>' % (ch, ch) for ch in 'abcdefghijklmnopqrstuvwxyz']
return '<p style="text-align: center">' + ' | '.join(links) + '</p>'
def make_index_key():
links = ['<a href="#%s">%s</a>' % (ch, ch) for ch in 'abcdefghijklmnopqrstuvwxyz']
return '<p style="text-align: center">' + ' | '.join(links) + '</p>'
@@
-334,7
+340,7
@@
def page_list(dirname=None, search_re=None):
if search_re is None:
# FIXME: WikiWord is too restrictive now!
search_re = re.compile(r"^\b((([A-Z][a-z0-9]+){2,}/)*([A-Z][a-z0-9]+){2,})\b$")
if search_re is None:
# FIXME: WikiWord is too restrictive now!
search_re = re.compile(r"^\b((([A-Z][a-z0-9]+){2,}/)*([A-Z][a-z0-9]+){2,})\b$")
- return sorted(filter(search_re.match, os.listdir(dirname or
config_get('data_dir', 'data')
)))
+ return sorted(filter(search_re.match, os.listdir(dirname or
'.'
)))
def send_footer(mod_string=None):
if config_get('debug_cgi', False):
def send_footer(mod_string=None):
if config_get('debug_cgi', False):
@@
-409,7
+415,7
@@
class WikiFormatter:
return self.kvargs[args[0]]
macro = globals().get('_macro_' + args[0])
if not macro:
return self.kvargs[args[0]]
macro = globals().get('_macro_' + args[0])
if not macro:
- exec(open("macros/" + args[0] + ".py").read(), globals())
+ exec(open("
sys/
macros/" + args[0] + ".py").read(), globals())
macro = globals().get('_macro_' + args[0])
return macro(*args, **kvargs)
except Exception, e:
macro = globals().get('_macro_' + args[0])
return macro(*args, **kvargs)
except Exception, e:
@@
-430,10
+436,10
@@
class WikiFormatter:
# This double div nonsense works around a limitation of the HTML block model
return '<div class="' + kvargs.get('class', 'thumb') + '">' \
+ '<div class="innerthumb">' \
# This double div nonsense works around a limitation of the HTML block model
return '<div class="' + kvargs.get('class', 'thumb') + '">' \
+ '<div class="innerthumb">' \
- + link_inline(name, descr, kvargs) \
+ + link_inline
_glob
(name, descr, kvargs) \
+ '<div class="caption">' + descr + '</div></div></div>'
else:
+ '<div class="caption">' + descr + '</div></div></div>'
else:
- return link_inline(name, None, kvargs)
+ return link_inline
_glob
(name, None, kvargs)
def _html_repl(self, word):
if not self.in_html and word.startswith('<div'): word = '</p>' + word
def _html_repl(self, word):
if not self.in_html and word.startswith('<div'): word = '</p>' + word
@@
-626,10
+632,10
@@
class Page:
return re.sub('([a-z])([A-Z])', r'\1 \2', self.page_name)
def _filename(self):
return re.sub('([a-z])([A-Z])', r'\1 \2', self.page_name)
def _filename(self):
- return
os.path.join(config_get('data_dir', 'data'), self.page_name)
+ return
self.page_name
def _tmp_filename(self):
def _tmp_filename(self):
- return
os.path.join(config_get('data_dir', 'data'), ('#' + self.page_name.replace('/','_') + '.' + str(os.getpid()) + '#'))
+ return
self.page_name + '.tmp' + str(os.getpid()) + '#'
def exists(self):
try:
def exists(self):
try:
@@
-802,7
+808,7
@@
class Page:
import subprocess
cmd = [
config_get('post_edit_hook'),
import subprocess
cmd = [
config_get('post_edit_hook'),
-
os.path.join(config_get('data_dir', 'data'), self.page_name)
, remote_user(),
+
self.page_name
, remote_user(),
remote_host(), changelog ]
child = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True)
output = child.stdout.read()
remote_host(), changelog ]
child = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True)
output = child.stdout.read()
@@
-817,6
+823,7
@@
class Page:
try:
exec(open("geekigeeki.conf.py").read())
try:
exec(open("geekigeeki.conf.py").read())
+ os.chdir(config_get('data_dir', 'data'))
form = cgi.FieldStorage()
action = form.getvalue('a', 'get')
handler = globals().get('handle_' + action)
form = cgi.FieldStorage()
action = form.getvalue('a', 'get')
handler = globals().get('handle_' + action)