Matthew Tretter
906fbbd463
Reduce calls to backend
...
Reading from an `ImageCacheFile`, will result in accessing its `file`
attribute repeatedly which would result in the `before_access` signal
being dispatched, which in turn would result in many unnecessary calls
to the image cache backend. With this change, we don't send
`before_access` if the file has already been created.
Similarly, we don't need to try to generate the image if we know for
certain that it's already been generated (because we have a reference
to it).
2013-05-10 02:56:44 -04:00
Matthew Tretter
bc49f9cf8b
Store the file after we generate it
...
This means reading ImageCacheFiles won't result in an additional storage
operation.
2013-05-10 02:42:28 -04:00
Matthew Tretter
06dd238993
Store cachefile strategy on file; not generator
...
The file can appeal to the generator for the value, but it shouldn't
require it; it just does that as a convenience.
2013-05-10 00:51:47 -04:00
Matthew Tretter
d5d5fc0550
Add cachefile backend fallback
...
The generator shouldn't have to implement `cachefile_backend`
2013-05-10 00:26:46 -04:00
Matthew Tretter
4efa05099d
Use pilkit's process_image utility
2013-05-09 22:02:03 -04:00
Matthew Tretter
d94c4bb0a9
Merge branch 'canon-pickle' into develop
2013-04-30 20:50:29 -04:00
Matthew Tretter
f173861b53
Fix invalid char range
2013-04-30 09:32:47 -04:00
Matthew Tretter
c704db2da5
Sanitize cache keys for memcached
...
Closes #208
2013-04-30 09:32:47 -04:00
Matthew Tretter
f5b171979b
Canonicalize sets and dicts before hashing
2013-04-25 02:30:37 -04:00
Matthew Tretter
3e019f5dac
Merge pull request #204 from danxshap/close_file_fix
...
Re-open source file on ValueError in ImageSpec.generate()
2013-04-23 10:59:14 -07:00
Matthew Tretter
0a98eb0e79
Use DEFAULT_FILE_STORAGE by default
...
As raised in #203 , if `IMAGEKIT_DEFAULT_FILE_STORAGE` isn't set,
`DEFAULT_FILE_STORAGE` should be used.
2013-04-22 09:05:49 -04:00
danxshap
13c92db760
Re-open source file on ValueError in ImageSpec.generate()
2013-04-21 16:06:13 -04:00
Eric Brelsford
7946fe54b5
processors in PILKit: module
...
Help those looking in the code find processors.
2013-04-10 14:24:02 -04:00
Matthew Tretter
261f164127
Bump version to 3.0b1
2013-04-05 16:43:26 -04:00
Matthew Tretter
c4431fe296
Don't require generator to unregister
2013-04-05 16:41:53 -04:00
Matthew Tretter
6f9f99e86c
Fields shouldn't cause AlreadyRegistered exceptions
2013-04-05 15:28:36 -04:00
Matthew Tretter
091b2137d0
Always call set_spec_id
2013-04-05 14:57:41 -04:00
Matthew Tretter
41ab2c0fa3
Use different name for different signature
2013-04-05 14:57:11 -04:00
Matthew Tretter
dafebc9a4d
Don't call register without spec
2013-04-05 14:38:29 -04:00
Matthew Tretter
9891314b8e
Don't error if same generator is registered
2013-04-05 12:25:02 -04:00
Matthew Tretter
681527fa9d
Remove implicit source logic from descriptor
...
This needs to be known earlier, when registering the source group, so
we do it in `contribute_to_class` instead.
Closes #188 .
2013-04-03 00:21:04 -04:00
Matthew Tretter
2b10e85813
Clarify "force" kwarg
2013-04-02 22:55:44 -04:00
Matthew Tretter
3ca8c53698
Also defer existance check
2013-04-02 22:37:52 -04:00
Matthew Tretter
728368abf6
Add async cachefile backend
2013-04-02 22:29:53 -04:00
Matthew Tretter
86cd23e906
Remove actions module
2013-03-15 01:06:28 -04:00
Matthew Tretter
3d6a9de9aa
Add existence check timeout
2013-03-15 01:05:53 -04:00
Matthew Tretter
1e129c5b70
Convert to boolean
2013-03-15 00:49:24 -04:00
Matthew Tretter
70ff6dc788
Store state when force-generated
2013-03-15 00:30:58 -04:00
Matthew Tretter
c48c720f8a
Add __nonzero__ method that will work for async
2013-03-15 00:27:23 -04:00
Matthew Tretter
fc87c0497c
Add abstract cachefile backend for illustration
2013-03-15 00:20:15 -04:00
Matthew Tretter
54dda25adb
Generation goes through backend; use states
...
We might as well account for asynchronous generation in our
CachedFileBackend.
2013-03-15 00:19:19 -04:00
Matthew Tretter
ac92b77709
Fix loopy existence check
...
Sometimes two wrongs do make a right I guess. But better to have two
rights.
2013-03-14 23:04:30 -04:00
Matthew Tretter
f181d30008
Rename file_exists to exists
2013-03-14 22:58:28 -04:00
Matthew Tretter
044a3625f9
Correct error message
2013-03-14 22:55:40 -04:00
Matthew Tretter
c64eee40b3
Bump version to 3.0a5
2013-02-25 22:43:37 -05:00
Matthew Tretter
92a3c2688c
Error when attempting to generate image w/o source
2013-02-25 22:42:47 -05:00
Matthew Tretter
61aa1c32e7
Bump version to 3.0a4
2013-02-25 22:22:27 -05:00
Matthew Tretter
b33869a9f8
Sourceless specs are falsy
...
Passes test added in 190153d . Related to #187
2013-02-25 22:18:33 -05:00
Matthew Tretter
dff0182310
Remove another old util
2013-02-12 21:40:15 -05:00
Matthew Tretter
f5a078b68f
Remove old util
2013-02-12 21:40:15 -05:00
Matthew Tretter
5c944c5efb
Bump version to 3.0a3
2013-02-10 16:05:21 -05:00
Matthew Tretter
b53b7c3cae
Clarify ImageFieldSourceGroup docstrings
2013-02-10 16:01:50 -05:00
Matthew Tretter
90ae9e8339
Fix get_nonabstract_descendants
...
Previously, function was only returning the first non-abstract
descendant. (It should also return concrete descendants of concrete
descendants, which it now does.)
Also, converted to generator.
2013-02-10 15:58:22 -05:00
Matthew Tretter
df41459e65
Fix signals for abstract models
...
Includes a fix for undispatched signals, as well as signals being
handled twice.
A regression of #126
Related: #185
2013-02-10 15:42:10 -05:00
Sean Bell
af6ebcb469
Fixing iteration over objects for abstract models
2013-02-09 03:02:18 -05:00
Matthew Tretter
969275bbc9
Rename GeneratedImageFile to ImageCacheFile
2013-02-08 18:15:00 -05:00
Matthew Tretter
36313194ac
Remove PILKit functionality
...
This commit removes the functionality now in the PILKit project, and
adds PILKit as a dependency. Import hooks have been used to expose the
processors under "imagekit.processors".
2013-02-07 23:10:05 -05:00
Matthew Tretter
51dcf283fd
Fix default cache backend for Django < 1.3
2013-02-06 21:59:26 -05:00
Matthew Tretter
301adc2087
Let's call em cachefiles
...
Changed my mind about 04aa72c1f9 . It's
just a better description, even if different strategies can change the
behavior so it isn't really very cache-like.
2013-02-04 19:52:38 -05:00
Matthew Tretter
d22c49a465
Don't delete the file when source is deleted
...
We can't be sure another spec isn't using this file.
2013-02-04 19:48:42 -05:00
Matthew Tretter
218f569005
Don't assign processors, so properties will work
...
This way, a subclass can add a @property without a setter and not worry
about an error.
2013-02-02 19:21:32 -05:00
Matthew Tretter
58e1c7f7e0
Some docs
2013-02-01 01:37:49 -05:00
Matthew Tretter
f94b7276b3
Use "imagekit" instead of "ik" for built-in generator prefix
2013-02-01 01:31:51 -05:00
Matthew Tretter
50d83745bc
Remove unnecessary complexity of kwarg mapping
2013-02-01 01:02:20 -05:00
Matthew Tretter
08ebcbcbf3
Change html attrs delimiter to --
2013-02-01 00:56:29 -05:00
Matthew Tretter
92b11f8349
Use imagegenerators module, not imagespecs
2013-02-01 00:30:15 -05:00
Matthew Tretter
0947c1403f
Organize settings
2013-01-31 22:40:54 -05:00
Matthew Tretter
933ff79ac1
Make settings consistent
2013-01-31 22:38:48 -05:00
Matthew Tretter
e1c819e9b4
Allow default generatedfile name configuration w/namers
2013-01-31 22:37:09 -05:00
Matthew Tretter
bf1685dbfb
Generalize get_class util
2013-01-31 22:01:01 -05:00
Matthew Tretter
75962976d0
Add stringify methods to LazyGeneratedImageFile
2013-01-31 19:41:54 -05:00
Matthew Tretter
d6b73b8da7
Renaming/repackaging of generated file related classes
2013-01-31 19:24:08 -05:00
Matthew Tretter
8e6abc1e65
Remove ensure_exists
...
`generate()` now plays double duty
2013-01-31 10:07:27 -05:00
Matthew Tretter
01fad6e4c6
Fix registration bug
2013-01-31 10:07:27 -05:00
Matthew Tretter
04aa72c1f9
Rename cache things (it isn't cachine)
...
https://twitter.com/alex_gaynor/statuses/257558176965206016
2013-01-31 10:07:20 -05:00
Matthew Tretter
f0dbe32f7a
Fix pickling error
2013-01-29 02:27:03 -05:00
Matthew Tretter
54ca5da15d
Improve generator id pattern matching
...
This behavior allows users to easy generate images by app, model, or
field.
2013-01-29 02:22:00 -05:00
Matthew Tretter
e0ffb246ae
Always use colon as segment separator
2013-01-29 02:17:52 -05:00
Matthew Tretter
e48817a5ec
Update warmimagecache to use new cacheable registry
2013-01-29 01:53:23 -05:00
Matthew Tretter
ca4f090e63
Fix source callbacks on strategies
2013-01-29 01:48:06 -05:00
Matthew Tretter
3931b552a0
Separate source groups and cacheables.
...
This allows a sensible specialized interface for source groups, but also
for ImageKit to interact with specs using the generalized image
generator interface.
2013-01-29 01:40:00 -05:00
Matthew Tretter
5b44564318
Add LazyGeneratedImageCacheFile
2013-01-28 21:46:04 -05:00
Matthew Tretter
a3e9a080d4
Revert signal names
2013-01-28 21:45:58 -05:00
Matthew Tretter
cef3a41d86
Merge branch 'ik-next' into cacheables
...
Conflicts:
imagekit/management/commands/warmimagecache.py
imagekit/registry.py
2013-01-28 21:45:37 -05:00
Eric Eldredge
eb9089e0c8
Register cacheables as generators instead of items
2013-01-24 00:04:43 -05:00
Matthew Tretter
c202234e82
Fix imagekit.forms.fields.ProcessedImageField
2013-01-23 22:54:25 -05:00
Eric Eldredge
a8855d4c27
Change spec/source registry to generator/cacheable
2013-01-23 22:46:57 -05:00
Matthew Tretter
84b30e990f
Fix imagekit.models.fields.ProcessedImageField
2013-01-23 22:41:23 -05:00
Matthew Tretter
234082e63c
Extract generate() util, to make files Django likes
2013-01-23 22:34:29 -05:00
Matthew Tretter
d52b9c8100
Add utility for extracting field info
2013-01-23 21:47:54 -05:00
Matthew Tretter
4737ac64c4
Specs no longer accept arbitrary kwargs
...
Only the source.
2013-01-23 21:35:38 -05:00
Matthew Tretter
6ff1d35fbe
Remove unused import
2013-01-23 21:31:53 -05:00
Matthew Tretter
eef1e41448
Remove code that used old filename kwarg
2013-01-23 21:28:23 -05:00
Matthew Tretter
d632fc70fa
Copy contents to NamedTemporaryFile if generated file has no name
2013-01-23 21:27:21 -05:00
Matthew Tretter
4ecfa5d35e
Don't rely on source filename being relative path
...
Closes #180
2013-01-13 23:40:26 -05:00
Matthew Tretter
e5b15d09bd
Remove _generateimage utility.
2013-01-09 00:28:29 -05:00
Matthew Tretter
43a1f49498
New thumbnail tag syntax! Closes #177
2013-01-09 00:25:08 -05:00
Matthew Tretter
11d511f9cc
Extract util for parsing common bits.
...
In preparation for new thumbnail and placeholder tag syntaxes (#177 and
#176 ) which share some (but not all) syntax with the generateimage tag.
2013-01-08 22:42:42 -05:00
Matthew Tretter
658bb22c78
Special case serialization of ImageFieldFiles
...
Closes #168
2013-01-08 21:52:56 -05:00
Matthew Tretter
c2dedaa2b8
Use file name; not file, which can't be pickled
2013-01-08 20:57:19 -05:00
Matthew Tretter
faee0fa537
Correct typo
2013-01-08 20:36:17 -05:00
Matthew Tretter
d80f2f26a9
"source" now refers to the file itself
2012-12-11 22:53:13 -05:00
Matthew Tretter
184c13dd4e
More source_group renaming
2012-12-11 22:41:10 -05:00
Matthew Tretter
52fb4e24be
Add thumbnail templatetag
...
Finally!
2012-12-07 00:42:11 -05:00
Matthew Tretter
30e40b4916
Add TODO for unregistration
2012-12-07 00:17:35 -05:00
Matthew Tretter
c69c2d087e
Create Thumbnail spec; closes #175
2012-12-06 23:48:09 -05:00
Matthew Tretter
1fb1d83c56
Add Thumbnail processor
2012-12-06 23:22:02 -05:00
Matthew Tretter
8c80ba3b4f
GeneratedImageCacheFile stores file manipulation attributes
...
Everything for dealing with files should be part of
GeneratedImageCacheFile--not the generator. The fact that
GeneratedImageCacheFile can get this information (storage, filename,
etc.) is a convenience so that the user only has to define one class
(the generator) to fully specify their functionality, but handling the
cache file is not part of the core responsibility of the generator.
This is also the reason for the renaming of `get_filename` and `storage`
to `cache_file_name` and `cache_file_storage`: the generator is just as
useful for those who want to generate persistent files. But the original
attribute names didn't indicate that they were used only for cache
files. The new ones do, and don't preclude the addition of other
versions that would be used by another `File` subclass for specifying
file names or storage classes.
2012-12-06 19:54:26 -05:00
Matthew Tretter
12307c97aa
Use state--not constructor args--to recreate dynamic specs
...
Previously, we were relying on `__init__`'s arguments to recreate specs.
Now we do it the proper way, using the dict returned by `__getstate__`
(which may or may not include those arguments).
2012-12-05 23:51:30 -05:00
Matthew Tretter
042bdcefb6
Simplify dynamic spec definitions
...
Use a closure instead of an attribute to store the class attrs.
2012-12-05 23:38:10 -05:00