Commit Graph
77 Commits
Author SHA1 Message Date
Ross Lawley fd7f882011 Save no longer tramples over documents now sets or unsets explicit fields.
Fixes #146, refs #18
Thanks @zhangcheng for the initial code
2011-06-09 16:09:06 +01:00
Ross Lawley fb09fde209 Updated changelog 2011-06-09 14:26:52 +01:00
Ross Lawley b2848b8519 Added ComplexDateTimeField
Thanks to @pelletier for the code.
Refs #187
2011-06-09 14:20:21 +01:00
Ross Lawley 417bb1b35d Added regression test for #185 2011-06-09 12:15:36 +01:00
Ross Lawley 199b4eb860 Added django_tests and regression test for order_by
Refs #190
2011-06-09 12:08:37 +01:00
Ross Lawley a66417e9d0 pep8 update 2011-06-09 11:31:47 +01:00
Ross Lawley b9255f73c3 Updated docs 2011-06-09 11:28:57 +01:00
Ross Lawley 4b9bacf731 Added ComplexBaseField
* Handles the efficient lazy dereferencing of DBrefs.
* Handles complex nested values in ListFields and DictFields
* Allows for both strictly declared ListFields and DictFields where the embedded
value must be of a field type or no restrictions where the values can be a mix
of field types / values.
* Handles DBrefences of documents where allow_inheritance = False.
2011-06-09 11:25:24 +01:00
Ross Lawley 602d7dad00 Improvements to Abstract Base Classes
Added test example highlighting what to do to migrate a class from
complex (allows inheritance) to simple.
2011-06-08 17:10:26 +01:00
Ross Lawley d32dd9ff62 Added _get_FIELD_display() for handy choice field display lookups
closes #188
2011-06-08 13:07:08 +01:00
Ross Lawley 28b7ef2304 Merge remote branch 'origin/dev' into dev 2011-06-08 13:06:47 +01:00
Ross Lawley 6dc2672dba Updated changelog 2011-06-08 13:03:42 +01:00
Ross Lawley 9a949984ee Merge pull request #189 from colinhowe/dev-notypesindex
Thanks @colinhowe!
2011-06-08 04:40:54 -07:00
Ross Lawley 3c88faa889 Updated slave_okay syntax
Now inline with .timeout() and .snapshot().
Made them chainable - so its easier to use and added tests for cursor_args
2011-06-08 12:06:26 +01:00
Ross Lawley d15f5ccbf4 Added _slave_okay to clone 2011-06-08 10:41:08 +01:00
Ross Lawley cfcd77b193 Added tests displaying datetime behaviour.
Updated datetimefield documentation
2011-06-08 10:33:56 +01:00
Ross Lawley 525c25b9f6 Merge branch 'master' into dev 2011-06-07 15:15:06 +01:00
Ross Lawley c059ad47f2 Updated django docs refs #186 2011-06-07 15:14:41 +01:00
Ross Lawley 48fd6c1344 Merge remote branch 'origin/master' into dev 2011-06-07 14:38:04 +01:00
Ross Lawley 1ee50922d9 Merge pull request #186 from kuno/master
fixed import path typo in django document
2011-06-07 06:37:34 -07:00
Ross Lawley 711db45c02 Changelist updated 2011-06-06 14:36:44 +01:00
Ross Lawley 55e20bda12 Added slave_okay syntax to querysets.
* slave_okay (optional): if True, allows this query to be run against a replica secondary.
2011-06-06 14:35:46 +01:00
Ross Lawley 56f00a64d7 Added bulk insert method.
Updated changelog and added tests / query_counter tests
2011-06-06 12:37:06 +01:00
Ross Lawley 8553022b0e Merge branch 'dev' into feature/dev-indexes 2011-06-06 11:40:21 +01:00
Ross Lawley 74b5043ef9 Added signals documentation 2011-06-06 11:39:58 +01:00
Ross Lawley 0e45078116 Added Blinker signal support 2011-06-06 11:34:43 +01:00
Ross Lawley 7e87ed79ab Merge branch 'feature/blinker_signals' into dev 2011-06-06 11:10:12 +01:00
Ross Lawley 7312db5c25 Updated docs / authors.
Thanks @jorgebastida for the awesome query_counter test context manager.
2011-06-06 11:07:27 +01:00
Ross Lawley ec7effa0ef Added DereferenceBaseField class
Handles the lazy dereferencing of all items in a list / dict.
Improves query efficiency by an order of magnitude.
2011-06-06 11:04:06 +01:00
Ross Lawley 5d778648e6 Inital tests for dereferencing improvements 2011-05-27 11:33:40 +01:00
Ross Lawley c903af032f Added inline_map_reduce functionality
Also added map_reduce method for calculating item_frequencies
Closes #183
2011-05-26 15:44:43 +01:00
Ross Lawley 9dd3504765 Updated changelog 2011-05-26 11:56:56 +01:00
Ross Lawley 97a1310344 Tweakin test 2011-05-26 11:11:00 +01:00
Ross Lawley 5ab13518db Added test confirming order_by reference field doesnt work 2011-05-25 13:50:52 +01:00
Ross Lawley eb892241ee Added regression test for editting embedded documents
Closes #35
2011-05-25 13:31:01 +01:00
Ross Lawley fac3f038a8 Added regression test for issue with unset and pop
Closes #118
2011-05-25 12:20:56 +01:00
Ross Lawley b1cdd1eb26 Updated docs regarding ReferenceFields
Closes #149
2011-05-25 12:01:41 +01:00
Ross Lawley 60c8254f58 Tweaks to item_frequencies
Updated to use a ternary statement and added tests
Refs #124 #122

