From 9d7e009c0ffef8bdf1db3c42b5f6bc44684fab52 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Mon, 29 Oct 2012 11:36:04 -0500 Subject: [PATCH] csv can return a generator, thanks Jonathan --- VERSION | 2 +- gluon/tools.py | 28 +++++++++++++--------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/VERSION b/VERSION index 2fa142a9..42184285 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.2.1 (2012-10-29 10:09:01) stable +Version 2.2.1 (2012-10-29 11:35:59) stable diff --git a/gluon/tools.py b/gluon/tools.py index 44eabe2d..0e31f494 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -1365,13 +1365,13 @@ class Auth(object): archive_names='%(tablename)s_archive', current_record='current_record'): """ - to enable full record vernionioning (including auth tables): + to enable full record versioning (including auth tables): auth = Auth(db) auth.define_tables(signature=True) # define our own tables db.define_table('mything',Field('name'),auth.signature) - auth.enable_record_vernining(tables=db) + auth.enable_record_versioning(tables=db) tables can be the db (all table) or a list of tables. only tables with modified_by and modified_on fiels (as created @@ -1386,7 +1386,7 @@ class Auth(object): Important: If you use auth.enable_record_versioning, do not use auth.archive or you will end up with duplicates. - auth.archive does explicitely what enable_record_versioning + auth.archive does explicitly what enable_record_versioning does automatically. """ @@ -1489,7 +1489,7 @@ class Auth(object): IS_NOT_IN_DB(db, '%s.username' % settings.table_user_name)] if not settings.username_case_sensitive: is_unique_username.insert(1, IS_LOWER()) - table = db.define_table( + db.define_table( settings.table_user_name, Field('first_name', length=128, default='', label=self.messages.label_first_name, @@ -1522,7 +1522,7 @@ class Auth(object): fake_migrate=fake_migrate, format='%(username)s')) else: - table = db.define_table( + db.define_table( settings.table_user_name, Field('first_name', length=128, default='', label=self.messages.label_first_name, @@ -1555,7 +1555,7 @@ class Auth(object): if not settings.table_group_name in db.tables: extra_fields = settings.extra_fields.get( settings.table_group_name, []) + signature_list - table = db.define_table( + db.define_table( settings.table_group_name, Field('role', length=512, default='', label=self.messages.label_role, @@ -1573,7 +1573,7 @@ class Auth(object): if not settings.table_membership_name in db.tables: extra_fields = settings.extra_fields.get( settings.table_membership_name, []) + signature_list - table = db.define_table( + db.define_table( settings.table_membership_name, Field('user_id', reference_table_user, label=self.messages.label_user_id), @@ -1587,7 +1587,7 @@ class Auth(object): if not settings.table_permission_name in db.tables: extra_fields = settings.extra_fields.get( settings.table_permission_name, []) + signature_list - table = db.define_table( + db.define_table( settings.table_permission_name, Field('group_id', reference_table_group, label=self.messages.label_group_id), @@ -1605,7 +1605,7 @@ class Auth(object): settings.table_permission_name, migrate), fake_migrate=fake_migrate)) if not settings.table_event_name in db.tables: - table = db.define_table( + db.define_table( settings.table_event_name, Field('time_stamp', 'datetime', default=current.request.now, @@ -1629,7 +1629,7 @@ class Auth(object): now = current.request.now if settings.cas_domains: if not settings.table_cas_name in db.tables: - table = db.define_table( + db.define_table( settings.table_cas_name, Field('user_id', reference_table_user, default=None, label=self.messages.label_user_id), @@ -1773,8 +1773,6 @@ class Auth(object): """ logins user as specified by usernname (or email) and password """ - request = current.request - session = current.session table_user = self.table_user() if self.settings.login_userfield: userfield = self.settings.login_userfield @@ -2669,7 +2667,6 @@ class Auth(object): redirect(self.settings.login_url) db = self.db table_user = self.table_user() - usern = self.settings.table_user_name s = db(table_user.id == self.user.id) request = current.request @@ -4139,12 +4136,13 @@ class Service(object): return '' return value if args and args[0] in self.run_procedures: + import types r = universal_caller(self.run_procedures[args[0]], *args[1:], **dict(request.vars)) s = cStringIO.StringIO() if hasattr(r, 'export_to_csv_file'): r.export_to_csv_file(s) - elif r and isinstance(r[0], (dict, Storage)): + elif r and not isinstance(r, types.GeneratorType) and isinstance(r[0], (dict, Storage)): import csv writer = csv.writer(s) writer.writerow(r[0].keys()) @@ -4656,7 +4654,7 @@ class Wiki(object): html = page.body # @///function -> http://..../function html = replace_at_urls(html, URL) - # http://...jpg -> or embed html = replace_autolinks(html, lambda link: expand_one(link, {})) # @{component:name} -> html = replace_components(html, self.env)