Commit graph

471 commits

Author SHA1 Message Date
Travis Swicegood
03c8a1929b Add test to verify get_subclass() on QuerySet 2013-10-08 10:38:52 -05:00
Travis Swicegood
9111843752 Refactor to make sure get_subclass() is on QuerySet
There's an edge case where you might want to call get_subclass() on a
QuerySet the same way you can call get() after you have already called
various filter/exclude methods.
2013-10-07 18:15:41 -05:00
Carl Meyer
5a33ff760a Fixed indexing into Choices so its useful. 2013-09-24 15:13:27 -06:00
Carl Meyer
4b6a800050 Fix bug with child/grandchild select_subclasses in Django 1.6+; thanks Keryn Knight. 2013-09-20 10:04:10 -06:00
Carl Meyer
4e7ddfc221 Bump version for dev. 2013-08-29 22:35:32 -06:00
Carl Meyer
edbef99ce2 Bump version for 1.5.0 release. 2013-08-29 22:06:44 -06:00
Carl Meyer
2e44f1c2c0 Add option-groups capability to Choices. 2013-08-29 22:00:53 -06:00
Tony Aldridge
b706aee4a9 Added tests to improve coverage 2013-08-25 08:29:10 +01:00
Tony Aldridge
1a6d9a193e Removed redundant inequality method on Choices 2013-08-24 10:51:25 +01:00
Tony Aldridge
3485df15f2 Merge remote-tracking branch 'upstream/master'
Conflicts:
	README.rst
2013-08-24 10:36:21 +01:00
Tony Aldridge
003ad70805 Added equality methods to Choices objects, and overrode + for Choices
for easy concatenation with other Choices and choice-like iterables.
Also wrote tests for them, and extended the readme to reflect this
2013-08-23 16:58:10 +01:00
Den Lesnov
18999c43dd Added deepcopy test 2013-08-21 17:15:19 +04:00
Trey Hunner
e1faec7577 Merge pull request #73 from silonov/json_fields_support
Json fields support
2013-08-17 01:46:31 -07:00
Trey Hunner
2679f6114b Merge branch 'silonov-json_fields_support'
Conflicts:
	CHANGES.rst
	model_utils/tests/tests.py
2013-08-17 01:40:09 -07:00
Den Lesnov
5f291a6a4a Implemented __deepcopy__ to avoid infinite recursion in __getattr__ while deepcopying a Choices instance 2013-08-15 15:01:09 +04:00
Mikhail Silonov
ef510d53dd Removed reinvented wheel 2013-08-12 13:22:34 +04:00
Trey Hunner
15910e04e7 Merge branch 'field-tracker-inheritance'
Conflicts:
	CHANGES.rst
2013-08-11 18:49:20 -07:00
silonov
f20e723952 Added more general mutable fields support instead of json-specific 2013-08-11 19:32:45 +04:00
silonov
630741b423 Added JSONEncoder().encode(...) check for json-like fields 2013-08-10 01:59:06 +04:00
Carl Meyer
9a3abce7f5 Update testing idioms. 2013-08-08 09:43:46 -06:00
Carl Meyer
a66f2769cb Merge remote-tracking branch 'silonov/save_with_untracked_updated_fields'
* silonov/save_with_untracked_updated_fields:
  Fixed a bug causing `KeyError` when saving with the parameter `update_fields` in which there are untracked fields.
