Work in progress: django-imagekit but for all types of media files (movies, PDFs etc.). + private media
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.

48 lines
1.3 KiB

9 years ago
# -*- 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