Trivial fix for the serialization test for issue #12.
Fix QuerySet.update for lists with embedded models; see issues #13 and #14. Patch by gpitfield, thanks!
ignore .DS_Store
Corrections suggested by the pep8 verifier with (some) exceptions for blank lines, line length and whitespaces; some style normalization, reordering and renaming to improve readibility; comments for existing code. No significant changes.
More general data type names; abstract "key" type.
Added DatabaseCreation.db_type method to be able to base db_type on general field properties, have the last word with custom fields implementing the method themselves and being able to support storage options; all code should call this method instead of the Field.db_type.
Added overrides for value_to_db_decimal and convert_values; made fetched values pass through convert_values (we'll hopefully get rid of all these overrides with some maybe-to-be-proposed Django changes, but at the moment having both sides gives more \"symmetric\", more pleasant to look at, code)."
Dropped AutoField's value_to_db_auto conversion together with the string_based_auto_field feature -- back-ends may have more specific needs; also added a hint why and how to limit AutoField values type / range.
Also pass DecimalField lookup values through value_to_db_decimal for consistency and to avoid double processing code in the GAE back-end.
Let filtering know from what field a value for a filter argument comes from (needed for various reasons for preparing the value for database); work around the "_set" queries case for which sql.Constraint holds the parent's primary key field instead of the child's foreign key field which will be most likely used for filtering.
Pass fields rather than columns to the NonrelInsertCompiler.insert method.
Also use field => value mapping when storing embedded instance, so database conversions have a chance to properly process values of instance's fields.
Let fields subclassing nonrel fields use the base class internal type, like standard fields. Drop current db_types of nonrel fields -- now you may safely use "field kind" conditions instead and the subtype chaining is no longer needed because the field itself can be examined to determine a proper db_type for converting subfields' values.
Let embedded instance fields' to_python methods prepare their values when deconverting / deserializing an embedded model.
Move determination of model class from _module / _model info stored alongside values to a separate method, so database deconversion can learn the model earlier. Give precedence to the model class specified in a field's declaration (if one is specified) over the saved info to avoid hiding data integrity problems.
Removed two Django features having the same values on the parent (in 1.3 and 1.4); added a feature listing fields that can be used as primary_keys (back-ends have some limitations) -- to be used for model validation and to skip unsuitable tests.
Base implementation of database conversions (formerly convert_value_for/from_db), doing all that needs to be done for nonrel fields and database drivers that can only process values of standard Python types. Allows for a simplification of back-ends code, corrects a couple of problems with the current implementations partly fixing issue #10 and django-nonrel/mongodb-engine#47.
Change definitions of get_db_prep_value into get_db_prep_save -- the former one is only used in default implementations of _save/_lookup methods (in both 1.3 and 1.4), so its more straightforward to just override those. Simplify AbstractIterableField.pre_save by pulling some parts out of it (with a side effect of using a new fake model instance for each item). Import subclassing.Creator instead of copying the code. Drop an unnecessary type check (should remedy issue #4).
Move LegacyEmbeddedModelField from Mongo and let it be used to continue using RawField database conversions / deconversions for embedded instance fields' values for backwards compatibility.
Removed the supports_dict feature; if it can't store dicts nor nested lists nor strings nor bytes lets not call it a database ;-)