2013-08-08 09:29:04 -06:00
Mikhail Silonov
8c6f343111 Added JSON Fields support 2013-08-08 18:02:12 +04:00
Mikhail Silonov
b9f954074c Fixed a bug causing KeyError when saving with the parameter update_fields in which there are untracked fields. 2013-08-08 13:22:25 +04:00
Trey Hunner
9050d60295 Merge pull request #68 from carljm/docs
Documentation
2013-08-08 01:00:51 -07:00
Trey Hunner
a7c6ff9392 Set version in setup.py docs automatically 2013-08-07 22:52:39 -07:00
Keryn Knight
6f0cf2a96c first pass at tests for the __contains__ functionality
just implemented.
2013-08-02 12:24:44 +01:00
Keryn Knight
f89369f9ac Implement __contains__ ('x' in Choices('x')) for Choices objects.
In Choices, `_choice_dict` appears to be a definitive location of all
internal/DB representations, so it seems the best target for finding
out if the given item is part of the sequences.
2013-08-02 12:23:48 +01:00
Trey Hunner
75646a1874 Improve FieldTracker tests for inherited models 2013-07-30 10:16:43 -07:00
Trey Hunner
98f078d718 Allow FieldTracker to work in child models
Fixes #57.
2013-07-29 12:54:49 -07:00
Carl Meyer
9a5a2bcf88 Use proper unittest test-skipping. 2013-07-25 12:16:11 -05:00
Carl Meyer
bcc8ad3a64 Update tox.ini for Django 1.6 stable branch, South supporting Py3. 2013-07-25 11:58:46 -05:00
Eran Rundstein
5687d9836d create basic failing test case for inherited models and tracker 2013-06-06 13:24:43 +00:00
Trey Hunner
b4efe66059 Round numbers that Python 2 and 3 agree on 2013-06-03 12:45:32 -07:00
Trey Hunner
aaf2219013 Add tests for tracking non-field attributes 2013-06-03 12:08:01 -07:00
Carl Meyer
44b0e42dd1 Merge branch 'master' into fk-fix
* master:
  Remove misinformation from changelog; oops.
  Tweak AUTHORS and changelog.
  PassThroughManager calls superclass `get_query_set`.
  Update AUTHORS and changelog.
  Fix tox.ini so runtests.sh works.
  Test and fix for second grandchild bug.
