You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
# -*- coding: utf-8 -*- |
|
from __future__ import unicode_literals |
|
# Erik Stein <code@classlibrary.net>, 2016 |
|
|
|
|
|
from imagekit.models.fields.utils import ImageSpecFileDescriptor |
|
from imagekit.models.fields import ImageSpecField |
|
from ..files.storage import MediaAssetFileSystemStorage |
|
from ...cachefiles import MediaAssetCacheFile |
|
|
|
|
|
class MediaAssetCacheFileDescriptor(ImageSpecFileDescriptor): |
|
""" |
|
- Manages manually overriden cached files |
|
- knows to handle ConversionNotApplicable exceptions and |
|
provides svg-icons for this case |
|
|
|
""" |
|
|
|
def __init__(self, field, attname, source_field_name): |
|
self.attname = attname |
|
self.field = field |
|
self.source_field_name = source_field_name |
|
|
|
def __get__(self, instance, owner): |
|
if instance is None: |
|
return self.field |
|
else: |
|
source = getattr(instance, self.source_field_name) |
|
spec = self.field.get_spec(source=source) |
|
file = MediaAssetCacheFile(spec) |
|
instance.__dict__[self.attname] = file |
|
return file |
|
|
|
def __set__(self, instance, value): |
|
instance.__dict__[self.attname] = value |
|
|
|
|
|
class MediaAssetFileField(ImageSpecField): |
|
""" |
|
- default storage |
|
""" |
|
|
|
def __init__(self, storage=MediaAssetFileSystemStorage): |
|
pass |
|
|
|
|
|
|