diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 1bddfe3c..028cafd9 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -103,17 +103,18 @@ class CacheRepresenter(object): cache[field][value] = nvalue return nvalue + def safe_int(x, i=0): try: return int(x) - except ValueError: + except (ValueError, TypeError): return i def safe_float(x): try: return float(x) - except ValueError: + except (ValueError, TypeError): return 0 diff --git a/gluon/tools.py b/gluon/tools.py index bf4bd902..edccc825 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -775,8 +775,8 @@ class Mail(object): if attachments: result = mail.send_mail( sender=sender, to=origTo, - subject=to_unicode(subject, encoding), - body=to_unicode(text or '', encoding), + subject=to_unicode(subject, encoding), + body=to_unicode(text or '', encoding), html=html, attachments=attachments, **xcc) elif html and (not raw): @@ -794,7 +794,7 @@ class Mail(object): try: raw = {'Data': payload.as_string()} response = client.send_raw_email(RawMessage=raw, - Source=sender, + Source=sender, Destinations=to) return True except ClientError as e: @@ -2161,7 +2161,10 @@ class Auth(AuthAPI): user = None checks = [] # make a guess about who this user is - for fieldname in ['registration_id', 'username', 'email']: + guess_fields = ['registration_id', 'username', 'email'] + if self.settings.login_userfield: + guess_fields.append(self.settings.login_userfield) + for fieldname in guess_fields: if fieldname in table_user.fields() and \ keys.get(fieldname, None): checks.append(fieldname) @@ -2255,7 +2258,8 @@ class Auth(AuthAPI): def _get_login_settings(self): table_user = self.table_user() userfield = self.settings.login_userfield or 'username' \ - if 'username' in table_user.fields else 'email' + if self.settings.login_userfield or 'username' \ + in table_user.fields else 'email' passfield = self.settings.password_field return Storage({'table_user': table_user, 'userfield': userfield, @@ -3630,7 +3634,7 @@ class Auth(AuthAPI): onaccept = self.settings.profile_onaccept if log is DEFAULT: log = self.messages['profile_log'] - + form = SQLFORM( table_user, self.user.id, diff --git a/gluon/widget.py b/gluon/widget.py index ce731e5d..fbd522ae 100644 --- a/gluon/widget.py +++ b/gluon/widget.py @@ -943,9 +943,7 @@ def console(): k = len(sys.argv) sys.argv, other_args = sys.argv[:k], sys.argv[k + 1:] (options, args) = parser.parse_args() - options.args = other_args - if options.run: - options.args.insert(0, options.run) + options.args = [options.run] + other_args copy_options = copy.deepcopy(options) copy_options.password = '******'