1026 Commits

Author SHA1 Message Date
Ross Lawley
4244e7569b Added pre_save_post_validation signal (#345) 2013-06-04 09:35:44 +00:00
Ross Lawley
dcd23a0b4d Merge pull request #345 from amcgregor/master
Addition of pre_save_validation and move of pre_save to after validation.
2013-06-04 02:13:25 -07:00
Ross Lawley
5447c6e947 DateTimeField now auto converts valid datetime isostrings into dates (#343) 2013-06-04 09:08:13 +00:00
Ross Lawley
f1b97fbc8b Merge pull request #343 from matchbox/dateutil
if `dateutil` is available, use it to parse datetimes
2013-06-04 01:22:31 -07:00
Ross Lawley
4c8dfc3fc2 Fixed Doc.objects(read_preference=X) not setting read preference (#352) 2013-06-03 15:40:54 +00:00
Ross Lawley
ceece5a7e2 Improved PIL detection for tests 2013-06-03 13:38:58 +00:00
Ross Lawley
b2f78fadd9 Added test for upsert & update_one #336 2013-06-03 13:05:52 +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
Alice Bevan-McGregor
12f6a3f5a3 Added tests for pre_save_validation and updated tests for pre_save to encompass created flag. 2013-05-29 12:22:15 -04:00
Paul Swartz
c0571beec8 fix change tracking for ComplexBaseFields 2013-05-28 17:19:46 -04:00
Paul Swartz
1302316eb0 add some tests 2013-05-28 16:08:33 -04:00
Stefan Wojcik
774895ec8c dont simplify queries with duplicate conditions 2013-05-23 17:49:28 -07:00
Ross Lawley
c5ce96c391 Fix py3 test 2013-05-23 19:44:05 +00:00
Ross Lawley
1eb6436682 Added get image by grid_id example 2013-05-22 10:29:45 +00:00
Ross Lawley
a84e1f17bb Fixing django tests for py 2.6 2013-05-21 09:42:22 +00:00
Stefan Wojcik
d060da094f update pickling test case to show the error 2013-05-20 17:40:56 -07:00
Ross Lawley
1ddf8b3159 Merge remote-tracking branch 'origin/pr/317' 2013-05-20 10:20:04 +00:00
Ross Lawley
6299015039 Updated pickling (#316) 2013-05-20 10:04:17 +00:00
Ross Lawley
11b7cfb5ff Merge remote-tracking branch 'origin/pr/316' into 316 2013-05-20 09:08:12 +00:00
Wilson Júnior
bc92f78afb fixes for value_decorator 2013-05-16 13:12:49 -03:00
Wilson Júnior
f7e22d2b8b fixes for get_next_value 2013-05-16 13:05:07 -03:00
Wilson Júnior
10e0b1daec Merge branch 'master' of https://github.com/MongoEngine/mongoengine 2013-05-16 12:50:47 -03:00
Wilson Júnior
731d8fc6be added get_next_value to SequenceField 2013-05-16 12:50:34 -03:00
Stefan Wojcik
f6d0b53ae5 test reference to a custom pk doc 2013-05-13 21:42:20 -07:00
Léo S
0efb90deb6 Added a failing test when using pickle with signal hooks 2013-05-13 13:14:15 +02:00
Ross Lawley
f8350409ad assertEquals is bad 2013-05-10 15:08:01 +00:00
Ross Lawley
5b498bd8d6 Added no_sub_classes context manager and queryset helper (#312) 2013-05-10 15:05:16 +00:00
Ross Lawley
941042d0ba Merge remote-tracking branch 'origin/pr/312' into 312 2013-05-10 14:44:44 +00:00
Ross Lawley
9251ce312b Querysets now utilises a local cache
Changed __len__ behavour in the queryset (#247, #311)
2013-05-10 13:57:32 +00:00
Wilson Júnior
96a964a183 added .disable_inheritance method for the simple fetch exclusives classes 2013-05-09 13:18:58 -03:00
Ross Lawley
9dfee83e68 Fixed querying string versions of ObjectIds issue with ReferenceField (#307) 2013-05-07 11:54:47 +00:00
Ross Lawley
870ff1d4d9 Added $setOnInsert support for upserts (#308)
Upserts now possible with just query parameters (#309)
2013-05-07 11:11:55 +00:00
Ross Lawley
2c119dea47 Upserting is the only way to ensure docs are saved correctly (#306) 2013-05-07 10:34:13 +00:00
Ross Lawley
3ccc495c75 Fixed register_delete_rule inheritance issue 2013-05-03 12:56:53 +00:00
Ross Lawley
a2c429a4a5 Queryset cursor regeneration testcase 2013-05-02 10:48:09 +00:00
Ross Lawley
8c9afbd278 Fix cloning of sliced querysets (#303) 2013-05-01 19:40:49 +00:00
Ross Lawley
3d49c33c6a Merge branch 'master' of github.com:MongoEngine/mongoengine 2013-05-01 08:48:42 +00:00
Ross Lawley
e58b3390aa Removed import with from future 2013-05-01 08:48:14 +00:00
Alex Kelly
1c345edc49 Updated tests for passing write_concern to update and update_one to check return. 2013-04-30 21:43:44 +01: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
5d7444c115 Ensure as_pymongo() and to_json honour only() and exclude() (#293) 2013-04-29 09:38:21 +00:00
Ross Lawley
b0c1ec04b5 Improvements to indexing documentation (#130) 2013-04-29 07:38:31 +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
5e94637adc DecimalField now stores as float not string (#289) 2013-04-25 15:39:57 +00:00
Ross Lawley
ac6e793bbe UUIDField now stores as a binary by default (#292) 2013-04-25 13:43:56 +00:00
Ross Lawley
d0d9c3ea26 Test to ensure that pickled complex fields work with save() (#228) 2013-04-25 12:21:25 +00:00
Ross Lawley
f7bc58a767 Added assertIn / assertNotIn for python 2.6 2013-04-25 12:03:44 +00:00
Ross Lawley
10731b0fd8 Merge remote-tracking branch 'origin/pr/285' into p285 2013-04-25 11:18:21 +00:00