Commit Graph
267 Commits
Author SHA1 Message Date
Ross Lawley 16dcf78cab Ensure id is Hashable 2013-12-02 14:14:46 +00:00
Ross Lawley d868cfdeb0 Fix multi level nested fields getting marked as changed (#523) 2013-11-29 16:24:32 +00:00
Ross Lawley b024dd913d EmbeddedDocument._instance is now set when settng the attribute (#506) 2013-11-29 13:09:11 +00:00
Ross Lawley 06caabf333 Import fix 2013-11-29 11:53:24 +00:00
Ross Lawley 954131bd51 Merge remote-tracking branch 'origin/pr/496' 2013-11-29 11:49:54 +00:00
Ross Lawley 6465726008 Fix handling invalid dict field value (#485) 2013-11-29 10:33:36 +00:00
Eric Plumb 857cd718df Fix for issue #425 - allow undeclared fields in an embedded dynamic document to be seen by queryset methods 2013-11-08 14:57:35 -08:00
Loic Raucy 9ed138f896 Fixed bug with numeric valuedict keys and BaseDocument._lookup_field(). 2013-10-17 16:32:47 +02:00
Ross Lawley 5bcc454678 Handle dynamic fieldnames that look like digits (#434) 2013-08-07 09:07:57 +00:00
Ross Lawley 0c43787996 Fixed indexing - turn off _cls (#414) 2013-07-30 11:43:52 +00:00
Ross Lawley f1b1090263 Merge remote-tracking branch 'origin/pr/412' into 412
Conflicts:
	AUTHORS
2013-07-30 10:32:07 +00:00
Ross Lawley 1e4d48d371 Don't follow references in _get_changed_fields (#422, #417)
A better fix so we dont follow down a references rabbit hole.
2013-07-29 17:22:24 +00:00
Ross Lawley a66d516777 Merge pull request #417 from ProgressiveCompany/delta-dbref-false-bug
BaseDocument._delta doesn't properly end it's path at Documents when using `dbref=False`
2013-07-29 08:41:09 -07:00
Ross Lawley 67f43b2aad Allow args and kwargs to be passed through to_json (#420) 2013-07-29 15:29:48 +00:00
Paul Uithol e27439be6a Fix BaseDocument._delta when working with plain ObjectIds instead of DBRefs 2013-07-25 14:52:03 +02:00
Thom Knowles 80b3df8953 dereference instance not thread-safe 2013-07-22 20:07:57 -04:00
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