From c2dd2089d20226459b1d0e3a5567ec4955a9c125 Mon Sep 17 00:00:00 2001 From: Kelvin Hammond Date: Fri, 14 Feb 2014 13:51:01 -0600 Subject: [PATCH 1/3] Allow non-existent field names in ModelForm Meta exclude --- wtforms_alchemy/generator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wtforms_alchemy/generator.py b/wtforms_alchemy/generator.py index 61aae13..fc14ae1 100644 --- a/wtforms_alchemy/generator.py +++ b/wtforms_alchemy/generator.py @@ -163,7 +163,8 @@ def filter_attributes(self, attrs): if self.meta.exclude: for key in self.meta.exclude: - del attrs[key] + if key in attrs: + del attrs[key] return attrs def validate_attribute(self, attr_name): From b6d8a0ee195c05444debcd806decc0e599dce7f7 Mon Sep 17 00:00:00 2001 From: Kelvin Hammond Date: Fri, 14 Feb 2014 14:04:27 -0600 Subject: [PATCH 2/3] Removed NumberRangeField so project builds --- wtforms_alchemy/__init__.py | 2 -- wtforms_alchemy/generator.py | 2 -- 2 files changed, 4 deletions(-) diff --git a/wtforms_alchemy/__init__.py b/wtforms_alchemy/__init__.py index 5b3c5c2..47cfcfc 100644 --- a/wtforms_alchemy/__init__.py +++ b/wtforms_alchemy/__init__.py @@ -9,7 +9,6 @@ from wtforms_components import ( DateRange, Email, - NumberRangeField, PhoneNumberField, SelectField, SelectMultipleField, @@ -40,7 +39,6 @@ InvalidAttributeException, ModelFieldList, ModelFormField, - NumberRangeField, PhoneNumberField, SelectField, SelectMultipleField, diff --git a/wtforms_alchemy/generator.py b/wtforms_alchemy/generator.py index fc14ae1..93d7f3b 100644 --- a/wtforms_alchemy/generator.py +++ b/wtforms_alchemy/generator.py @@ -27,7 +27,6 @@ DecimalField, EmailField, IntegerField, - NumberRangeField, PhoneNumberField, SelectField, StringField, @@ -88,7 +87,6 @@ class FormGenerator(object): (types.ChoiceType, SelectField), (types.ColorType, ColorField), (types.EmailType, EmailField), - (types.NumberRangeType, NumberRangeField), (types.PasswordType, PasswordField), (types.PhoneNumberType, PhoneNumberField), (types.ScalarListType, StringField), From 2197cd7f40f9367a420397d713439655f49feba5 Mon Sep 17 00:00:00 2001 From: Kelvin Hammond Date: Sat, 15 Feb 2014 11:33:55 -0600 Subject: [PATCH 3/3] Added silent_exclude to form generator --- wtforms_alchemy/__init__.py | 5 +++++ wtforms_alchemy/generator.py | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/wtforms_alchemy/__init__.py b/wtforms_alchemy/__init__.py index 47cfcfc..5394048 100644 --- a/wtforms_alchemy/__init__.py +++ b/wtforms_alchemy/__init__.py @@ -205,6 +205,11 @@ class Meta: #: List of fields to only include in the generated form. only = defaults.pop('only', []) + #: Silently ignore exclude elements which aren't mapped + #: + #: By Default silently ignores missing elements + silent_exclude = defaults.pop('silent_exclude', True) + def __init__(self, *args, **kwargs): """Sets object as form attribute.""" diff --git a/wtforms_alchemy/generator.py b/wtforms_alchemy/generator.py index 93d7f3b..33bcb3e 100644 --- a/wtforms_alchemy/generator.py +++ b/wtforms_alchemy/generator.py @@ -161,7 +161,9 @@ def filter_attributes(self, attrs): if self.meta.exclude: for key in self.meta.exclude: - if key in attrs: + if self.meta.silent_exclude and not key in attrs: + continue + else: del attrs[key] return attrs