X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=2fb90303413158f3dcd21236f1d3f47fad84018d;hb=a567b7dd9152a2af29e8048056ce66502a041d76;hp=79f99efcd292e67034554823a04ca557aa1a19ff;hpb=2048d6cc1d4792f816b2204554984c15fb3d7886;p=geekigeeki.git
diff --git a/geekigeeki.py b/geekigeeki.py
index 79f99ef..2fb9030 100755
--- a/geekigeeki.py
+++ b/geekigeeki.py
@@ -18,25 +18,22 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
' + print('' \ + % relative_url('sys/GuruMeditation.js')) def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=False): global title_done @@ -105,106 +125,107 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=Fal # Head emit_header() - print '' - print '' + print('') + print('') - print "') if msg_type == 'error': - print ' Software Failure. Press left mouse button to continue.\n' - print msg_text + print(' Software Failure. Press left mouse button to continue.\n') + print(msg_text) if msg_type == 'error': print '\n Guru Meditation #DEADBEEF.ABADC0DE' - print '' - print '' \ - % relative_url('sys/GuruMeditation.js') + print('
%d hits out of %d pages searched.
" % (hits, searched)) + +def handle_fullsearch(query, form): + needle = form['q'].value + send_title(None, 'Full text search for "' + needle + '"') needle_re = re.compile(needle, re.IGNORECASE) hits = [] @@ -230,47 +255,44 @@ def handle_fullsearch(needle): hits.sort() hits.reverse() - print "' + link_tag(page_name) - print ' . . . . ' + `count` - print ['match', 'matches'][count != 1] - print '
' + link_tag(page_name)) + print(' . . . . ' + `count`) + print(['match', 'matches'][count != 1]) + print('
' + link_tag(filename) + "
' + link_tag(filename) + "
%d hits out of %d pages searched.
" % (hits, searched) - -def handle_raw(pagename): +def handle_raw(pagename, form): if not file_re.match(pagename): send_httperror("403 Forbidden", pagename) return Page(pagename).send_raw() -def handle_edit(pagename): +def handle_edit(pagename, form): if not file_re.match(pagename): send_httperror("403 Forbidden", pagename) return - pg = Page(pagename) + pg = Page(form['q'].value) if 'save' in form: if form['file'].value: pg.save(form['file'].file.read(), form['changelog'].value) @@ -287,11 +309,27 @@ def handle_edit(pagename): text = form['savetext'].value pg.send_editor(text) +def handle_get(pagename, form): + if file_re.match(pagename): + # FIMXE: this is all bullshit, MimeTypes bases its guess on the extension! + from mimetypes import MimeTypes + mimetype, encoding = MimeTypes().guess_type(pagename) + if mimetype: + Page(pagename).send_raw(mimetype=mimetype, args=form) + else: + Page(pagename).format() + else: + send_httperror("403 Forbidden", pagename) + +# Used by macros/WordIndex and macros/TitleIndex def make_index_key(): - links = map(lambda ch: '%s' % (ch, ch), 'abcdefghijklmnopqrstuvwxyz') - return '' + ' | '.join(links) + '
' -def page_list(dirname = None, re = word_re): +def page_list(dirname=None, re=None): + if re is None: + # FIXME: WikiWord is too restrictive now! + re = re.compile(r"^\b((([A-Z][a-z0-9]+){2,}/)*([A-Z][a-z0-9]+){2,})\b$") return sorted(filter(re.match, os.listdir(dirname or data_dir))) def send_footer(mod_string=None): @@ -299,16 +337,16 @@ def send_footer(mod_string=None): cgi.print_arguments() cgi.print_form(form) cgi.print_environ() - print ''' + print(''' ' + print('last modified %s
' % mod_string) + print('') class WikiFormatter: """Object that turns Wiki markup into HTML. @@ -358,55 +396,44 @@ class WikiFormatter: return self._undent() + '\n' + print('
')
scan_re = re.compile(r"""(?:
# Styles and formatting
@@ -524,7 +551,7 @@ class WikiFormatter:
| (?P '
+ print(' ')
if blank_re.match(self.line):
- print ' '
+ print(' ')
else:
indent = indent_re.match(self.line)
- print self._indent_to(len(indent.group(0))) ,
- print re.sub(scan_re, self.replace, self.line)
+ #3.0: print(self._indent_to(len(indent.group(0))), end=' ')
+ print(self._indent_to(len(indent.group(0))))
+ print(re.sub(scan_re, self.replace, self.line))
- if self.in_pre: print ''
- if self.in_table: print ' '
- print self._undent()
- print '
') + print(self._undent()) + print('
Editing ' + self.page_name + print(('
Editing ' + self.page_name + ' for ' + cgi.escape(remote_user()) + ' from ' + cgi.escape(get_hostname(remote_host())) - + '
') - print '