From d7d2bd2fe80d55593f7a512f6f5c5fd7f20b0cf5 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 14 Jul 2012 18:24:01 -0500 Subject: [PATCH] fixed a problem with computed fields --- VERSION | 2 +- gluon/dal.py | 7 ++----- gluon/tools.py | 17 ++++++++--------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/VERSION b/VERSION index 74bcbc09..7b82fba6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-07-14 17:55:21) dev +Version 2.00.0 (2012-07-14 18:23:57) dev diff --git a/gluon/dal.py b/gluon/dal.py index ad28a276..ef2bb097 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -7396,11 +7396,8 @@ class Table(dict): elif update and not ofield.update is None: new_fields.append((ofield,ofield.update)) for ofield in self: - if not ofield.name in new_fields_names and ofield.compute: - try: - new_fields.append((ofield,ofield.compute(Row(fields)))) - except KeyError: - pass + if ofield.compute: + new_fields.append((ofield,ofield.compute(Row(fields)))) if not update and ofield.required and not ofield.name in new_fields_names: raise SyntaxError,'Table: missing required field: %s' % ofield.name return new_fields diff --git a/gluon/tools.py b/gluon/tools.py index 0ff30c0c..d149b2d3 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -4345,6 +4345,7 @@ class Expose(object): self.table_files()).xml() class Wiki(object): + regex_redirect = re.compile('redirect\s+(\w+\://\S+)\s*') def __init__(self,auth): self.auth = auth db = auth.db @@ -4356,31 +4357,30 @@ class Wiki(object): db.Field('body','text',notnull=True), db.Field('menu'), db.Field('html','text',readable=False,writable=False, - compute= lambda t: MARKMIN(t.body).xml()), + compute=lambda t: MARKMIN(t.body).xml()), auth.signature) db.define_table( 'wiki_media', db.Field('title',required=True), db.Field('file','upload',required=True), auth.signature) - def getslug(self,args): - if not args: return 'index' - return '/'.join(args) def __call__(self): if current.request.args(0)=='_edit': - return self.edit(self.getslug(current.request.args[1:])) + return self.edit(current.request.args(1) or 'index') elif current.request.args(0)=='_pages': return self.pages() elif current.request.args(0)=='_media': return self.media() else: - return self.read(self.getslug(current.request.args)) + return self.read(current.request.args(0) or 'index') def read(self,slug): page = self.auth.db.wiki_page(slug=slug) if not page: url = URL(args=('_edit',slug)) return dict(content=A('Create page "%s"' % slug,_href=url,_class="btn")) else: + match = self.regex_redirect.match(page.body) + if match: redirect(match.group(1)) return dict(content=XML(page.html)) def check_authorization(self,act=False): if not self.auth.user: @@ -4435,15 +4435,14 @@ class Wiki(object): not str(request.args(0)).startswith('_'): submenu.append((current.T('Edit'),None, URL(controller,function, - args=('_edit',self.getslug(request.args))))) + args=('_edit',request.args(0) or 'index')))) submenu.append((current.T('Manage Pages'),None, URL(controller,function,args=('_pages')))) submenu.append((current.T('Manage Madia'),None, URL(controller,function,args=('_media')))) menu.append((current.T('[Wiki]'),None,None,submenu)) return menu - - + if __name__ == '__main__': import doctest