Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.idea
*.pyc
*.pyo
*.swp
*.swo
*.swn
# Emacs backup files & locks
*~
\#*
.\#*
8 changes: 4 additions & 4 deletions mongotools/forms/__init__.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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)()
Expand Down Expand Up @@ -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"""

Expand Down
10 changes: 5 additions & 5 deletions mongotools/forms/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions mongotools/forms/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down