2013-06-03 11:54:46 -06:00
Trey Hunner
1474a48084 Improve FieldTracker docstrings 2013-05-28 10:14:49 -07:00
Andy Freeland
7e381179e4 PassThroughManager calls superclass get_query_set.
As discussed in #31, PassThroughManager and
PassThroughManager.for_queryset_class() would ignore the superclass
version of `get_query_set`.
2013-05-26 16:04:47 -04:00
Trey Hunner
9dc3dacabf Fix FieldTracker's has_changed (fixes gh-51)
The FieldTracker has_changed method no longer returns True for any input
when the instance is unsaved and no longer raises a FieldError for
fields after the first save.  The original ModelTracker behavior is
maintained.
2013-05-24 22:22:20 -07:00
Trey Hunner
d28f3860cf Change FieldTracker `current` for unsaved model
Return None values instead of an empty dict
2013-05-23 16:38:12 -07:00
Trey Hunner
d190239c1f Improve docstrings and variables for FieldTracker 2013-05-23 16:25:10 -07:00
Trey Hunner
54c996f17f Don't compare FK instances in FieldTracker 2013-05-23 13:18:21 -07:00
Trey Hunner
4bae3e999b Fix foreign key tests for FieldTracker 2013-05-23 13:16:49 -07:00
Trey Hunner
6532784acd Create FieldTracker that mirrors ModelTracker 2013-05-23 12:50:34 -07:00
Trey Hunner
97e0f5edbf Change failing test to pass for ModelTracker 2013-05-23 12:34:15 -07:00
Bojan Mihelac
ea899d17a0 Added test_number_of_queries in ModelTrackerTestCase 2013-05-23 12:31:21 -07:00
Trey Hunner
a141063f34 Add tests for ForeignKey fields with ModelTracker 2013-05-23 12:31:20 -07:00
Alex Orange
1e84465276 Test and fix for second grandchild bug.
Bug is, second grandchild of a given child will get cast to the child
rather then the grandchild.
2013-05-21 14:23:23 -06:00
Carl Meyer
216d0b7095 Fix GH-41: re-add get_FOO_display method to models with StatusField. 2013-05-02 11:33:48 -06:00
Trey Hunner
c2f3bd8a77 Fix deprecated assertion methods in tests 2013-04-12 17:13:36 -07:00
Trey Hunner
396bb7ac3f Remove with_statement import (was needed for 2.5) 2013-04-12 17:13:36 -07:00
Trey Hunner
32bb718107 Remove reduntant "as" in import 2013-04-12 17:13:35 -07:00
Trey Hunner
e6293d9b0c Remove datetime imports unused by Django 1.4+ 2013-04-12 17:13:31 -07:00
Trey Hunner
f7f7cc0953 Fix repr tests for Python 2 (no string comparison) 2013-04-12 17:13:31 -07:00
Trey Hunner
4f2673e6a4 Fix str/unicode problems in Python 3
Changes:
- Use unicode_literals from the future for Python 2.6.5+
- Use six's text_type for proper unicode use in Python 2/3
2013-04-12 14:16:42 -07:00
Trey Hunner
81c7e40e60 Fix iterator/list problems for Python 3 support 2013-04-12 14:16:42 -07:00
Carl Meyer
4ee0c39db3 Add tests for StatusField no_check_for_status. 2013-04-10 12:52:53 -06:00
Trey Hunner
59e484e17f Fix StatusField bug
Fixes #29
2013-04-09 14:28:53 -07:00
Trey Hunner
2769e79796 Fix BooleanField default (for Django trunk) 2013-03-27 22:43:21 -07:00
Trey Hunner
4156fa40e9 Add test for ModelTracker before first model save 2013-03-27 16:59:42 -07:00
Trey Hunner
cddcbd4e42 ModelTracker: pass kwargs to parent save correctly
Fixes usage of update_fields in save()
2013-03-27 16:59:42 -07:00
Trey Hunner
98016dbd50 ModelTracker: check DB after using update_fields 2013-03-27 16:59:42 -07:00
Trey Hunner
d24dbc6c38 Fix ModelTracker for obj.save(update_fields=[...]) 2013-03-27 16:59:42 -07:00
Trey Hunner
d9c415c5cd Add ModelTracker test for save(update_fields=[...]) 2013-03-27 16:59:42 -07:00
Carl Meyer
147fdf5d89 Remove silly uses of setattr. 2013-02-21 16:31:29 -07:00
Felipe Prenholato
cce804da4e Assert that StatusField respects default arguments. 2013-02-21 17:08:15 -03:00
Trey Hunner
cf153f3c06 Add test for ModelTracker descriptor on class 2013-02-18 20:13:39 -08:00
Trey Hunner
335500018a Make `from model_utils import ModelTracker` work 2013-02-18 20:09:08 -08:00
Trey Hunner
b1979a52b3 Add tests for multiple model trackers 2013-02-18 20:06:52 -08:00
Trey Hunner
7ac6e8a81c Add tests for ModelTracker.current method 2013-02-18 17:33:26 -08:00
Trey Hunner
45ac3bd03f Fix return value of ModelTracker.current pre-save 2013-02-18 17:32:30 -08:00
Trey Hunner
1ae2effc22 Merge ModelTracker and descriptor classes 2013-02-18 16:36:05 -08:00
Trey Hunner
a68649c9e7 Rename current_fields to current 2013-02-18 16:26:54 -08:00
Trey Hunner
f4512642cb Remove unnecessary use of setattr 2013-02-18 16:22:11 -08:00
Trey Hunner
676424e388 Move ModelTracker to tracker module 2013-02-18 16:21:14 -08:00
Trey Hunner
c528a347e0 Add ModelTracker with tests 2013-02-16 14:52:31 -08:00
Carl Meyer
579abf8e66 Fix calling create() on a related manager based on PassThroughManager. 2013-02-12 14:05:31 -07:00
Carl Meyer
cf2c97b620 Avoid overriding prior calls to select_related in select_subclasses. 2013-02-01 22:53:11 -07:00
Carl Meyer
93a1a44ee7 Updates to multi-level support for InheritanceManager. 2013-02-01 22:38:14 -07:00
Ivan Virabyan
937b3e018f Support for multi-level inheritance in InheritanceManager 2013-01-31 18:27:16 +04:00
Carl Meyer
246fb81813 Revert addition of UpdateOrCreateMixin; reaches 100% test coverage. 2013-01-27 14:16:58 -08:00
Carl Meyer
983fab0341 Clean up some uses of hasattr; no need to support 1.1 any longer. 2013-01-27 13:41:03 -08:00
Carl Meyer
6ae66e0153 Removed a bunch of deprecated code. 2013-01-27 13:30:31 -08:00
Carl Meyer
a9ac3685fb Removed deprecated ChoiceEnum; moved Choices out of __init__.py. 2013-01-27 13:19:45 -08:00
Carl Meyer
f7f54a03b0 Enable pickling PassThroughManager in Django 1.5. 2013-01-26 22:10:14 -08:00
Carl Meyer
a76006a3b2 Merge UpdateOrCreateMixin. 2013-01-26 17:20:52 -08:00
Carl Meyer
05f1dc97b3 Set use_for_related_fields=True on QueryManager. 2013-01-26 17:09:16 -08:00
Carl Meyer
ec1870c98a Merge pull request #19 from DXist/master
Extra deny methods for PassThroughManager
2013-01-26 17:05:15 -08:00
Carl Meyer
41607c0b56 Resolve duplication between two pull requests for Choices.__len__. 2013-01-26 17:04:15 -08:00
Carl Meyer
4217dbd7fe Merge pull request #16 from ryankask/choices-len
__len__ method for Choices
2013-01-26 17:01:06 -08:00
Carl Meyer
aa8c79eeb4 More straightforward, efficient implementation for InheritanceQuerySet. 2013-01-26 16:46:51 -08:00
Carl Meyer
8808aa05b8 Merged in jgsogo/django-model-utils (pull request #5)
patch to issue #16
2013-01-26 16:40:26 -08:00
Rinat Shigapov
e9e57e096f deny methods for queryset copy 2012-11-08 12:24:17 +04:00
Javier García Sogo
575a5e1340 avoid plain except 2012-11-05 13:43:42 +01:00
James Oakley
9ea6605226 Add __len__() method to Choices 2012-10-30 11:01:57 -07:00
Carl Meyer
2376c931ab Update PassThroughManager docstring to match README docs; thanks atreanor. 2012-09-27 09:48:04 -06:00
Antti Kaihola
21371e3ea4 Added missing imports for UpdateOrCreateMixin 2012-08-27 15:21:52 +03:00
Javier Garcia Sogo
6ab6da083c patch to issue#16 2012-07-06 22:12:58 +02:00
Antti Kaihola
c83c14c46f Added an UpdateOrCreateMixin for creating custom managers and querysets which have an .update_or_create() method (see Django ticket #3182). 2012-06-08 16:47:28 +03:00
Ryan Kaskel
7cbfbdb453 len support for Choices. 2012-05-10 12:07:42 +01:00
Donald Stufft
31e5fb3c4a updated to use the new 1.4 timezones 2012-01-07 17:43:39 -05:00
Carl Meyer
4746180c4d Improved fix for annotations and InheritanceQuerySet. Thanks Facundo Gaich. 2012-01-03 16:47:33 -07:00
Carl Meyer
c35746a445 Fixed annotation of InheritanceQuerySets. Thanks Jeff Elmore. 2012-01-03 15:47:41 -07:00
Carl Meyer
5710c8b504 Dropped support for obsolete Python 2.5 and Django 1.1. 2012-01-03 15:40:17 -07:00
Carl Meyer
8c6af71713 Updated PassThroughManager.for_queryset_class for less ambiguous behavior in case of incorrect usage. 2011-12-05 17:08:51 -07:00
Ryan Kaskel
6afa9d566d Add convenience method to PassThroughManager. 2011-12-04 13:57:16 +00:00
Carl Meyer
b2aa8c2692 Merged. 2011-10-26 11:12:42 -06:00
smacker
b06ba20fe9 test and docs for get_subclass 2011-10-26 23:06:55 +06:00
smacker
9ac5877d29 add get_subclass method 2011-10-26 12:01:37 +06:00
Jeff Elmore
37e4eecace Added explicit test of using 'get' method with select_subclasses
--HG--
extra : transplant_source : %9F%EA%C6%81%1D%BE%AA%0BQ5%A7%ECs%0Dwb%B8%B15%60
2011-07-02 11:58:14 -04:00
Carl Meyer
b7c5a59390 Fixed using SplitField on an abstract base model class. 2011-04-28 20:59:52 -05:00
Carl Meyer
ab70211d29 Removed unneeded creation_counter increment. 2011-04-28 19:59:46 -05:00
Carl Meyer
5c5abdce23 Added use_for_related_fields=True to InheritanceManager. Fixes #8. Thanks munhitsu for the report.
Note that the tests added for this feature pass even without the change to
InheritanceManager, because use_for_related_fields is broken in Django and
always acts as if True for reverse FKs and M2Ms.
(http://code.djangoproject.com/ticket/14891)
2011-04-16 16:19:55 -05:00
Carl Meyer
69d0985db1 Started deprecation for manager_from, InheritanceCastModel, and Django 1.1 support. 2011-04-16 14:51:14 -05:00
Carl Meyer
c514c68676 Updated test-runner. 2011-04-16 14:49:33 -05:00
Carl Meyer
7c19b761e2 Merged in fix for Django 1.1 recursion error from Paul McLanahan. 2011-03-30 10:20:37 -04:00
Paul McLanahan
d8798fb784 Fixed a recursion error in Django 1.1 2011-03-29 21:57:49 -04:00
Carl Meyer
36b99304c2 Merged in PassThroughManager from Paul McLanahan. 2011-03-29 13:10:50 -04:00
Carl Meyer
e418cc909a Fixed issue #6, bug with InheritanceManager and descriptor fields (e.g. FileField).
Thanks zyegfryed for the fix and sayane for tests.
2011-03-29 12:47:25 -04:00
Carl Meyer
1a8f7c5087 Added tox config. 2011-03-29 12:41:22 -04:00
zyegfryed
ae64c23b39 Fixed related subclasses parsing. Was raising AttributeError on FileField. 2011-03-29 14:59:50 +02:00
Paul McLanahan
04c848e8c7 Added tests for PassThroughManager. 2011-03-09 14:44:10 -05:00
Paul McLanahan
c624d7a301 Added PassThroughManager to managers.
Added me to authors.
2011-03-08 13:52:32 -05:00
Carl Meyer
552f7c2009 Fixed #2 - Updated SplitField for 1.2-style prep_value method. 2011-02-18 16:45:39 -05:00
Carl Meyer
ac36cbf56c Added InheritanceManager, contributed by Jeff Elmore. 2010-11-23 12:48:23 -05:00
Carl Meyer
396dd9274f use manager_from for inheritance-casting 2010-10-05 09:01:26 -04:00
Carl Meyer
a2c67934ed additional test, docs cleanup 2010-10-05 08:59:25 -04:00
Gregor Müllegger
216db6c098 Creating a custom QuerySet subclass for InheritanceCastModel to provide a way to batch cast a queryset of parents into child types. It's (2 + m) queries instead of (1 + n * 2) now (n: number of returned objects, m: number of different types in the queryset). 2010-10-01 20:43:22 +02:00
Carl Meyer
1d4613e807 make tests compatible with pre-1.2 2010-09-24 10:30:58 -04:00
Carl Meyer
5da38ee0c6 manager_from bugfix from George Sakkis; fixes #1 2010-08-16 17:58:16 -04:00
Carl Meyer
afafdd2bf9 make manager_from Django 1.1 compatible 2010-07-30 22:45:45 -04:00
Carl Meyer
cfd6578fe5 improve test coverage 2010-07-30 22:36:24 -04:00
Carl Meyer
aed583f763 added manager_from (thanks George Sakkis) 2010-07-30 22:09:46 -04:00
Carl Meyer
726f0de1dd minor cleanup 2010-04-27 13:25:45 -04:00
Carl Meyer
be0f667204 fix typos in test names 2010-04-27 13:19:08 -04:00
Jannis Leidel
911b5223c8 Fixed bug which prevented the StatusModel and TimeframedModel to get the appropriate QueryManager instances added dynamically before instantiation. 2010-04-26 22:30:01 +02:00
Jannis Leidel
8e2893f1b7 Fixed typo. 2010-04-23 12:47:38 +02:00
Jannis Leidel
e4564f73db Automated merge with http://bitbucket.org/carljm/django-model-utils/ 2010-04-23 12:45:15 +02:00
Jannis Leidel
43138fbaaa Extended South introspection rules to handle StatusField and MonitorField. 2010-04-23 12:44:59 +02:00
Carl Meyer
d4951f6651 added triple option in Choices to split db representation from code constant 2010-04-22 13:02:25 -04:00
Carl Meyer
238571ed43 docs, AUTHORS, Changelog... 2010-04-16 00:37:12 -04:00
Carl Meyer
f64f16b053 Choices should be indexable as if it were a two-tuple 2010-04-16 00:11:31 -04:00
Carl Meyer
acbf46abb2 remove duplication between StatusModel tests 2010-04-15 23:59:05 -04:00
Carl Meyer
3e78add2d5 split out TimeFramedModel tests 2010-04-15 23:55:24 -04:00
Carl Meyer
d95f9efcf1 consistent PEP8 test method names 2010-04-15 23:52:31 -04:00
Carl Meyer
545bccf3ce convert StatusModifiedField to generic MonitorField, use post_init signal instead of extra DB query 2010-04-15 23:47:28 -04:00
Carl Meyer
c43b1ba99d remove previous_status from StatusField public API
I may be missing the use case, but this seems too ephemeral to be
useful (only exists on same instance after a save, can't rely on it
being there in general). If it's just an implementation detail for
StatusModifiedField, it doesn't need to be tested in public API for
StatusField.
2010-04-15 23:07:12 -04:00
Carl Meyer
fecda79f5c deprecate ChoiceEnum and document Choices 2010-04-15 22:54:37 -04:00
Carl Meyer
02b2082e90 Fix Choices docstring, minor code changes:
- remove __getitem__, no need for it anymore
- remove implicit lowercasing (principle of least surprise: strings are usually case sensitive)
2010-04-15 22:32:33 -04:00
Carl Meyer
cb46293b0a merge backout 2010-04-15 22:30:03 -04:00
Carl Meyer
8efaf852c8 Backed out changeset c05246980ddf 2010-04-15 22:16:10 -04:00
Carl Meyer
49760e3559 merge backout 2010-04-15 22:15:54 -04:00
Carl Meyer
c236944568 Backed out changeset 4e9eb14b9047 2010-04-15 22:15:39 -04:00
Jannis Leidel
2c8d042cf3 Removed the need for the status choices to be a subclass of model_utils.Choices. 2010-04-16 00:12:08 +02:00
Jannis Leidel
ff44c8de10 Moved the setting of the dynamic QueryManager to model classes. Removed metaclasses. 2010-04-16 00:01:38 +02:00
Jannis Leidel
cac35036d3 Fixed terrible typo. 2010-04-15 23:59:31 +02:00
Jannis Leidel
f04c200c09 Made the testrunner Django 1.2 compatible. 2010-04-15 23:56:56 +02:00
Jannis Leidel
ee4f42f851 Added new `Choices class as a replacement for ChoiceEnum`. Also renamed Condition* et al to Status*. 2010-04-15 20:00:44 +02:00
Jannis Leidel
35d25f0a0f Added TimeFramedModel and ConditionalModel. 2010-04-15 04:53:55 +02:00
Jannis Leidel
73b211309d Marked a few labels for translation. 2010-04-15 04:49:51 +02:00
Jannis Leidel
7716c6397e Minor cleanups. 2010-04-15 04:43:27 +02:00
Jannis Leidel
1fce7073e2 Added get_<choice>_display function to ChoiceNum to easily display human readable option label. 2010-04-15 04:36:21 +02:00
Jannis Leidel
50919b9ff4 Added ability to optionally use a label on ChoiceEnums choices. Useful for translation. 2010-04-10 00:50:35 +02:00
Carl Meyer
9147becfc9 made SplitField compatible with South FakeORM 2010-01-31 10:54:36 -05:00
Carl Meyer
dfd804bba2 added has_more property to SplitField 2010-01-27 23:37:31 -05:00
Carl Meyer
85157347f1 added SplitField 2010-01-15 17:26:59 -05:00
Carl Meyer
a2dcac06de added ChoiceEnum 2010-01-12 21:47:28 -05:00
Carl Meyer
0e6de5ae75 support South for custom fields 2010-01-06 23:20:31 -05:00
Carl Meyer
ee3881a1ff updated setup.py: removed include_package_data, added test_suite 2009-10-26 17:49:44 -04:00
Carl Meyer
7703512c7f 0.3.0
--HG--
extra : convert_revision : carl%40dirtcircle.com-20090730211136-ywu7dfqfmsodkc1x
2009-07-30 17:11:36 -04:00
Carl Meyer
2d018ca847 added TimeStampedModel
--HG--
extra : convert_revision : carl%40dirtcircle.com-20090702201429-hph32omqgfgrga52
2009-07-02 16:14:29 -04:00
Carl Meyer
3247ac5d4b initial import (with InheritanceCastModel)
--HG--
extra : convert_revision : carl%40dirtcircle.com-20090702180302-idhig8pzmbv8nv7l
2009-07-02 14:03:02 -04:00