Commit Graph
51 Commits
Author SHA1 Message Date
Ross Lawley d593f7e04b Fixed EmbeddedDocuments with id also storing _id (#402) 2013-07-11 08:11:00 +00:00
Ross Lawley 6c599ef506 Fix edge case where _dynamic_keys stored as None (#387, #401) 2013-07-11 07:15:34 +00:00
Ross Lawley e155e1fa86 Add a default for previously pickled versions 2013-07-10 20:10:01 +00:00
Ross Lawley af86aee970 _dynamic field updates - fixed pickling and creation order
Dynamic fields are ordered based on creation and stored in _fields_ordered (#396)
Fixed pickling dynamic documents `_dynamic_fields` (#387)
2013-07-10 10:57:24 +00:00
Ross Lawley 7cb46d0761 Fixed ListField setslice and delslice dirty tracking (#390) 2013-07-10 09:11:50 +00:00
Ross Lawley f0d4e76418 Documentation updates 2013-06-07 08:21:15 +00:00
Ross Lawley 7451244cd2 Fixed cascading saves which weren't turned off as planned (#291) 2013-06-06 21:04:54 +00:00
Ross Lawley a7631223a3 Fixed Datastructures so instances are a Document or EmbeddedDocument (#363) 2013-06-06 17:58:10 +00:00
Ross Lawley dc3b09c218 Improved cascading saves write performance (#361) 2013-06-06 16:36:17 +00:00
Ross Lawley ad15781d8f Fixed amibiguity and differing behaviour regarding field defaults (#349)
Now field defaults are king, unsetting or setting to None on a field
with a default means the default is reapplied.
2013-06-06 13:31:52 +00:00
Ross Lawley ea53612822 Merge remote-tracking branch 'origin/pr/349' into 349 2013-06-06 12:06:23 +00:00
Ross Lawley a246154961 Fixed hashing of EmbeddedDocuments (#348) 2013-06-05 11:31:13 +00:00
Ross Lawley 3b60adc8da Merge pull request #344 from matchbox/complex-change-tracking
Remove custom change tracking for ComplexBaseFields just use BaseField's one
2013-06-04 02:54:59 -07:00
Ross Lawley 626a3369b5 Removed unused var in _get_changed_fields (#347) 2013-06-04 09:51:58 +00:00
Nigel McNie 4c9e90732e Apply defaults to fields with None value at 'set' time.
If a field has a default, and you explicitly set it to None, the
behaviour before this patch was very confusing:

    class Person(Document):
        created = DateTimeField(default=datetime.datetime.utcnow)

    >>> p = Person(created=None)
    >>> p.created
    datetime.datetime(2013, 5, 30, 0, 18, 20, 242628)
    >>> p.created
    datetime.datetime(2013, 5, 30, 0, 18, 20, 995248)
    >>> p.created
    datetime.datetime(2013, 5, 30, 0, 18, 21, 370578)

It would be stored as None, and then at 'get' time, the default would be
applied. As you can see, if the default is a generator, this leads to some
crazy behaviour.

There's an argument that if I asked it to be set to None, why not respect that?
But I don't think that's how the rest of mongoengine seems to work (for
example, setting a field to None seems to mean it doesn't even get set in mongo
- as opposed to being set but with a 'null' value). Besides, as the code shows
above, you'd expect p.created to return None. So clearly, mongoengine is
already expecting None to mean 'default' where a default is available.

This bug also interacts nastily with required=True - if you're forcibly setting
the field to None, then at validation time, the None will fail validation
despite a perfectly valid default being available.

With this patch, when the field is set, the default is immediately applied.
This means any generation happens once, the getter always returns the same
value, and 'required' validation always respects the default.

Note: this breakage seems to be new since mongoengine 0.8.
2013-05-30 16:37:40 +12:00
Paul Swartz c0571beec8 fix change tracking for ComplexBaseFields 2013-05-28 17:19:46 -04:00
Stefan Wojcik 4670f09a67 fix __set_state__ 2013-05-27 13:48:02 -07:00
Ross Lawley 9aa77bb3c9 Fixed pickle unsaved document regression (#327) 2013-05-21 07:07:17 +00:00
Ross Lawley 56cd73823e Add backwards compat for pickle 2013-05-20 10:09:16 +00:00
Ross Lawley 6299015039 Updated pickling (#316) 2013-05-20 10:04:17 +00:00
Ross Lawley 3ccc495c75 Fixed register_delete_rule inheritance issue 2013-05-03 12:56:53 +00:00
Ross Lawley f2c16452c6 Help with backwards compatibility 2013-05-02 10:48:30 +00:00
Ross Lawley 473d5ead7b Geo errors fix and test update 2013-04-30 16:42:38 +00:00
Ross Lawley 9c1cd81adb Add support for new geojson fields, indexes and queries (#299) 2013-04-30 14:46:23 +00:00
Ross Lawley 85b81fb12a If values cant be compared mark as changed (#287) 2013-04-29 10:36:11 +00:00
Ross Lawley 5e65d27832 PEP8 x == True should be x is True 2013-04-26 11:46:12 +00:00
Ross Lawley 36993097b4 Document serialization uses field order to ensure a strict order is set (#296) 2013-04-26 11:38:45 +00:00
Ross Lawley 14b6c471cf Fix PY3 hasattr connecting to the db at define time 2013-04-22 16:37:09 +00:00
Ross Lawley efad628a87 Objects queryset manager now inherited (#256) 2013-04-22 15:32:11 +00:00
Ross Lawley 420376d036 Merge fixes 2013-04-17 14:27:33 +00:00
Ross Lawley 51e50bf0a9 Merge branch 'master' into 0.8M
Conflicts:
	AUTHORS
	docs/django.rst
	mongoengine/base.py
	mongoengine/queryset.py
	tests/fields/fields.py
	tests/queryset/queryset.py
	tests/test_dereference.py
	tests/test_document.py
2013-04-17 11:57:53 +00:00
Ross Lawley 04b85ddbf2 Merge branch 'master' into 0.8
Conflicts:
	.travis.yml
	AUTHORS
	docs/changelog.rst
	mongoengine/base.py
	mongoengine/queryset.py
	tests/queryset/queryset.py
2013-04-12 13:36:29 +00:00
Ross Lawley d90890c08e Merge branch 'single-work-op' of https://github.com/njoyce/mongoengine into 211
Conflicts:
	mongoengine/document.py
	tests/test_document.py
2013-01-28 15:05:12 +00:00
Ross Lawley 8eda52e8e0 Merge branch 'master' of https://github.com/malderete/mongoengine into 214
Conflicts:
	AUTHORS
	mongoengine/base.py
	tests/fields/fields.py
2013-01-28 14:27:17 +00:00
Ross Lawley 9d9a4afee9 Added Doc class and pk to Validation messages (#69) 2013-01-28 12:05:09 +00:00
Ross Lawley 621b2b3f72 Undefined data should not override instance methods (#49) 2013-01-25 11:28:20 +00:00
Ross Lawley ba48dfb4bf Added no_dereference method for querysets (#82) (#61) 2013-01-24 17:33:10 +00:00
Ross Lawley 3a6dc77d36 Added no_dereference context manager (#82)
Reorganised the context_managers as well
2013-01-23 19:05:44 +00:00
Ross Lawley 692f00864d Fixed inheritance and unique index creation (#140) 2013-01-22 15:16:58 +00:00
Ross Lawley f335591045 Fix index build_spec #177 2012-12-19 16:55:14 +00:00
Ross Lawley 420c3e0073 Fixing for python2.5
closes #188
2012-12-19 12:51:42 +00:00
Ross Lawley 9cc02d4dbe Dynamic fields are now validated on save
(MongoEngine/mongoengine#153) (MongoEngine/mongoengine#154)
2012-12-19 12:32:06 +00:00
Ross Lawley 3425264077 Merge branch 'master' into 0.8
Conflicts:
	AUTHORS
	docs/changelog.rst
	mongoengine/__init__.py
	mongoengine/base.py
	mongoengine/fields.py
	python-mongoengine.spec
	tests/test_document.py
	tests/test_fields.py
	tests/test_queryset.py
2012-12-19 11:35:49 +00:00
Ross Lawley 3598fe0fb4 Adding _collection to _cls 2012-11-27 14:02:50 +00:00
Ross Lawley f9dd051ec9 Merged get_document fix 2012-11-27 14:02:50 +00:00
Ross Lawley 363e50abbe Updated documents with embedded documents can be created in a single operation (MongoEngine/mongoengine#6) 2012-11-08 14:46:56 +00:00
Ross Lawley b8d53a6f0d Added json serialisation support
- Added to_json and from_json to Document (MongoEngine/mongoengine#1)
- Added to_json and from_json to QuerySet (MongoEngine/mongoengine#131)
2012-11-08 12:04:14 +00:00
Ross Lawley 1986e82783 Added clean method to documents for pre validation data cleaning (MongoEngine/mongoengine#60) 2012-11-07 12:12:28 +00:00
Ross Lawley 7d90aa76ff Add _instance to Embedded Documents
Fixes MongoEngine/mongoengine#139
2012-11-06 16:04:23 +00:00
Ross Lawley 3d5b6ae332 Inheritance is off by default (MongoEngine/mongoengine#122) 2012-10-22 19:29:26 +00:00