Thanks to @nickvlku for the code.
2011-05-25 11:10:42 +01:00
Ross Lawley 2ce70448b0 Merge branch 'dev' into pull_124 2011-05-25 09:54:56 +01:00
Ross Lawley 3861103585 Updated connection exception to provide more info on the cause.
Fixes #178
2011-05-25 09:36:25 +01:00
Ross Lawley 0708d1bedc Run all tests... 2011-05-25 09:34:50 +01:00
Ross Lawley c3a8840435 Blinker signals added 2011-05-24 20:27:19 +01:00
Ross Lawley 3246cf8bdd Merge pull request #177 from sbook/feature/update_lists
Added the ability to update individual items in ListFields.

Example: 
  
   Message.objects(pk=12).update(set__comments__5__body="Testing 123")
2011-05-24 06:13:10 -07:00
Ross Lawley 7ecf84395a Improved DictFields
Allow searching multiple levels deep in DictFields
Allow DictField entries containing strings to use matching operators

Thanks again to @theojulien for the initial code #108
2011-05-24 14:07:58 +01:00
Ross Lawley 32bab13a8a Added MapField, similar to DictField
Similar to DictField except the value of each entry is always of a certain
(declared) field type.

Thanks again to @theojulienne for the code #108
2011-05-24 12:50:48 +01:00
Ross Lawley 088c40f9f2 Added Abstract Base Classes
Thanks to @theojulienne for the code :) #108
2011-05-24 12:30:12 +01:00
Ross Lawley 1126c85903 Added Custom Objects Managers
Managers can now be directly declared in a Document eg::

```python
    class CustomQuerySetManager(QuerySetManager):

        @staticmethod
        def get_queryset(doc_cls, queryset):
            return queryset(is_published=True)

    class Post(Document):
        is_published = BooleanField(default=False)
        published = CustomQuerySetManager()
```

Refactored the name of the `_manager_func` to `get_queryset` to mark it as
part the public API.  If declaring a Manager with a get_queryset method, it
should be a staticmethod, that accepts the document_class and the queryset.

Note - you can still use decorators in fact in the example below,
we effectively do the same thing as the first example and is much less verbose.

```python

    class Post(Document):
        is_published = BooleanField(default=False)

        @queryset_manager
        def published(doc_cls, queryset):
            return queryset(is_published=True)
```

Thanks to @theojulienne for the initial impetus and code sample #108
2011-05-24 11:26:46 +01:00
Ross Lawley 1b72ea9cc1 Fixed detection of unique=True in embedded documents.
Added some more test cases - thanks to @heyman for the initial
test case.

Closes #172
Refs #171
2011-05-20 16:09:03 +01:00
Ross Lawley 04953351f1 Merge branch 'feature/slicing_fields' into dev 2011-05-20 14:18:48 +01:00
Ross Lawley 07e71d9ce9 Regression test for collection names an primary ordering
Closes #91
2011-05-20 14:18:16 +01:00
Ross Lawley 5f53cda3ab Added regression test for #94 2011-05-20 10:55:01 +01:00
Ross Lawley 9260ff9e83 Updated docs and added a NotRegistered exception
For handling GenericReferences that reference documents that haven't
been imported.

Closes #170
2011-05-20 10:22:22 +01:00
Ross Lawley 08d1689268 Updated to handle the converntional api style for slicing a field
Added testcase to demonstrate embedded slicing as well.

Refs #167
2011-05-20 09:47:41 +01:00
Ross Lawley 40b69baa29 Implementing Write Concern
Added write_options dict to save, update, update_one and get_or_create.
Thanks to justquick for the initial ticket and code.

