X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=geekigeeki.py;h=263c4829187a28dd11e3fd3cd0eff068eabedaf1;hb=488a02407fffcc35f0ec91dbe6a44eb13730df91;hp=ca62bed3fc53d8d5a354a5e4b120c8cfcd32f926;hpb=537829f7f5332bc5867b826312132290d5de8d14;p=geekigeeki.git
diff --git a/geekigeeki.py b/geekigeeki.py
index ca62bed..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
' + ' | '.join(links) + '
' @@ -341,14 +343,16 @@ 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$") - 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): +def send_footer(mtime=None): if config_get('debug_cgi', False): cgi.print_arguments() cgi.print_form(form) cgi.print_environ() - link_inline("sys/footer", kvargs = { 'LAST_MODIFIED': mod_string }) + link_inline("sys/footer", kvargs = { + 'LAST_MODIFIED': strftime(config_get('datetime_fmt', '%a %d %b %Y %I:%M %p'), localtime(mtime)) + }) print("") def _macro_ELAPSED_TIME(*args, **kvargs): @@ -369,7 +373,7 @@ class WikiFormatter: self.h_level = 0 self.in_pre = self.in_html = self.in_table = self.in_li = False self.in_header = True - self.list_indents = [] + self.list_indents = [] # a list of pairs (indent_level, list_type) to track nested lists self.tr_cnt = 0 self.styles = { #wiki html enabled? @@ -407,7 +411,7 @@ class WikiFormatter: return '' return s - def _undent(self): - res = '
' - res += ''
- self.list_indents = []
- return res
-
def replace(self, match):
for rule, hit in list(match.groupdict().items()):
if hit:
@@ -590,7 +589,7 @@ class WikiFormatter:
| (?P ')
- print(self._undent())
+ print(self._indent_to(0))
print('
\n"
except IOError, err:
if err.errno != errno.ENOENT and err.errno != errno.EISDIR:
- raise er
+ raise err
return self._pragmas
def pragma(self, name, default):
@@ -732,19 +735,9 @@ class Page:
link_urls += [ [ "stylesheet", value ] ]
send_title(self.page_name, self.split_title(),
- msg_text=self.msg_text, msg_type=self.msg_type, writable=self.can_write())
+ msg_text=self.msg_text, msg_type=self.msg_type, writable=self.can_write(), mtime=self._mtime())
self.send_naked()
- send_footer(self._last_modified())
-
- def _last_modified(self):
- try:
- from time import localtime, strftime
- modtime = localtime(os.stat(self._filename())[stat.ST_MTIME])
- except OSError, err:
- if err.errno != errno.ENOENT:
- raise err
- return None
- return strftime(config_get(datetime_fmt, '%a %d %b %Y %I:%M %p'), modtime)
+ send_footer(mtime=self._mtime())
def send_editor(self, preview=None):
send_title(None, 'Edit ' + self.split_title(), msg_text=self.msg_text, msg_type=self.msg_type)
@@ -768,18 +761,17 @@ class Page:
def send_raw(self, mimetype='text/plain', args=[]):
if not self.can_read():
- send_title(None, msg_text='Read access denied by ACLs', msg_type='notice')
+ send_title(None, msg_text='Read access denied by ACLs', msg_type='notice', mtime=self._mtime())
return
+ emit_header(self._mtime(), mimetype)
if 'maxwidth' in args:
import subprocess
- emit_header(mimetype)
sys.stdout.flush()
subprocess.check_call(['gm', 'convert', self._filename(),
'-scale', args['maxwidth'].value + ' >', '-'])
else:
body = self.get_raw_body()
- emit_header(mimetype)
print(body)
def _write_file(self, data):
@@ -793,7 +785,7 @@ class Page:
except OSError, err:
if err.errno != errno.ENOENT: raise err
path = os.path.split(name)[0]
- if not os.path.exists(path):
+ if path and not os.path.exists(path):
os.makedirs(path)
os.rename(tmp_filename, name)
@@ -809,7 +801,7 @@ class Page:
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()
@@ -824,6 +816,7 @@ class Page:
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)