diff --git a/docs/apireference.rst b/docs/apireference.rst index 049cc303..0040f45e 100644 --- a/docs/apireference.rst +++ b/docs/apireference.rst @@ -54,28 +54,33 @@ Querying Fields ====== -.. autoclass:: mongoengine.BinaryField -.. autoclass:: mongoengine.BooleanField -.. autoclass:: mongoengine.ComplexDateTimeField -.. autoclass:: mongoengine.DateTimeField -.. autoclass:: mongoengine.DecimalField -.. autoclass:: mongoengine.DictField -.. autoclass:: mongoengine.DynamicField -.. autoclass:: mongoengine.EmailField -.. autoclass:: mongoengine.EmbeddedDocumentField -.. autoclass:: mongoengine.FileField -.. autoclass:: mongoengine.FloatField -.. autoclass:: mongoengine.GenericEmbeddedDocumentField -.. autoclass:: mongoengine.GenericReferenceField -.. autoclass:: mongoengine.GeoPointField -.. autoclass:: mongoengine.ImageField -.. autoclass:: mongoengine.IntField -.. autoclass:: mongoengine.ListField -.. autoclass:: mongoengine.MapField -.. autoclass:: mongoengine.ObjectIdField -.. autoclass:: mongoengine.ReferenceField -.. autoclass:: mongoengine.SequenceField -.. autoclass:: mongoengine.SortedListField .. autoclass:: mongoengine.StringField .. autoclass:: mongoengine.URLField +.. autoclass:: mongoengine.EmailField +.. autoclass:: mongoengine.IntField +.. autoclass:: mongoengine.LongField +.. autoclass:: mongoengine.FloatField +.. autoclass:: mongoengine.DecimalField +.. autoclass:: mongoengine.BooleanField +.. autoclass:: mongoengine.DateTimeField +.. autoclass:: mongoengine.ComplexDateTimeField +.. autoclass:: mongoengine.EmbeddedDocumentField +.. autoclass:: mongoengine.GenericEmbeddedDocumentField +.. autoclass:: mongoengine.DynamicField +.. autoclass:: mongoengine.ListField +.. autoclass:: mongoengine.SortedListField +.. autoclass:: mongoengine.DictField +.. autoclass:: mongoengine.MapField +.. autoclass:: mongoengine.ReferenceField +.. autoclass:: mongoengine.GenericReferenceField +.. autoclass:: mongoengine.BinaryField +.. autoclass:: mongoengine.FileField +.. autoclass:: mongoengine.ImageField +.. autoclass:: mongoengine.GeoPointField +.. autoclass:: mongoengine.SequenceField +.. autoclass:: mongoengine.ObjectIdField .. autoclass:: mongoengine.UUIDField +.. autoclass:: mongoengine.GridFSError +.. autoclass:: mongoengine.GridFSProxy +.. autoclass:: mongoengine.ImageGridFsProxy +.. autoclass:: mongoengine.ImproperlyConfigured diff --git a/docs/django.rst b/docs/django.rst index 6f27b902..5c9e7bfb 100644 --- a/docs/django.rst +++ b/docs/django.rst @@ -10,7 +10,7 @@ In your **settings.py** file, ignore the standard database settings (unless you also plan to use the ORM in your project), and instead call :func:`~mongoengine.connect` somewhere in the settings module. -.. note :: +.. note:: If you are not using another Database backend you may need to add a dummy database backend to ``settings.py`` eg:: diff --git a/docs/guide/querying.rst b/docs/guide/querying.rst index 32798531..5e250cea 100644 --- a/docs/guide/querying.rst +++ b/docs/guide/querying.rst @@ -450,7 +450,7 @@ modifier comes before the field, not after it:: >>> post.tags ['database', 'nosql'] -.. note :: +.. note:: In version 0.5 the :meth:`~mongoengine.Document.save` runs atomic updates on changed documents by tracking changes to that document. @@ -466,7 +466,7 @@ cannot use the `$` syntax in keyword arguments it has been mapped to `S`:: >>> post.tags ['database', 'mongodb'] -.. note :: +.. note:: Currently only top level lists are handled, future versions of mongodb / pymongo plan to support nested positional operators. See `The $ positional operator `_. diff --git a/docs/upgrade.rst b/docs/upgrade.rst index 5490757d..564b7f6d 100644 --- a/docs/upgrade.rst +++ b/docs/upgrade.rst @@ -205,7 +205,7 @@ via `save` eg :: # Or in code: my_document.save(cascade=True) -.. note :: +.. note:: Remember: cascading saves **do not** cascade through lists. ReferenceFields diff --git a/mongoengine/__init__.py b/mongoengine/__init__.py index da72e53b..6fe6d088 100644 --- a/mongoengine/__init__.py +++ b/mongoengine/__init__.py @@ -8,10 +8,12 @@ import queryset from queryset import * import signals from signals import * +from errors import * +import errors import django __all__ = (list(document.__all__) + fields.__all__ + connection.__all__ + - list(queryset.__all__) + signals.__all__) + list(queryset.__all__) + signals.__all__ + list(errors.__all__)) VERSION = (0, 8, 0, '+') diff --git a/mongoengine/errors.py b/mongoengine/errors.py index 9cfcd1d2..4b6b562c 100644 --- a/mongoengine/errors.py +++ b/mongoengine/errors.py @@ -3,7 +3,9 @@ from collections import defaultdict from mongoengine.python_support import txt_type -__all__ = ('NotRegistered', 'InvalidDocumentError', 'ValidationError') +__all__ = ('NotRegistered', 'InvalidDocumentError', 'LookUpError', + 'DoesNotExist', 'MultipleObjectsReturned', 'InvalidQueryError', + 'OperationError', 'NotUniqueError', 'ValidationError') class NotRegistered(Exception): diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 45304291..e23b90a6 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -4,7 +4,6 @@ import itertools import re import time import urllib2 -import urlparse import uuid import warnings from operator import itemgetter @@ -16,7 +15,7 @@ from mongoengine.errors import ValidationError from mongoengine.python_support import (PY3, bin_type, txt_type, str_types, StringIO) from base import (BaseField, ComplexBaseField, ObjectIdField, - get_document, BaseDocument, ALLOW_INHERITANCE) + get_document, BaseDocument) from queryset import DO_NOTHING, QuerySet from document import Document, EmbeddedDocument from connection import get_db, DEFAULT_CONNECTION_NAME @@ -27,13 +26,17 @@ except ImportError: Image = None ImageOps = None -__all__ = ['StringField', 'IntField', 'LongField', 'FloatField', 'BooleanField', - 'DateTimeField', 'EmbeddedDocumentField', 'ListField', 'DictField', - 'ObjectIdField', 'ReferenceField', 'ValidationError', 'MapField', - 'DecimalField', 'ComplexDateTimeField', 'URLField', 'DynamicField', - 'GenericReferenceField', 'FileField', 'BinaryField', - 'SortedListField', 'EmailField', 'GeoPointField', 'ImageField', - 'SequenceField', 'UUIDField', 'GenericEmbeddedDocumentField'] +__all__ = ['StringField', 'URLField', 'EmailField', 'IntField', 'LongField', + 'FloatField', 'DecimalField', 'BooleanField', 'DateTimeField', + 'ComplexDateTimeField', 'EmbeddedDocumentField', 'ObjectIdField', + 'GenericEmbeddedDocumentField', 'DynamicField', 'ListField', + 'SortedListField', 'DictField', 'MapField', 'ReferenceField', + 'GenericReferenceField', 'BinaryField', 'GridFSError', + 'GridFSProxy', 'FileField', 'ImageGridFsProxy', + 'ImproperlyConfigured', 'ImageField', 'GeoPointField', + 'SequenceField', 'UUIDField'] + + RECURSIVE_REFERENCE_CONSTANT = 'self' @@ -351,7 +354,7 @@ class DateTimeField(BaseField): kwargs = {'microsecond': usecs} try: # Seconds are optional, so try converting seconds first. return datetime.datetime(*time.strptime(value, - '%Y-%m-%d %H:%M:%S')[:6], **kwargs) + '%Y-%m-%d %H:%M:%S')[:6], **kwargs) except ValueError: try: # Try without seconds. return datetime.datetime(*time.strptime(value,