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/__init__.py b/mongotools/forms/__init__.py index 41db60e..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)() @@ -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 267c74f..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 @@ -197,11 +197,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 diff --git a/mongotools/forms/utils.py b/mongotools/forms/utils.py index 8fae251..6db237a 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() @@ -51,13 +53,16 @@ def iter_valid_fields(meta): continue if isinstance(field, EmbeddedDocumentField): #skip EmbeddedDocumentField + 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.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) ) continue yield (field_name, field)