Refs #132
2011-05-19 16:49:00 +01:00
Ross Lawley b3251818cc Added regression test for custom queryset ordering
Closes #126
2011-05-19 13:04:14 +01:00
Ross Lawley da8a057ede Added test showing documents can be pickled
Refs #135
2011-05-19 12:41:38 +01:00
Ross Lawley efba9ef52a Merge remote branch 'srackham/gridfs-read-seek' into gridfs-read-seek 2011-05-19 10:14:51 +01:00
Ross Lawley fb61c9a765 Regression test for mysterious uniqueness constraint when inserting into mongoengine
Closes #143  Thanks to tfausak for the test case.
2011-05-19 09:55:34 +01:00
Ross Lawley 95c2643f63 Added test showing primary=True behaviour.
If you set a field as primary, then unexpected behaviour can occur.
You won't create a duplicate but you will update an existing document.

Closes #138
2011-05-18 20:31:28 +01:00
Ross Lawley fc2aff342b Unique indexes are created before user declared indexes
This ensures that indexes are created with the unique flag, if a user
declares the index, that would automatically be declared by the `unique_indexes`
logic.

Thanks to btubbs for the test case.
Fixes #129
2011-05-18 17:37:41 +01:00
Ross Lawley 371dbf009f Updated QuerySet to allow more granular fields control.
Added a fields method and tests showing the retrival of subranges of
List Fields.

Refs #167
2011-05-18 16:39:19 +01:00
Ross Lawley 5d5a84dbcf Spacing issue cleaned up 2011-05-18 16:24:35 +01:00
Ross Lawley 7526272f84 Added test example of updating an embedded field
Closes #139
2011-05-18 12:27:33 +01:00
Ross Lawley 5cbc76ea81 Pep8 2011-05-18 12:26:51 +01:00
Ross Lawley 7ba40062d3 Fixes ordering with custom db field names
Closes #125
2011-05-18 12:18:33 +01:00
Ross Lawley 1781c4638b Changed how the connection identity key is made
Uses the current thread identity as well as the process idenity to form
the key.

Fixes #151
2011-05-18 11:41:23 +01:00
Ross Lawley 1a049ee49d Added regression test case for mongoengine/issues/155 2011-05-18 11:06:14 +01:00
Ross Lawley 31521ccff5 Added queryset clone support and tests, thanks to hensom
Fixes #130
2011-05-18 10:30:07 +01:00
Ross Lawley e3b4563c2b Merge remote branch 'hensom/master' into dev 2011-05-18 10:06:16 +01:00
Ross Lawley c3f5ed0e0e Merge branch 'master' into dev 2011-05-18 10:06:02 +01:00
Ross Lawley 378b52321b Merge commit '18baa2dd7a4e909169b694cb6ec36214c5a51506' 2011-05-18 09:17:05 +01:00
Ross Lawley 98436f271e Merge branch 'master' into dev 2011-05-18 08:13:58 +01:00
Ross Lawley a76008e440 Merge pull request #164 from glyphobet/master
spherical geospatial operators.
Thanks again to glyphobet
2011-05-16 08:18:22 -07:00
Ross Lawley bd3340c73f Merge pull request #162 from glyphobet/master
Comments in unit tests should say "degrees," not "miles":

MongoDB docs are confusing, only the spherical queries $nearSphere and $centerSphere use radians. The $near and $center queries, which are the ones that are used in these mongoengine tests, use the same units as the coordinates. For distances on the earth, this means they use degrees. (This is also why the 2d indexes can be used for other 2d data, not just points on the earth.)

Here's a mongo shell session demonstrating that $near and $center use degrees, and that $nearSphere and $centerSphere are the ones that use radians:  https://gist.github.com/964126

So, these mongoengine tests are using $near and $center, which use degrees, not miles, kilometers, or radians.

Thanks glyphobet for the clarification and taking time to explain it!
2011-05-10 02:15:17 -07:00
Ross Lawley e9ad04f763 Merge pull request #160 from Ankhbayar/master
Added __hash__, __ne__ with test. 
Thanks Ankhbayar
2011-05-09 02:28:41 -07:00
Ross Lawley f0277736e2 Updated queryset to handle latest version of pymongo
map_reduce now requires an output.
Reverted previous _lookup_field change, until a test case
is produced for the incorrect behaviour.
2011-05-09 10:22:37 +01:00
Ross Lawley 49c978ad9e Merge remote branch 'upstream/master' 2011-05-09 09:01:19 +01:00