forked from openlp/openlp
Merge branch 'fix-image-db-upgrade' into 'master'
Fix image db upgrade Closes #585, #649, and #607 See merge request openlp/openlp!230
This commit is contained in:
commit
e2a65a3264
@ -575,6 +575,7 @@ class ImageMediaItem(MediaManagerItem):
|
||||
service_item.theme = -1
|
||||
missing_items_file_names = []
|
||||
images = []
|
||||
existing_images = []
|
||||
# Expand groups to images
|
||||
for bitem in items:
|
||||
if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageGroups) or bitem.data(0, QtCore.Qt.UserRole) is None:
|
||||
@ -590,8 +591,10 @@ class ImageMediaItem(MediaManagerItem):
|
||||
for image in images:
|
||||
if not image.file_path.exists():
|
||||
missing_items_file_names.append(str(image.file_path))
|
||||
else:
|
||||
existing_images.append(image)
|
||||
# We cannot continue, as all images do not exist.
|
||||
if not images:
|
||||
if not existing_images:
|
||||
if not remote:
|
||||
critical_error_message_box(
|
||||
translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
|
||||
@ -607,7 +610,7 @@ class ImageMediaItem(MediaManagerItem):
|
||||
QtWidgets.QMessageBox.No:
|
||||
return False
|
||||
# Continue with the existing images.
|
||||
for image in images:
|
||||
for image in existing_images:
|
||||
name = image.file_path.name
|
||||
thumbnail_path = self.generate_thumbnail_path(image)
|
||||
service_item.add_from_image(image.file_path, name, thumbnail_path)
|
||||
|
@ -85,7 +85,12 @@ def upgrade_3(session, metadata):
|
||||
thumb_path = AppLocation.get_data_path() / 'images' / 'thumbnails'
|
||||
for row in results.fetchall():
|
||||
file_path = json.loads(row.file_path, cls=OpenLPJSONDecoder)
|
||||
hash = sha256_file_hash(file_path)
|
||||
if file_path.exists():
|
||||
hash = sha256_file_hash(file_path)
|
||||
else:
|
||||
log.warning('{image} does not exists, so no sha256 hash added.'.format(image=str(file_path)))
|
||||
# set a fake "hash" to allow for the upgrade to go through. The image will be marked as invalid
|
||||
hash = 'NONE'
|
||||
sql = 'UPDATE image_filenames SET file_hash = \'{hash}\' WHERE id = {id}'.format(hash=hash, id=row.id)
|
||||
conn.execute(sql)
|
||||
# rename thumbnail to use file hash
|
||||
|
@ -234,7 +234,10 @@ class PresentationMediaItem(MediaManagerItem):
|
||||
self.application.set_busy_cursor()
|
||||
self.main_window.display_progress_bar(len(row_list))
|
||||
for item in items:
|
||||
self.clean_up_thumbnails(item.data(QtCore.Qt.UserRole))
|
||||
file_path = item.data(QtCore.Qt.UserRole)
|
||||
# cleaning thumbnails depends on being able to calculate sha256 hash of the actual file
|
||||
if file_path.exists():
|
||||
self.clean_up_thumbnails(file_path)
|
||||
self.main_window.increment_progress_bar()
|
||||
self.main_window.finished_progress_bar()
|
||||
for row in row_list:
|
||||
|
@ -26,7 +26,7 @@ import pytest
|
||||
from pathlib import Path
|
||||
from unittest.mock import Mock, MagicMock, patch
|
||||
|
||||
from openlp.core.common import ThemeLevel
|
||||
from openlp.core.common import ThemeLevel, is_win
|
||||
from openlp.core.common.enum import ServiceItemType
|
||||
from openlp.core.common.registry import Registry
|
||||
from openlp.core.lib.formattingtags import FormattingTags
|
||||
@ -563,16 +563,21 @@ def test_to_dict_text_item(state_media, settings, service_item_env):
|
||||
service_item.add_icon = MagicMock()
|
||||
FormattingTags.load_tags()
|
||||
line = convert_file_service_item(TEST_PATH, 'serviceitem-song-linked-audio.osj')
|
||||
service_item.set_from_service(line, Path('/test/'))
|
||||
if is_win():
|
||||
fake_path = Path('c:\\test\\')
|
||||
else:
|
||||
fake_path = Path('/test/')
|
||||
service_item.set_from_service(line, fake_path)
|
||||
|
||||
# WHEN: to_dict() is called
|
||||
result = service_item.to_dict()
|
||||
|
||||
# THEN: The correct dictionary should be returned
|
||||
expected_fake_path = str(fake_path / 'amazing_grace.mp3')
|
||||
expected_dict = {
|
||||
|
||||
'audit': ['Amazing Grace', ['John Newton'], '', ''],
|
||||
'backgroundAudio': ['/test/amazing_grace.mp3'],
|
||||
'backgroundAudio': [expected_fake_path],
|
||||
'capabilities': [2, 1, 5, 8, 9, 13, 15],
|
||||
'footer': ['Amazing Grace', 'Written by: John Newton'],
|
||||
'fromPlugin': False,
|
||||
|
Loading…
Reference in New Issue
Block a user