Move macros into the wiki
[geekigeeki.git] / geekigeeki.py
index ca62bed3fc53d8d5a354a5e4b120c8cfcd32f926..01027ee23b69b7da0a60f32c2925ab4f04dcfb1c 100755 (executable)
@@ -237,7 +237,6 @@ def link_inline(name, descr=None, kvargs={}):
             % (url, url, name)
 
 def link_inline_glob(pattern, descr=None, kvargs={}):
-    os.chdir(config_get('data_dir', 'data'))
     s = ''
     for name in glob.glob(pattern):
         s += link_inline(name, descr, kvargs)
@@ -332,7 +331,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 = ['<a href="#%s">%s</a>' % (ch, ch) for ch in 'abcdefghijklmnopqrstuvwxyz']
     return '<p style="text-align: center">' + ' | '.join(links) + '</p>'
@@ -341,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$")
-    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):
@@ -416,7 +415,7 @@ class WikiFormatter:
                 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:
@@ -633,10 +632,10 @@ class Page:
         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):
-        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:
@@ -809,7 +808,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 +823,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)