Merge branch 'cover-migration-s3' into 'develop'
Fix #976: fix cover attachment migration under S3 Closes #976 See merge request funkwhale/funkwhale!961
This commit is contained in:
commit
85dafcb699
|
@ -13,17 +13,24 @@ def create_attachments(apps, schema_editor):
|
|||
if path.lower().endswith('.png'):
|
||||
return "image/png"
|
||||
return "image/jpeg"
|
||||
|
||||
for album in Album.objects.filter(attachment_cover=None).exclude(cover="").exclude(cover=None):
|
||||
try:
|
||||
album_attachment_mapping[album] = Attachment(
|
||||
file=album.cover,
|
||||
size=album.cover.size,
|
||||
mimetype=get_mimetype(album.cover.path),
|
||||
)
|
||||
except FileNotFoundError:
|
||||
print('Skipping missing cover file {}'.format(album.cover.path))
|
||||
|
||||
qs = 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:
|
||||
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(
|
||||
file=album.cover,
|
||||
size=None,
|
||||
mimetype=get_mimetype(album.cover.name),
|
||||
)
|
||||
print('Commiting changes…')
|
||||
Attachment.objects.bulk_create(album_attachment_mapping.values(), batch_size=2000)
|
||||
# map each attachment to the corresponding album
|
||||
# and bulk save
|
||||
|
|
Loading…
Reference in New Issue