Issue 24. Corrected errors due to multiple identical adjustments.
These could occur due do race conditions in adjustment creation.
Cleaned up tests.
Reinstated direct template tag support for ImageFiles.
AdjustmentNode should always return an AdjustmentInfoDict instance.
Corrected make_security_hash choking if any args contain unicode characters.
Corrected further sha1 choking on unicode.
Made adjustments fail nicely if original image file can't be opened.
AdjustedImage.objects.adjust() raises DoesNotExist, and the views turn that into a 404.
Added storage path field separate from image storage.
Fixed #26. Resave strange image formats as .png during for_storage_path.
Added basic bulk adjustment template tag. #22
Made base class for adjustment nodes and set adjustment node to check for previously-adjusted versions.
Fixes #28, works on #22.
Moved adjustment functionality from a variety of locations (views, templatetags, AdjustmentManager) into an AdjustmentHelper class.
Moved AdjustmentHelper into utils.adjustments.
Also further centralized adjustment code onto the AdjustmentHelper.
Moved actual info_dict generation into private AdjustmentHelper methods.
Preserved iterable order in adjust_bulk template tag.
Added docs for adjust_bulk template tag.
Added BulkAdjustmentHelper and added tests. #22.
BulkAdjustmentHelper takes over the functionality of much of the BulkAdjustmentTemplateTag, which makes it easier to test. It also allows more efficient code sharing.
Implemented bulk_create usage for creating Image instances during bulk adjustment.
Added BulkAdjustmentHelper support for template-style lookups.
(Rather than just attributes.)
Updates to the admin to reflect the new AdjustedImage model.