From 16dec4dc2f3f92a09b627de82e1e320c3a7bdc3d Mon Sep 17 00:00:00 2001 From: Mike Austin Date: Tue, 10 Jan 2012 17:32:51 +0000 Subject: [PATCH 1/6] added logging where fields are being ignored --- .gitignore | 10 ++++++++++ mongotools/forms/utils.py | 5 +++++ 2 files changed, 15 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7956ee7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.idea +*.pyc +*.pyo +*.swp +*.swo +*.swn +# Emacs backup files & locks +*~ +\#* +.\#* diff --git a/mongotools/forms/utils.py b/mongotools/forms/utils.py index 853f7b2..e7a5050 100644 --- a/mongotools/forms/utils.py +++ b/mongotools/forms/utils.py @@ -8,6 +8,8 @@ from mongoengine.connection import _get_db from fields import MongoFormFieldGenerator +import logging +logger = logging.getLogger(__name__) def generate_field(field): generator = MongoFormFieldGenerator() @@ -48,13 +50,16 @@ def iter_valid_fields(meta): continue if isinstance(field, EmbeddedDocumentField): #skip EmbeddedDocumentField + logger.error("Ignoring field %s because it is an EmbeddedDocumentField" % (field_name) ) continue if isinstance(field, ListField): if hasattr(field.field, 'choices') and not isinstance(field.field, ReferenceField): if not field.field.choices: + logger.error("Ignoring field %s because it is a ListField but doesn't have any choices" % (field_name) ) continue elif not isinstance(field.field, ReferenceField): + logger.error("Ignoring field %s" % (field_name) ) continue yield (field_name, field) From e9e94165f4ecb50b48922cac97061321897d557c Mon Sep 17 00:00:00 2001 From: David Henderson Date: Wed, 28 Mar 2012 10:49:55 +0100 Subject: [PATCH 2/6] Removed capitalize --- mongotools/forms/fields.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mongotools/forms/fields.py b/mongotools/forms/fields.py index 0386d25..9bcdf03 100644 --- a/mongotools/forms/fields.py +++ b/mongotools/forms/fields.py @@ -185,11 +185,11 @@ def boolean_field(self, value): def get_field_label(self, field): if field.verbose_name: return field.verbose_name - return field.name.capitalize() + return field.name def get_field_help_text(self, field): if field.help_text: - return field.help_text.capitalize() + return field.help_text def generate_stringfield(self, field, **kwargs): form_class = MongoCharField From 43bc71c498955b96be872f5a5fcede0b35517203 Mon Sep 17 00:00:00 2001 From: David Henderson Date: Wed, 16 Jul 2014 08:50:47 +0100 Subject: [PATCH 3/6] Changed log level --- mongotools/forms/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mongotools/forms/utils.py b/mongotools/forms/utils.py index ea3945a..e6edbaa 100644 --- a/mongotools/forms/utils.py +++ b/mongotools/forms/utils.py @@ -53,16 +53,16 @@ def iter_valid_fields(meta): continue if isinstance(field, EmbeddedDocumentField): #skip EmbeddedDocumentField - logger.error("Ignoring field %s because it is an EmbeddedDocumentField" % (field_name) ) + logger.debug("Ignoring field %s because it is an EmbeddedDocumentField" % (field_name) ) continue if isinstance(field, ListField): if hasattr(field.field, 'choices') and not isinstance(field.field, ReferenceField): if not field.field.choices: - logger.error("Ignoring field %s because it is a ListField but doesn't have any choices" % (field_name) ) + logger.debug("Ignoring field %s because it is a ListField but doesn't have any choices" % (field_name) ) continue elif not isinstance(field.field, ReferenceField): - logger.error("Ignoring field %s" % (field_name) ) + logger.debug("Ignoring field %s" % (field_name) ) continue yield (field_name, field) From 914a90f756176f7548c0ba9e54c8bc77c47b0417 Mon Sep 17 00:00:00 2001 From: David Henderson Date: Wed, 16 Jul 2014 08:56:25 +0100 Subject: [PATCH 4/6] Remove logging on ListField --- mongotools/forms/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mongotools/forms/utils.py b/mongotools/forms/utils.py index e6edbaa..6db237a 100644 --- a/mongotools/forms/utils.py +++ b/mongotools/forms/utils.py @@ -59,7 +59,7 @@ def iter_valid_fields(meta): if isinstance(field, ListField): if hasattr(field.field, 'choices') and not isinstance(field.field, ReferenceField): if not field.field.choices: - logger.debug("Ignoring field %s because it is a ListField but doesn't have any choices" % (field_name) ) + #logger.debug("Ignoring field %s because it is a ListField but doesn't have any choices" % (field_name) ) continue elif not isinstance(field.field, ReferenceField): logger.debug("Ignoring field %s" % (field_name) ) From 08fb930191fa7d570aef2375476c95379506cea0 Mon Sep 17 00:00:00 2001 From: Mike Austin Date: Wed, 12 Aug 2015 14:45:16 +0100 Subject: [PATCH 5/6] case 7725 use forms.utils instead of forms.util, for compatability with new Django. force_text instead of force_unicode --- mongotools/forms/__init__.py | 2 +- mongotools/forms/fields.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mongotools/forms/__init__.py b/mongotools/forms/__init__.py index 41db60e..f815463 100644 --- a/mongotools/forms/__init__.py +++ b/mongotools/forms/__init__.py @@ -86,7 +86,7 @@ class MongoForm(forms.BaseForm): __metaclass__ = MongoFormMetaClass def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, - error_class=forms.util.ErrorList, label_suffix=':', + error_class=forms.utils.ErrorList, label_suffix=':', empty_permitted=False, instance=None): """ initialize the form""" diff --git a/mongotools/forms/fields.py b/mongotools/forms/fields.py index 0df536a..bd17397 100644 --- a/mongotools/forms/fields.py +++ b/mongotools/forms/fields.py @@ -3,7 +3,7 @@ from pymongo.errors import InvalidId from bson import ObjectId from django.core.validators import EMPTY_VALUES -from django.utils.encoding import smart_unicode, force_unicode +from django.utils.encoding import smart_unicode, force_text from django.utils.translation import ugettext_lazy as _ from mongoengine import ReferenceField as MongoReferenceField @@ -132,9 +132,9 @@ def clean(self, value): raise forms.ValidationError(self.error_messages['invalid_pk_value'] % pk) qs = self.queryset.clone() qs = qs.filter(**{'%s__in' % key: filter_ids}) - pks = set([force_unicode(getattr(o, key)) for o in qs]) + pks = set([force_text(getattr(o, key)) for o in qs]) for val in value: - if force_unicode(val) not in pks: + if force_text(val) not in pks: raise forms.ValidationError(self.error_messages['invalid_choice'] % val) # Since this overrides the inherited ModelChoiceField.clean # we run custom validators here From e48bf133552c0c12c87d0c11e39ea7ba464d4b1a Mon Sep 17 00:00:00 2001 From: David Henderson Date: Tue, 15 Dec 2020 17:48:03 +0000 Subject: [PATCH 6/6] Update __init__.py --- mongotools/forms/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mongotools/forms/__init__.py b/mongotools/forms/__init__.py index f815463..e674c88 100644 --- a/mongotools/forms/__init__.py +++ b/mongotools/forms/__init__.py @@ -1,7 +1,7 @@ import types from django import forms from django.core.files.uploadedfile import UploadedFile -from django.utils.datastructures import SortedDict +from collections import OrderedDict from django.forms.widgets import media_property from mongoengine.base import BaseDocument @@ -29,12 +29,12 @@ def __new__(cls, name, bases, attrs): fields = base.base_fields.items() + fields # add the fields as "our" base fields - attrs['base_fields'] = SortedDict(fields) + attrs['base_fields'] = OrderedDict(fields) # Meta class available? if 'Meta' in attrs and hasattr(attrs['Meta'], 'document') and \ issubclass(attrs['Meta'].document, BaseDocument): - doc_fields = SortedDict() + doc_fields = OrderedDict() formfield_generator = getattr(attrs['Meta'], 'formfield_generator', MongoFormFieldGenerator)()