Skip to content
Snippets Groups Projects
Verified Commit ad7274ff authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Fix #976: fix cover attachment migration under S3

parent 73e72113
Branches
Tags
No related merge requests found
...@@ -13,17 +13,24 @@ def create_attachments(apps, schema_editor): ...@@ -13,17 +13,24 @@ def create_attachments(apps, schema_editor):
if path.lower().endswith('.png'): if path.lower().endswith('.png'):
return "image/png" return "image/png"
return "image/jpeg" return "image/jpeg"
qs = Album.objects.filter(attachment_cover=None).exclude(cover="").exclude(cover=None)
for album in Album.objects.filter(attachment_cover=None).exclude(cover="").exclude(cover=None): total = qs.count()
print('Creating attachments for {} album covers, this may take a while…'.format(total))
from django.core.files.storage import FileSystemStorage
for i, album in enumerate(qs):
if isinstance(album.cover.storage._wrapped, FileSystemStorage):
try: try:
size = album.cover.size
except FileNotFoundError:
# can occur when file isn't found on disk or S3
print(" Warning: cover file wasn't found in storage: {}".format(e.__class__))
size = None
album_attachment_mapping[album] = Attachment( album_attachment_mapping[album] = Attachment(
file=album.cover, file=album.cover,
size=album.cover.size, size=None,
mimetype=get_mimetype(album.cover.path), mimetype=get_mimetype(album.cover.name),
) )
except FileNotFoundError: print('Commiting changes…')
print('Skipping missing cover file {}'.format(album.cover.path))
Attachment.objects.bulk_create(album_attachment_mapping.values(), batch_size=2000) Attachment.objects.bulk_create(album_attachment_mapping.values(), batch_size=2000)
# map each attachment to the corresponding album # map each attachment to the corresponding album
# and bulk save # and bulk save
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment