Print version
[geekigeeki.git] / geekigeeki.py
index 9fd1adf5a139c1ba32152a9eb6270b2847f8227b..e6cfeca70ef5501177e27af3711418b1636cb81c 100755 (executable)
@@ -19,7 +19,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-__version__ = '$Revision: 1.63+gerry+bernie $'[11:-2]
+__version__ = '$Id$'[3:-2]
 
 import cgi, sys, string, os, re, errno, time, stat
 from os import path, environ
@@ -219,9 +219,6 @@ def do_raw(pagename):
     Page(pagename).send_raw()
 
 def do_savepage(pagename):
-    if privileged_url is None:
-        raise 'editing disallowed for ' + pagename
-
     global form
     pg = Page(pagename)
     if 'preview' in form:
@@ -230,7 +227,7 @@ def do_savepage(pagename):
         pg.save_text(form['savetext'].value)
         pg.send_page()
     elif 'cancel' in form:
-        pg.msg = 'Editing cancelled'
+        pg.msg = 'Editing canceled'
         pg.msg_type = 'notice'
         pg.send_page()
     else:
@@ -254,8 +251,11 @@ def send_footer(name, mod_string=None):
         cgi.print_arguments()
         cgi.print_form(cgi.FieldStorage())
         cgi.print_environ()
+    global __version__
     print '<div id="footer"><hr />'
-    print '<p class="copyright">Powered by <a href="http://www.codewiz.org/wiki/GeekiGeeki">GeekiGeeki</a></p>'
+    print ('<p class="copyright">Powered by' +
+        ' <a href="http://www.codewiz.org/wiki/GeekiGeeki">GeekiGeeki</a>' +
+        ' version %s</p>' % __version__)
     if mod_string:
         print '<p class="modified">last modified %s</p>' % mod_string
     print '</div></body></html>'
@@ -587,11 +587,7 @@ class Page:
         if self.exists():
             return link_tag(word, word, 'wikilink')
         else:
-            if nonexist_qm:
-                return link_tag(word, '?', 'nonexistent') + word
-            else:
-                return link_tag(word, word, 'nonexistent')
-
+            return link_tag(word, nonexist_pfx + word, 'nonexistent')
 
     def get_raw_body(self):
         try:
@@ -651,7 +647,7 @@ class Page:
         if self.can_read():
             PageFormatter(self.get_raw_body()).print_html()
         else:
-            print "<p>This page is not visible to you</p>"
+            send_guru("Read access denied by ACLs", "notice")
         send_footer(page_name, self._last_modified())
 
     def _last_modified(self):
@@ -663,6 +659,9 @@ class Page:
 
     def send_editor(self, preview=None):
         send_title(None, 'Edit ' + self.split_title(), msg=self.msg, msg_type=self.msg_type)
+        if not self.can_write():
+            send_guru("Write access denied by ACLs", "error")
+            return
 
         print ('<p><b>Editing ' + self.page_name
             + ' for ' + cgi.escape(remote_user())
@@ -687,6 +686,9 @@ class Page:
         send_footer(self.page_name)
 
     def send_raw(self):
+        if not self.can_read():
+            send_title(None, msg='Read access denied by ACLs', msg_type='notice')
+            return
         emit_header("text/plain")
         print self.get_raw_body()
 
@@ -703,6 +705,11 @@ class Page:
         os.rename(tmp_filename, text)
 
     def save_text(self, newtext):
+        if not self.can_write():
+            self.msg = 'Write access denied by ACLs'
+            self.msg_type = 'error'
+            return
+
         self._write_file(newtext)
         rc = 0
         if post_edit_hook:
@@ -721,7 +728,7 @@ class Page:
             if msg:
                 self.msg += 'Output follows:\n' + msg
         else:
-            self.msg = 'Thankyou for your contribution.  Your attention to detail is appreciated.'
+            self.msg = 'Thank you for your contribution.  Your attention to detail is appreciated.'
             self.msg_type = 'success'
 
 def send_verbatim(filename, mime_type='application/octet-stream'):
@@ -747,7 +754,7 @@ try:
     datetime_fmt = '%a %d %b %Y %I:%M %p'
     allow_edit = True                       # Is it possible to edit pages?
     show_hosts = True                       # show hostnames?
-    nonexist_qm = False                     # show '?' for nonexistent?
+    nonexist_pfx = ''                       # prefix before nonexistent link (usually '?')
     debug_cgi = False                       # Set to True for CGI var dump
 
     form = cgi.FieldStorage()