#
from django.conf import settings
from django.core.files import File
+from django.core.files.storage import FileSystemStorage
from django.db import models
from django.db.models.fields.files import FieldFile
from catalogue import app_settings
book = fieldfile.instance
- html_output = self.transform(book.wldocument(), fieldfile)
+ html_output = self.transform(book.wldocument(parse_dublincore=False), fieldfile)
# Delete old fragments, create from scratch if necessary.
book.fragments.all().delete()
@staticmethod
def transform(wldoc, fieldfile):
- return wldoc.as_html(options={'gallery': "'%s'" % gallery_url(wldoc.book_info.url.slug)})
+ # ugly, but we can't use wldoc.book_info here
+ from librarian import DCNS
+ url_elem = wldoc.edoc.getroot().find('.//' + DCNS('identifier.url'))
+ if url_elem is None:
+ gallery = ''
+ else:
+ gallery = gallery_url(slug=url_elem.text.rsplit('/', 1)[1])
+ return wldoc.as_html(options={'gallery': "'%s'" % gallery})
@BuildEbook.register('cover_thumb')
return WLCover(wldoc.book_info, height=193).output_file()
+# not used, but needed for migrations
class OverwritingFieldFile(FieldFile):
"""
Deletes the old file before saving the new one.
class OverwritingFileField(models.FileField):
attr_class = OverwritingFieldFile
+
+
+class OverwriteStorage(FileSystemStorage):
+
+ def get_available_name(self, name, max_length=None):
+ self.delete(name)
+ return name